Authentication
Early access
The CLI generator is in early access. Reach out to get started.
Each generated CLI reads authentication credentials from the security schemes declared in your OpenAPI spec. Credentials can come from environment variables, CLI flags, files, or a combination of these through fallback chains.
Without a credential, the CLI still works — you can explore the command tree, view help, and use --dry-run.
Credential sources
The CLI supports several ways to supply credentials, configured at build time.
A typical fallback chain lets the CLI flag override the env var, which in turn overrides a file:
Supported auth schemes
The CLI supports every scheme type that OpenAPI’s securitySchemes defines:
OAuth flows
Declaring an oauth scheme under auth-schemes in generators.yml makes the CLI acquire tokens on its own instead of reading a pre-issued token from the environment. Three flows are supported through the type field:
The interactive flows are public-client only: they use PKCE rather than a client secret. They require CLI generator 0.29.0 or later.
Log in and out
Every generated CLI exposes an auth command group:
Tokens are stored in the OS keyring, refreshed automatically when they expire, and sent as Authorization: Bearer <token> on every request. Pass --no-browser to auth login to print the authorization URL instead of opening a browser, and --with-token to skip the flow and read a token from stdin.
Authorization code with PKCE
Omitting redirect-uri binds an OS-assigned loopback port at login (recommended, no port registration needed). To pin a port, set redirect-uri to a loopback URL, and list ports to add fallbacks tried in order when the primary port is busy:
The host must be 127.0.0.1 or localhost over http, the port is required, and the path is arbitrary. Register every redirect URI the CLI can produce, including each backup port, with the authorization server.
Device code
auth login prints a user code and verification URL, then polls the token endpoint until the user approves. redirect-uri and pkce are rejected for this flow.
Extra request parameters
Authorization servers that require additional literal parameters, such as an Auth0 audience, accept them through per-request maps.
The device-code flow uses device-authorization-parameters in place of authorization-parameters.
Auth strategies
When a spec declares multiple security schemes, the CLI composes them according to one of these strategies:
Operations that declare security: [] (an empty list) opt out of authentication entirely — no credentials are sent regardless of what’s configured.
Configure the any strategy
When an API accepts more than one credential under the any strategy, the CLI authenticates with whichever source is populated, using the first scheme that has a credential. Declaring the schemes requires two steps:
-
In your OpenAPI spec, define the schemes under
securitySchemesand list them as multiple auth schemes in thesecurityarray.openapi.yml -
In
generators.yml, define the same schemes underauth-schemesand compose them withapi.authset toany.generators.yml
The scheme names must match across both files.
A scheme that’s missing from the spec is ignored without warning, even when its environment variable is set. With both declared, set either variable and the command runs:
Help output
Every generated CLI includes a dynamically rendered Authentication: section in its --help output listing every scheme, the expected env var or flag, and whether a credential is detected.