/api/oidc/registerPublicDynamic client registration
OAuth 2.0 Dynamic Client Registration (RFC 7591 §3) for MCP and other OAuth clients. Off by default: the allow_dynamic_client_registration server setting must be on (the discovery document advertises registration_endpoint only then). A valid request creates an ownerless client application (owner_type = dynamic-client-registration, manageable by platform administrators only) with its redirect URIs registered as explicit callback URLs and, for confidential clients, a generated client secret. Registrations are rate limited per IP; bodies over 128 KiB are refused with 413. RFC 7592 configuration management is not implemented. Responses carry Cache-Control: no-store and Access-Control-Allow-Origin: *.
post_api_oidc_registerOpenID Connect / OAuth 2.0Authentication & permissionsPublic
Anyone — no credentials required
- Accepted credentials
- None required
- Notes
- Open registration: no initial access token or other credential is required.
Request body
Required
jwks, jwks_uri and software_statement are not supported and refused with invalid_client_metadata.| Property | Type | Description |
|---|---|---|
| redirect_uris* | string[] | REQUIRED. Absolute URIs without a fragment: minItems: 1maxItems: 50 |
| client_name | string | Display name; derived from the first redirect URI when absent. |
| token_endpoint_auth_method | "none" | "client_secret_basic" | "client_secret_post" | Default |
| grant_types | "authorization_code" | "refresh_token"[] | Default |
| response_types | "code"[] | Default |
| client_uri | string (uri) | The client's home page. maxLength: 2048 |
| logo_uri | string (uri) | Logo to show on consent screens. maxLength: 2048 |
| tos_uri | string (uri) | Terms of service. maxLength: 2048 |
| policy_uri | string (uri) | Privacy policy. maxLength: 2048 |
| contacts | string[] | Ways to contact the people responsible for the client. maxItems: 20 |
| scope | string | Space-separated scopes the client intends to request (recorded, not enforced). maxLength: 1024 |
| software_id | string | maxLength: 255 |
| software_version | string | maxLength: 255 |
Responses
| Header | Type | Description |
|---|---|---|
| Cache-Control | string |
client_secret is returned once, only for confidential clients; client_secret_expires_at is 0 (secrets do not expire).| Property | Type | Description |
|---|---|---|
| client_id* | string | minLength: 1 |
| client_secret | string | minLength: 1 |
| client_id_issued_at* | integer | minimum: 0 |
| client_secret_expires_at | integer | minimum: 0 |
| redirect_uris* | string[] | minItems: 1 |
| client_name* | string | |
| token_endpoint_auth_method* | "none" | "client_secret_basic" | "client_secret_post" | |
| grant_types* | "authorization_code" | "refresh_token"[] | |
| response_types* | "code"[] | |
| client_uri | string | |
| logo_uri | string | |
| tos_uri | string | |
| policy_uri | string | |
| contacts | string[] | |
| scope | string | |
| software_id | string | |
| software_version | string |
Example request
curl -X POST 'https://auth.schemavaults.com/api/oidc/register' \
-H 'Content-Type: application/json' \
-d '{
"redirect_uris": [
"https://app.example.com/oauth/callback"
],
"client_name": "string",
"token_endpoint_auth_method": "none",
"grant_types": [
"authorization_code"
],
"response_types": [
"code"
],
"client_uri": "https://example.com",
"logo_uri": "https://example.com",
"tos_uri": "https://example.com",
"policy_uri": "https://example.com",
"contacts": [
"string"
],
"scope": "string",
"software_id": "string",
"software_version": "string"
}'