{"openapi":"3.1.0","info":{"title":"Authicall API","version":"1.0.0","description":"Auth0-shaped OpenID Connect authorization server and product Management API. HTTPS public hosts only — localhost and private networks are rejected."},"servers":[{"url":"https://authicall.com"}],"tags":[{"name":"OIDC","description":"OpenID Connect / OAuth 2.1"},{"name":"Management","description":"Product Management API (client credentials)"}],"paths":{"/.well-known/openid-configuration":{"get":{"tags":["OIDC"],"summary":"OpenID Provider discovery","responses":{"200":{"description":"Discovery document"}}}},"/.well-known/jwks.json":{"get":{"tags":["OIDC"],"summary":"JSON Web Key Set","responses":{"200":{"description":"Public signing keys"}}}},"/authorize":{"get":{"tags":["OIDC"],"summary":"Authorization Code + PKCE","parameters":[{"name":"client_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"redirect_uri","in":"query","required":true,"schema":{"type":"string","format":"uri"}},{"name":"response_type","in":"query","required":true,"schema":{"type":"string","enum":["code"]}},{"name":"scope","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}},{"name":"code_challenge","in":"query","required":true,"schema":{"type":"string"}},{"name":"code_challenge_method","in":"query","required":true,"schema":{"type":"string","enum":["S256"]}},{"name":"nonce","in":"query","schema":{"type":"string"}},{"name":"login_hint","in":"query","schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to Universal Login or the product callback"}}}},"/oauth/token":{"post":{"tags":["OIDC"],"summary":"Token endpoint (client_secret_post)","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"grant_type":{"type":"string","enum":["authorization_code","refresh_token"]},"client_id":{"type":"string"},"client_secret":{"type":"string"},"code":{"type":"string"},"redirect_uri":{"type":"string"},"code_verifier":{"type":"string"},"refresh_token":{"type":"string"}}}}}},"responses":{"200":{"description":"access_token, id_token, refresh_token"}}}},"/userinfo":{"get":{"tags":["OIDC"],"summary":"UserInfo","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"OIDC claims including namespaced workspace and product"}}}},"/v2/logout":{"get":{"tags":["OIDC"],"summary":"RP-initiated logout (Auth0 returnTo alias supported)","parameters":[{"name":"client_id","in":"query","schema":{"type":"string"}},{"name":"returnTo","in":"query","schema":{"type":"string","format":"uri"}},{"name":"post_logout_redirect_uri","in":"query","schema":{"type":"string","format":"uri"}}],"responses":{"302":{"description":"Session ended"}}}},"/oauth/revoke":{"post":{"tags":["OIDC"],"summary":"Revoke a token"}},"/oauth/introspect":{"post":{"tags":["OIDC"],"summary":"Introspect a token"}},"/api/v2/users":{"get":{"tags":["Management"],"summary":"Look up a user by email (email query required)","security":[{"productBasic":[]},{"productHeaders":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","format":"email"}}],"responses":{"200":{"description":"Array of matching users","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","properties":{"user_id":{"type":"string","example":"auth0|clx…"},"sub":{"type":"string"},"email":{"type":"string","format":"email"},"email_verified":{"type":"boolean"},"name":{"type":"string"},"nickname":{"type":"string"},"picture":{"type":"string"},"identities":{"type":"array","items":{"type":"object"}},"user_metadata":{"type":"object"},"app_metadata":{"type":"object"}}}}}}},"400":{"description":"Missing email","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}}}}},"post":{"tags":["Management"],"summary":"Provision a user by email. Passwords are not accepted.","security":[{"productBasic":[]},{"productHeaders":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email"},"name":{"type":"string"},"email_verified":{"type":"boolean"},"user_metadata":{"type":"object"},"app_metadata":{"type":"object"}}}}}},"responses":{"200":{"description":"Existing user","content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string","example":"auth0|clx…"},"sub":{"type":"string"},"email":{"type":"string","format":"email"},"email_verified":{"type":"boolean"},"name":{"type":"string"},"nickname":{"type":"string"},"picture":{"type":"string"},"identities":{"type":"array","items":{"type":"object"}},"user_metadata":{"type":"object"},"app_metadata":{"type":"object"}}}}}},"201":{"description":"Created user","content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string","example":"auth0|clx…"},"sub":{"type":"string"},"email":{"type":"string","format":"email"},"email_verified":{"type":"boolean"},"name":{"type":"string"},"nickname":{"type":"string"},"picture":{"type":"string"},"identities":{"type":"array","items":{"type":"object"}},"user_metadata":{"type":"object"},"app_metadata":{"type":"object"}}}}}},"400":{"description":"Bad request","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}}}}}},"/api/v2/users/import":{"post":{"tags":["Management"],"summary":"Bulk import users (email only, no passwords)","security":[{"productBasic":[]},{"productHeaders":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["users"],"properties":{"users":{"type":"array","items":{"type":"object","required":["email"],"properties":{"email":{"type":"string"},"name":{"type":"string"},"email_verified":{"type":"boolean"}}}}}}}}},"responses":{"200":{"description":"Import summary"}}}},"/api/v2/users-by-email":{"get":{"tags":["Management"],"summary":"Auth0-compatible email lookup","security":[{"productBasic":[]},{"productHeaders":[]}],"parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string","format":"email"}}],"responses":{"200":{"description":"Array of users"}}}},"/api/v2/users/{id}":{"get":{"tags":["Management"],"summary":"Get a user by Auth0 user_id","security":[{"productBasic":[]},{"productHeaders":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"User","content":{"application/json":{"schema":{"type":"object","properties":{"user_id":{"type":"string","example":"auth0|clx…"},"sub":{"type":"string"},"email":{"type":"string","format":"email"},"email_verified":{"type":"boolean"},"name":{"type":"string"},"nickname":{"type":"string"},"picture":{"type":"string"},"identities":{"type":"array","items":{"type":"object"}},"user_metadata":{"type":"object"},"app_metadata":{"type":"object"}}}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"type":"object","properties":{"statusCode":{"type":"integer"},"error":{"type":"string"},"message":{"type":"string"}}}}}}}}},"/api/v2/workspaces":{"get":{"tags":["Management"],"summary":"The calling product's application only","security":[{"productBasic":[]},{"productHeaders":[]}],"responses":{"200":{"description":"Array with the caller's workspace"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"},"productBasic":{"type":"http","scheme":"basic","description":"client_id:client_secret"},"productHeaders":{"type":"apiKey","in":"header","name":"X-Client-Id","description":"Also send X-Client-Secret. Query-string and body secrets are rejected."}}}}