{"openapi":"3.1.0","info":{"version":"1.13.0","title":"Core (Authz) API | Neobits","contact":{"email":"hello@neobits.no","url":"https://neobits.ai"},"description":"# Core (Authz)\n\nOpenAPI document for this API: https://docs.neobits.ai/openapi/core-authz.json\n\n## OAuth 2.0 Authorization Server\n\nThe Authentication API is a full-featured OAuth 2.0 server implementation that specializes in secure machine-to-machine (M2M) authentication using the client credentials back channel flow. This flow is optimized for server-side applications that need to securely communicate with APIs without user interaction.\n\n### Key Capabilities\n\nAs a complete OAuth 2.0 authorization server, the API provides:\n\n-   →\n    \n    Token Endpoint /core/v1/oauth2/token\n    \n    Issues access tokens to clients using the client credentials grant type, supporting secure back channel communication\n    \n-   →\n    \n    Token Introspection /core/v1/oauth2/introspect\n    \n    Validates tokens and returns metadata about their scope and validity\n    \n-   →\n    \n    Client Management\n    \n    Comprehensive endpoints for creating, retrieving, updating, and deleting OAuth client applications with configurable scopes and credentials\n    \n-   →\n    \n    Basic Authentication\n    \n    Alternative authentication method for simpler integration scenarios\n    \n-   →\n    \n    Standard Discovery\n    \n    OpenID Connect discovery endpoints for automated configuration\n    \n\n### Getting Started\n\nTo use the Authentication API, you'll need valid client credentials (client ID and client secret). To get your credentials, please send an email to [hello@neobits.no](mailto:hello@neobits.no) with details about your integration needs.\n\nFor OAuth 2.0 authentication, your server application should:\n\n1.  Request an access token via the back channel using the /core/v1/oauth2/token endpoint with your client credentials\n2.  Use that token in the Authorization header for subsequent API requests\n\n### Access Tokens\n\n-   Access tokens are RS256-signed JWTs. The expires\\_in field of the token response gives the lifetime in seconds.\n-   Each client has a max\\_session\\_duration. It defaults to 28800 seconds (8 hours), which is also the maximum.\n-   Send session\\_duration with the token request to get a shorter-lived token. The issued lifetime is the lower of the two values.\n-   The client credentials grant issues no refresh token. Request a new token before the current one expires. Expired tokens are rejected with 401.\n-   The resource parameter becomes the token's audience (for example [https://api.prod.neobits.ai/logic](https://api.prod.neobits.ai/logic)). A token is only accepted by the API it was issued for, and the resource must be registered for your client.\n-   Test and production are separate environments with their own issuers and signing keys. Tokens from one are not accepted by the other.\n\n### Scopes\n\nScopes are assigned to your client when it is created. A token carries only the scopes you request in the scope parameter (or the scopes of the requested role), so request every scope the endpoints you call need. Requesting a scope that is not assigned to your client fails with invalid\\_scope, and calling an endpoint without its scope returns 403.\n\nCore client management scopes:\n\n-   List clients: clients:read\n-   Get a client: client:read\n-   Create a client: client:write\n-   Delete a client: client:delete\n\nSee the [Fuse](https://docs.neobits.ai/api-reference/tag/fuse.md) and [Logic](https://docs.neobits.ai/api-reference/tag/logic.md) introductions for their scopes.\n\n### Signing Keys\n\nNeobits APIs validate the tokens they receive. If your own services also verify Neobits tokens, use the published keys:\n\n1.  Read jwks\\_uri and issuer from /core/.well-known/openid-configuration.\n2.  Fetch the key set from /core/.well-known/jwks.json and cache it.\n3.  Select the key whose kid matches the kid in the token header, and verify the RS256 signature.\n4.  Check that iss equals the issuer, aud contains your resource, and exp is in the future.\n\nIf a token has a kid that is not in your cached key set, fetch the key set again before rejecting the token. Never hard-code a key.\n\nThe key set currently contains one key. If that key is replaced, tokens signed with the previous key stop being accepted and Neobits APIs respond with 401. Request a new token when that happens. You can also check a token with the /core/v1/oauth2/introspect endpoint instead of verifying it yourself.\n\n## Endpoints\n\n- [OpenID Connect Configuration](https://docs.neobits.ai/api-reference/operation/getOpenIdConfiguration/method/get.md): `GET /core/.well-known/openid-configuration`\n- [JSON Web Key Set](https://docs.neobits.ai/api-reference/operation/getJwks/method/get.md): `GET /core/.well-known/jwks.json`\n- [Get an OAuth 2.0 token](https://docs.neobits.ai/api-reference/operation/createToken/method/post.md): `POST /core/v1/oauth2/token`\n- [Introspect an OAuth 2.0 token](https://docs.neobits.ai/api-reference/operation/introspectOauthToken/method/post.md): `POST /core/v1/oauth2/introspect`\n- [Introspect a Basic token](https://docs.neobits.ai/api-reference/operation/introspectBasicToken/method/post.md): `POST /core/v1/basic/introspect`\n- [List Clients](https://docs.neobits.ai/api-reference/operation/getClients/method/get.md): `GET /core/v1/clients`\n- [Create Client](https://docs.neobits.ai/api-reference/operation/createClient/method/post.md): `POST /core/v1/clients`\n- [Get Client](https://docs.neobits.ai/api-reference/operation/getClient/method/get.md): `GET /core/v1/clients/{client_id}`\n- [Delete Client](https://docs.neobits.ai/api-reference/operation/deleteClient/method/delete.md): `DELETE /core/v1/clients/{client_id}`"},"servers":[{"url":"https://api.test.neobits.ai"},{"url":"https://api.prod.neobits.ai"}],"tags":[{"name":"Core (Authz)"}],"paths":{"/core/.well-known/openid-configuration":{"get":{"summary":"OpenID Connect Configuration","description":"Retrieves the OpenID Connect configuration metadata","operationId":"getOpenIdConfiguration","tags":["Core (Authz)"],"security":[],"responses":{"200":{"description":"OpenID Connect configuration","headers":{"Cache-Control":{"description":"The document may be cached for one hour.","schema":{"type":"string","example":"public, max-age=3600"}}},"content":{"application/json":{"schema":{"type":"object","title":"OpenIdConfiguration","properties":{"issuer":{"type":"string","description":"The issuer identifier. Matches the `iss` claim of tokens issued by this host.","example":"https://api.prod.neobits.ai/core"},"jwks_uri":{"type":"string","description":"URL of the JSON Web Key Set","example":"https://api.prod.neobits.ai/core/.well-known/jwks.json"},"token_endpoint":{"type":"string","description":"URL of the OAuth 2.0 token endpoint","example":"https://api.prod.neobits.ai/core/v1/oauth2/token"},"token_endpoint_auth_methods_supported":{"type":"array","description":"Authentication methods supported by the token endpoint","items":{"type":"string"},"example":["client_secret_basic"]},"introspection_endpoint":{"type":"string","description":"URL of the OAuth 2.0 token introspection endpoint","example":"https://api.prod.neobits.ai/core/v1/oauth2/introspect"},"introspection_endpoint_auth_methods_supported":{"type":"array","description":"Authentication methods supported by the introspection endpoint","items":{"type":"string"},"example":["client_secret_basic"]},"response_types_supported":{"type":"array","description":"Response types supported. Empty, because this host has no authorization endpoint.","items":{"type":"string"},"example":[]},"grant_types_supported":{"type":"array","description":"Grant types supported by the Core (Authz) server","items":{"type":"string"},"example":["client_credentials"]},"scopes_supported":{"type":"array","description":"Scopes supported by the Core (Authz) server","items":{"type":"string"},"example":["client:read","client:write","client:update","client:delete","clients:read","inquiry:read","inquiry:write","inquiry:update","inquiry:delete","inquiries:read","person:read"]}}}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/.well-known/jwks.json":{"get":{"summary":"JSON Web Key Set","description":"Retrieves the JSON Web Key Set containing the public keys used to verify access tokens. Select the key whose `kid` matches the `kid` in the token header.","operationId":"getJwks","tags":["Core (Authz)"],"security":[],"responses":{"200":{"description":"JSON Web Key Set","content":{"application/json":{"schema":{"type":"object","title":"JwksResponse","properties":{"keys":{"type":"array","description":"Array of JWK objects","items":{"type":"object","title":"JsonWebKey","properties":{"kty":{"type":"string","description":"Key type","example":"RSA"},"kid":{"type":"string","description":"Key ID. Tokens carry the same value in the `kid` header.","example":"uayMam8yjZZR8G1B_6ilQW9IswtefxWWAizvh-WhbGg"},"n":{"type":"string","description":"RSA modulus"},"e":{"type":"string","description":"RSA exponent","example":"AQAB"}}}}}}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/v1/oauth2/token":{"post":{"summary":"Get an OAuth 2.0 token","description":"Issues access tokens using the client credentials grant type","operationId":"createToken","tags":["Core (Authz)"],"security":[{"basic":[]}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","title":"TokenRequest","required":["grant_type","resource"],"properties":{"grant_type":{"type":"string","description":"OAuth 2.0 grant type","enum":["client_credentials"]},"resource":{"type":"string","description":"Resource identifier to access (e.g., 'https://api.test.neobits.ai/fuse')"},"scope":{"type":"string","description":"Space-separated list of scopes for the token (cannot be combined with role). Each scope must be assigned to the client; otherwise the request fails with `invalid_scope`. The token carries only the scopes requested here, so request every scope the target endpoints need.","example":"environments:read execution:write"},"role":{"type":"string","description":"Role for the token (cannot be combined with scope). The role cannot be more privileged than the client's own role."},"session_duration":{"type":"integer","minimum":0,"maximum":28800,"description":"Requested token lifetime in seconds. The issued lifetime is the lower of this value and the client's `max_session_duration`. When omitted, the token lives for the client's `max_session_duration`.","example":3600}}}}}},"responses":{"200":{"description":"Access token response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"ScopeBasedToken","properties":{"access_token":{"type":"string","description":"The issued JWT access token"},"token_type":{"type":"string","description":"Type of token","enum":["Bearer"]},"expires_in":{"type":"integer","description":"Token lifetime in seconds. At most the client's `max_session_duration` (28800 seconds by default).","example":3600},"scope":{"type":"string","description":"Space-separated list of scopes associated with the token"}}},{"type":"object","title":"RoleBasedToken","properties":{"access_token":{"type":"string","description":"The issued JWT access token"},"token_type":{"type":"string","description":"Type of token","enum":["Bearer"]},"expires_in":{"type":"integer","description":"Token lifetime in seconds. At most the client's `max_session_duration` (28800 seconds by default).","example":3600},"role":{"type":"string","description":"Role associated with the token"}}}]},"examples":{"scopeBasedResponse":{"summary":"Response with scope","value":{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...","token_type":"Bearer","expires_in":3600,"scope":"read write"}},"roleBasedResponse":{"summary":"Response with role","value":{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...","token_type":"Bearer","expires_in":3600,"role":"admin"}}}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/v1/oauth2/introspect":{"post":{"summary":"Introspect an OAuth 2.0 token","description":"Determines the state and validity of an OAuth 2.0 token","operationId":"introspectOauthToken","tags":["Core (Authz)"],"security":[{"basic":[]}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","title":"OAuthTokenIntrospectRequest","required":["token"],"properties":{"token":{"type":"string","description":"The token to introspect"},"token_type_hint":{"type":"string","description":"Optional hint about the token type. Accepted and ignored (RFC 7662 §2.1)"}}}}}},"responses":{"200":{"description":"Token introspection response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"ScopeBasedClient","properties":{"active":{"type":"boolean","description":"Whether the client is active"},"scope":{"type":"string","description":"Scopes associated with the client"},"sub":{"type":"string","description":"Subject of the token"},"exp":{"type":"integer","description":"Timestamp when the token expires"},"account_id":{"type":"string","format":"uuid","description":"Account ID associated with the client"}}},{"type":"object","title":"RoleBasedClient","properties":{"active":{"type":"boolean","description":"Whether the client is active"},"role":{"type":"string","description":"Role associated with the client"},"sub":{"type":"string","description":"Subject of the token"},"exp":{"type":"integer","description":"Timestamp when the token expires"},"account_id":{"type":"string","format":"uuid","description":"Account ID associated with the client"}}},{"type":"object","title":"InactiveToken","description":"Unknown, invalid, expired or disabled credentials (RFC 7662 §2.2)","required":["active"],"properties":{"active":{"type":"boolean","enum":[false]}}}]}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/v1/basic/introspect":{"post":{"summary":"Introspect a Basic token","description":"Determines the state and validity of a Basic token","operationId":"introspectBasicToken","tags":["Core (Authz)"],"security":[{"basic":[]}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","title":"BasicTokenIntrospectRequest","required":["token"],"properties":{"token":{"type":"string","description":"The Basic token to introspect"},"token_type_hint":{"type":"string","description":"Optional hint about the token type. Accepted and ignored (RFC 7662 §2.1)"}}}}}},"responses":{"200":{"description":"Token introspection response","content":{"application/json":{"schema":{"oneOf":[{"type":"object","title":"ScopeBasedClient","properties":{"active":{"type":"boolean","description":"Whether the client is active"},"scope":{"type":"string","description":"Scopes associated with the client"},"sub":{"type":"string","description":"Subject of the token"},"account_id":{"type":"string","format":"uuid","description":"Account ID associated with the client"}}},{"type":"object","title":"RoleBasedClient","properties":{"active":{"type":"boolean","description":"Whether the client is active"},"role":{"type":"string","description":"Role associated with the client"},"sub":{"type":"string","description":"Subject of the token"},"account_id":{"type":"string","format":"uuid","description":"Account ID associated with the client"}}},{"type":"object","title":"InactiveToken","description":"Unknown, invalid, expired or disabled credentials (RFC 7662 §2.2)","required":["active"],"properties":{"active":{"type":"boolean","enum":[false]}}}]}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/v1/clients":{"get":{"summary":"List Clients","description":"Retrieves all clients","operationId":"getClients","tags":["Core (Authz)"],"security":[{"bearer":[]}],"responses":{"200":{"description":"List of clients","content":{"application/json":{"schema":{"type":"object","title":"ClientsList","properties":{"page":{"type":"object","title":"PaginationInfo","properties":{"size":{"type":"integer","description":"Number of clients returned"},"total":{"type":"integer","description":"Total number of clients"}}},"data":{"type":"array","items":{"type":"object","title":"Client","properties":{"id":{"type":"string","format":"uuid","description":"Client ID"},"username":{"type":"string","description":"Client username"},"password":{"type":"string","description":"Client password"},"auth_methods":{"type":"array","items":{"type":"string","enum":["basic","oauth"]},"description":"Core (Authz) methods supported by the client"},"grant_types":{"type":"array","items":{"type":"string","enum":["client_credentials"]},"description":"Grant types supported by the client"},"subscription_id":{"type":"string","format":"uuid","description":"Subscription ID associated with the client"},"scope":{"type":"string","description":"Scopes associated with the client"},"role":{"type":"string","description":"Role associated with the client"},"max_session_duration":{"type":"integer","description":"Maximum lifetime in seconds of access tokens issued to the client","example":28800}}}}}}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}},"post":{"summary":"Create Client","description":"Creates a new client","operationId":"createClient","tags":["Core (Authz)"],"security":[{"bearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","title":"ClientRequest","required":["auth_methods","grant_types"],"properties":{"auth_methods":{"type":"array","items":{"type":"string","enum":["basic","oauth"]},"description":"Core (Authz) methods supported by the client"},"grant_types":{"type":"array","items":{"type":"string","enum":["client_credentials"]},"description":"Grant types supported by the client"},"scope":{"type":"string","description":"Space-separated list of scopes"},"role":{"type":"string","description":"Role for the client"},"max_session_duration":{"type":"integer","minimum":0,"maximum":28800,"default":28800,"description":"Maximum lifetime in seconds of access tokens issued to the client"}}}}}},"responses":{"201":{"description":"Client created","content":{"application/json":{"schema":{"type":"object","title":"Client","properties":{"id":{"type":"string","format":"uuid","description":"Client ID"},"username":{"type":"string","description":"Client username"},"password":{"type":"string","description":"Client password"},"auth_methods":{"type":"array","items":{"type":"string","enum":["basic","oauth"]},"description":"Core (Authz) methods supported by the client"},"grant_types":{"type":"array","items":{"type":"string","enum":["client_credentials"]},"description":"Grant types supported by the client"},"subscription_id":{"type":"string","format":"uuid","description":"Subscription ID associated with the client"},"scope":{"type":"string","description":"Scopes associated with the client"},"role":{"type":"string","description":"Role associated with the client"},"max_session_duration":{"type":"integer","description":"Maximum lifetime in seconds of access tokens issued to the client","example":28800}}}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}},"/core/v1/clients/{client_id}":{"get":{"summary":"Get Client","description":"Retrieves a specific client by ID","operationId":"getClient","tags":["Core (Authz)"],"security":[{"bearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The client ID"}],"responses":{"200":{"description":"Client details","content":{"application/json":{"schema":{"type":"object","title":"Client","properties":{"id":{"type":"string","format":"uuid","description":"Client ID"},"username":{"type":"string","description":"Client username"},"password":{"type":"string","description":"Client password, masked"},"auth_methods":{"type":"array","items":{"type":"string","enum":["basic","oauth"]},"description":"Core (Authz) methods supported by the client"},"grant_types":{"type":"array","items":{"type":"string","enum":["client_credentials"]},"description":"Grant types supported by the client"},"subscription_id":{"type":"string","format":"uuid","description":"Subscription ID associated with the client"},"scope":{"type":"string","description":"Scopes associated with the client"},"role":{"type":"string","description":"Role associated with the client"},"max_session_duration":{"type":"integer","description":"Maximum lifetime in seconds of access tokens issued to the client","example":28800}}}}}},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}},"delete":{"summary":"Delete Client","description":"Deletes a specific client","operationId":"deleteClient","tags":["Core (Authz)"],"security":[{"bearer":[]}],"parameters":[{"name":"client_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"},"description":"The client ID"}],"responses":{"204":{"description":"Client deleted successfully"},"400":{"description":"OAuth 2.0 Bad Request","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2BadRequestResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","invalid_scope"],"example":"invalid_request"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":400},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The request is missing a required parameter."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"401":{"description":"OAuth 2.0 Unauthorized","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2UnauthorizedResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_client"],"example":"invalid_client"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":401},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Client authentication failed."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"404":{"description":"OAuth 2.0 Not Found","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2NotFoundResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["invalid_request","not_found"],"example":"not_found"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":404},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The requested resource was not found."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"429":{"description":"OAuth 2.0 Too Many Requests. When the rate limit rejects a request, the response carries `Retry-After` and no `error_timestamp` or `X-Request-ID`, as the request never reached the API.","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"Retry-After":{"description":"Seconds to wait before retrying. Sent when the rate limit rejects a request.","schema":{"type":"integer","example":60}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TooManyRequestsResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["too_many_requests"],"example":"too_many_requests"},"error_code":{"type":"string","description":"Error code for programmatic handling, in the format HTTP_STATUS-SEQUENCE","example":"429-000"},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai/api-reference/errors"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"Too many requests. Please try again later."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"500":{"description":"OAuth 2.0 Internal Server Error","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2InternalServerErrorResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["server_error"],"example":"server_error"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":500},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server encountered an unexpected condition."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"503":{"description":"OAuth 2.0 Service Unavailable","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2ServiceUnavailableResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":503},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server is currently unable to handle the request."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}},"504":{"description":"OAuth 2.0 Gateway Timeout","headers":{"Content-Type":{"description":"The content type of the response.","example":"application/json; charset=utf-8","schema":{"type":"string","enum":["application/json; charset=utf-8"]}},"X-Request-ID":{"description":"UUID generated on each request. Provide this id to customer support if an error occurs.","schema":{"type":"string","format":"uuid","example":"0679c533-5061-496e-8dc5-df786f04a209"}}},"content":{"application/json":{"schema":{"title":"OAuth2TimeoutResponse","type":"object","properties":{"error":{"type":"string","description":"A single ASCII error code","enum":["temporarily_unavailable"],"example":"temporarily_unavailable"},"error_code":{"type":"integer","description":"Numeric error code for programmatic handling","example":504},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error","example":"https://docs.neobits.ai"},"error_description":{"type":"string","description":"Human-readable ASCII text providing additional information","example":"The authorization server did not receive a timely response."},"error_timestamp":{"type":"string","format":"date-time","description":"The timestamp when the error occurred","example":"2025-06-25T15:29:49.992Z"}},"required":["error"]}}}}}}}},"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer token authentication using OAuth 2.0 client credentials flow."},"basic":{"type":"http","scheme":"basic","description":"Basic authentication, base64 encoded username:password."}}}}