POST /oauth/register. Issuer: https://api.notifique.dev.
Login and consent live in the Notifique dashboard. Your app opens the authorize URL in the browser and handles the callback — you do not build consent UI.
Client types
PKCE is always required — even for confidential clients.
Recommended paths
- Fixed registration vs DCR — pre-register known apps; use DCR at runtime for MCP/CLI when redirect/port is unknown upfront.
- Remote vs local — HTTPS callback with server session vs loopback
http://127.0.0.1:<port>/callback.
Scopes
Declare the minimum at registration and authorize. See Scopes.Request encoding
Confidential clients use HTTP Basic (
client_id:client_secret) on token/revoke.
Generating PKCE and state
state and codeVerifier in the user session before redirect.
Local: keep in memory while the loopback server runs.
Pre-registered remote client
Fixed HTTPS redirect, e.g.https://example.com/oauth/callback. Register as confidential. Store client_secret securely — shown once.
Treat missing code, mismatched state, or error query params as failures.
Local client (loopback)
Public client, bind127.0.0.1 or [::1] — never 0.0.0.0.
Rotating refresh tokens
Each successful refresh returns a newrefresh_token. The old one stops working.
Call /v1 with the access token
JWT (~15 min, EdDSA). Optional offline validation via GET /.well-known/jwks.json.

