{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/customdomain-ai/json-schema/customdomain-ai-agent-client-registration-schema.json",
  "title": "AgentClientRegistration",
  "description": "RFC 7591 client metadata. Anything else a client sends (`client_uri`, `logo_uri`, `scope`, `contacts` and so on) is accepted and ignored.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/customdomain-ai-agents-api-openapi.yml#/components/schemas/AgentClientRegistration",
  "type": "object",
  "required": [
    "client_name",
    "redirect_uris"
  ],
  "properties": {
    "client_name": {
      "type": "string",
      "maxLength": 100,
      "description": "Shown to the person who approves the agent. At most 100 characters, with no control or invisible characters and no Latin letters mixed with look-alike letters from another alphabet. A name that claims a well known brand is refused unless every redirect host belongs to that brand or is a loopback address."
    },
    "redirect_uris": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "type": "string",
        "format": "uri",
        "maxLength": 2000
      },
      "description": "Where the authorization code may be sent. `https`, or `http` on a loopback host (`localhost`, `127.0.0.1`, `::1`) for a program on the person's own computer. No fragment and no user information. A redirect URI is matched exactly later, except for the port of a loopback one."
    },
    "grant_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional. When sent it must include `authorization_code`; other values are ignored. The client is registered for `authorization_code` and `refresh_token`."
    },
    "response_types": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional. When sent it must include `code`."
    },
    "token_endpoint_auth_method": {
      "type": "string",
      "description": "Ignored. Every agent client is a public client (`none`) and PKCE protects its code."
    }
  }
}