{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/faable-com/json-schema/faable-com-post-apis-apisid-request-schema.json",
  "title": "PostApisApisidRequest",
  "x-generated": "2026-11-07",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_ae-authored/faable-com-openapi-generated.yml#/components/schemas/PostApisApisidRequest",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Human-readable label shown in the dashboard and on consent screens."
    },
    "slug": {
      "type": "string",
      "description": "URL-safe identifier, derived from name if omitted. Unique per account."
    },
    "description": {
      "type": "string",
      "description": "Optional free-text description."
    },
    "permissions": {
      "type": "array",
      "description": "Array of { value, description? }."
    },
    "signing_alg": {
      "type": "string",
      "description": "JWT signing algorithm. Only RS256 is supported today."
    },
    "token_dialect": {
      "type": "string",
      "description": "access_token (standard) or access_token_authz (adds a permissions claim listing the granted scopes)."
    },
    "token_lifetime": {
      "type": "integer",
      "description": "Access token TTL in seconds."
    },
    "enforce_policies": {
      "type": "boolean",
      "description": "When true, requested scopes are intersected with the API’s permissions list."
    },
    "rbac": {
      "type": "boolean",
      "description": "When true, a token issued to a user carries only the requested permissions that the user’s account-level roles grant."
    },
    "allow_offline_access": {
      "type": "boolean",
      "description": "When true, clients can request offline_access and receive a refresh_token."
    },
    "skip_consent": {
      "type": "boolean",
      "description": "When true, first-party clients skip the consent prompt for this API."
    }
  }
}