# Total.js 5 API guide by task

> Find the Total.js 5 API for routing, actions, storage, messaging and integrations.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: en
Content-SHA256: aecbccee658ac585644f027f210437bc8b284f99b0ce3dd199ee4bd88bd5a667
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

Use these references to choose the native Total.js 5 API for your task. The examples target total5@0.0.19.

## Native backend references

| Area | Reference and examples |
|---|---|
| Installation, directories and startup | [getting started](/en/docs/getting-started/), [project structure](/en/docs/project-structure/), [LOAD and NPMINSTALL](/en/total5/load-and-npminstall/), [application bundles](/en/total5/application-bundles/), [release/debug modes](/en/total5/release-mode-and-debugging/) |
| Global API and configuration | [globals](/en/docs/globals-total5/), [configuration keys](/en/docs/configuration-keys/), [configuration files](/en/total5/configuration-file/) |
| Routing and controller | [route syntax](/en/docs/route-syntax/), [controller API](/en/docs/controller-api/), [completion and conditional responses](/en/total5/controller-completion-and-cache/), [upload lifecycle and query links](/en/total5/upload-lifecycle-and-href/), [static cache invalidation](/en/total5/touch-static-cache/) |
| Actions and validation | [action reference](/en/docs/action-options/), [input types](/en/docs/input-types/), [enums and format boundaries](/en/total5/schema-enums-and-formats/), [numeric boundaries](/en/total5/numeric-schema-boundaries/), [hooks and admin guards](/en/total5/action-hooks-and-admin/), [transport options](/en/total5/action-transport-boundaries/), [audit](/en/total5/action-audit/) |
| Database queries | [DATA](/en/total5/data-api/), [introductory DB/NEWDB](/en/total5/query-builder-db/), [builder operations and driver contract](/en/total5/query-builder-contract/), [real SQLite CRUD and transactions](/en/total5/query-builder-sqlite/), [NoSQL](/en/total5/nosql-crud/), [file storage](/en/total5/filestorage/) |
| Messaging and platform protocols | [WebSockets](/en/total5/websocket-chat/), [TMS](/en/total5/tms/), [OPENCLIENT protocol fixture](/en/total5/openclient-protocol/), [real OpenLDAP fixture](/en/total5/ldap-openldap/) |
| Flow and executable components | [FlowStream](/en/total5/flowstream/), [component testing](/en/total5/flowstream-component-test/), [flow files and workers](/en/total5/flow-files-and-workers/), [native server components](/en/total5/native-components/) |
| Optional remote services | [API drivers](/en/total5/api-drivers/), [TotalAPI and Componentator local boundaries](/en/total5/remote-service-boundaries/) |
| Full application | [Taskboard reference](/en/docs/taskboard-reference/): sessions, CSRF, owner-scoped NoSQL CRUD and browser assertions; exported app has separate restart/revocation checks |

Additional existing recipes cover views/localization, email, encryption helpers, caching, file downloads, proxies, jobs, threads, HTTP clients, macros, image conversion, AI-model driver contracts and Python processes. Use the Total5 catalogue and per-page declared scope for their exact behavior. Python scripts, image converter programs and directory servers are separate environment requirements, not npm dependencies of the framework core.

## Which QueryBuilder?

The native DB/NEWDB API builds an options object for a registered driver. DATA is the singleton entry point for independent operations; DB creates a queue. Queue ordering is not a transaction. The SQLite recipe implements a bounded application-owned driver and explicit connection-owned transactions.

The optional [official querybuilderpg integration](https://github.com/totaljs/querybuilderpg) is a separate PostgreSQL package. Initialize a named connection with its connection string and pooling options, then use DATA. The application-owned SQLite driver is specific to SQLite.

## Behavior in total5@0.0.19

Use these version-specific behaviors when writing application code:

- Compact Int accepts fractions and Number2 does not round to two places; SmallInt bounds differ from the familiar SQL range.
- Compact JSON and IP labels are read as plain strings; use explicit native JSON Schema subtypes when you need those formats enforced.
- For action csrf/encrypt/compress metadata, use explicit CSRF middleware and test the actual transport.
- For LDAP, decide authentication from your own check of the bind result.
- For query links use QUERIFY with a copied query.
- For QueryBuilder column selection, use fields with an application allowlist.
