{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/beyond-identity/json-schema/beyond-identity-scimschema-schema.json",
  "title": "Schema",
  "description": "Definition of a schema which indicates what attributes are supported. This resource corresponds to [RFC 7643 Section 7](https://www.rfc-editor.org/rfc/rfc7643#section-7).\n",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/beyond-identity-scim-api-openapi.yml#/components/schemas/SCIMSchema",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "ID of the schema defined as a URN.\n",
      "minLength": 1,
      "readOnly": true
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Name of the resource type.",
      "readOnly": true
    },
    "description": {
      "type": "string",
      "description": "Description of the resource type.",
      "readOnly": true
    },
    "attributes": {
      "type": "array",
      "description": "List of attributes supported for this schema.",
      "items": {
        "type": "object",
        "description": "The definition of an attribute.",
        "properties": {
          "name": {
            "type": "string",
            "description": "The attribute's name.",
            "readOnly": true
          },
          "type": {
            "type": "string",
            "description": "The attribute's type.",
            "enum": [
              "string",
              "boolean",
              "decimal",
              "integer",
              "dateTime",
              "reference",
              "complex"
            ],
            "readOnly": true
          },
          "subAttributes": {
            "type": "array",
            "description": "A list of sub-attributes. This is defined only for complex attributes. Each sub-attribute is defined with the same schema as an attribute.\n",
            "items": {
              "type": "object"
            },
            "readOnly": true
          },
          "multiValued": {
            "type": "boolean",
            "description": "Indicator for the attribute's plurality.",
            "readOnly": true
          },
          "description": {
            "type": "string",
            "description": "The attribute's human-readable description.",
            "readOnly": true
          },
          "required": {
            "type": "boolean",
            "description": "Indicator for whether the attribute is required.",
            "readOnly": true
          },
          "caseExact": {
            "type": "boolean",
            "description": "Indicator for whether the attribute is case-sensitive. This only applies for string attributes.\n",
            "readOnly": true
          },
          "mutability": {
            "type": "string",
            "description": "Definition of the attribute's mutability.",
            "enum": [
              "readOnly",
              "readWrite",
              "immutable",
              "writeOnly"
            ],
            "readOnly": true
          },
          "returned": {
            "type": "string",
            "description": "Definition of when the attribute is returned.",
            "enum": [
              "always",
              "never",
              "default",
              "request"
            ],
            "readOnly": true
          },
          "uniqueness": {
            "type": "string",
            "description": "Definition of the attribute's uniqueness.",
            "enum": [
              "none",
              "server",
              "global"
            ],
            "readOnly": true
          },
          "referenceTypes": {
            "type": "array",
            "description": "The list of types that may be referenced by this attribute. This only applies to attributes of type \"reference\".\n",
            "items": {
              "type": "string"
            },
            "readOnly": true
          }
        },
        "required": [
          "name",
          "type",
          "multiValued",
          "description",
          "required",
          "mutability",
          "returned"
        ]
      },
      "readOnly": true
    }
  },
  "required": [
    "id",
    "name",
    "description",
    "attributes"
  ]
}