OAuth and OIDC
Token grants, userinfo, discovery, and authorization management.
Encryption
App public-key lookup for end-to-end encrypted apps.
Security
Hardening checklist for token handling, claim validation, and key safety.
Base URL
Use
api.aveid.net for API calls and aveid.net for sign-in pages, discovery, and JWKS.Request conventions
Request bodies are JSON, except multipart image uploads. The token endpoint accepts OAuthsnake_case field names and their camelCase equivalents.
Authentication by endpoint family
Public endpoints
Public endpoints
These need no credentials, or carry them in the request body:
GET /.well-known/openid-configuration— OIDC discovery metadataGET /.well-known/jwks.json— JWT verification keysGET /.well-known/webfinger— issuer discoveryGET /api/oauth/app/:clientId— public app metadataPOST /api/oauth/token— token grants; client credentials or PKCE verifier in the bodyGET /api/encryption/app-lookup— app public-key lookup
GET /api/oauth/userinfo requires Authorization: Bearer <access_token>.Ave session endpoints
Ave session endpoints
Ave’s own sign-in pages use these with the user’s Ave session. Apps do not call them directly:
POST /api/oauth/authorize— grant authorization and produce the callback URLGET /api/oauth/authorize/bootstrap/:clientId— app, identities, and existing authorization for the consent screenGET /api/oauth/authorizations— list the user’s app authorizationsGET /api/oauth/authorization/:clientId— one app’s authorization, including its wrapped keysDELETE /api/oauth/authorizations/:authId— disconnect an appPUT /api/oauth/authorization/:clientId/encryption-key— replace a wrapped symmetric app key during recovery
Account encryption keys
Account encryption keys
Each identity also has its own encryption keypair, separate from per-app keys. Ave’s sign-in pages manage it:
GET /api/encryption/public-key/:handle— public key lookupGET /api/encryption/keys/:identityId— read the authenticated identity’s wrapped private keyPOST /api/encryption/keys/:identityId— create the keypairPUT /api/encryption/keys/:identityId— replace the wrapped private key
Browser login sessions
Ave’s browser login sets an HttpOnly session cookie. Login responses contain identities and device details; they do not return asessionToken field.
Device approval starts with POST /api/login/request-approval. Keep both its requestId and requestToken in the requesting browser. Poll POST /api/login/request-status with those two fields. An approved response sets the cookie and delivers the encrypted key transfer once; use that response directly instead of fetching it again. Requests expire after five minutes and remain bound to the original identity if its handle changes.
Notifications carry request metadata or a status change. They never include the requester secret or the encrypted key transfer.
