Skip to main content
Most real tools need a credential. Omnia splits that into two halves on purpose: Keeping them apart means you can inspect a tool’s auth setup without exposing the secret, and rotate the secret without touching the shape.

Declaring

Each requirement declares exactly one of three shapes:

options are alternatives

The list is acceptable alternatives — satisfying any one entry is enough. That is how you say “either an API key or a bearer token”:
You may then fill only one of them. options must have at least one entry.

The typo guard

Every key in authTokens must be declared in httpSecurityOptions.options[].requirements. Otherwise:
Without that check the typo would save happily, never satisfy the real bookingKey requirement, and surface weeks later as an unexplained 401 from your own endpoint — with nothing in the logs naming which credential was missing. The reverse is not enforced: declaring two alternatives and filling one is intentional.

Inspecting

Values are never returned. A GET shows which slots are filled:
setCredentials exists so a UI can render •••••••• for a filled slot and an empty field for an unfilled one, without ever handling the secret.

Rotating

Send only the new value. Zero downtime — the change takes effect on the next call.
Clear every slot with "authTokens": null. The same null-clears behaviour applies to agentReaction, httpSecurityOptions, and timeout.

How values are handled

Credentials are encrypted at rest, decrypted only while a single call’s payload is being assembled, and redacted from logging. They are never included in an API response.
Client tools cannot carry credentials — they run in the browser, where the user can read anything the page can. If a secret is involved, it must be an HTTP tool.