{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/blackbaud/main/json-schema/blackbaud-consent-channel-configuration-read-collection-schema.json",
  "title": "ConsentChannelConfigurationReadCollection",
  "description": "The consent channel configurations.",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/blackbaud-consent-api-openapi.yml#/components/schemas/ConsentChannelConfigurationReadCollection",
  "required": [
    "limit",
    "offset"
  ],
  "type": "object",
  "properties": {
    "channel_configurations": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "$ref": "#/$defs/ConsentChannelConfigurationRead"
      },
      "description": "The list of consent channel configurations."
    },
    "count": {
      "type": "integer",
      "description": "The total number of items in the collection.",
      "format": "int32"
    },
    "offset": {
      "maximum": 2147483647,
      "minimum": 0,
      "type": "integer",
      "description": "The offset value used for pagination or positioning within a collection.",
      "format": "int32",
      "default": 0
    },
    "limit": {
      "maximum": 10000,
      "minimum": 1,
      "type": "integer",
      "description": "The limit representing the maximum number of items to retrieve or display.",
      "format": "int32",
      "default": 500
    },
    "continuation_token": {
      "type": [
        "string",
        "null"
      ],
      "description": "The continuation token used for pagination to retrieve the next set of results."
    }
  },
  "additionalProperties": false,
  "$defs": {
    "ConsentChannelCategoryRead": {
      "type": "object",
      "properties": {
        "id": {
          "type": [
            "string",
            "null"
          ],
          "description": "The consent channel category identifier"
        },
        "category_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "The category identifier"
        },
        "category": {
          "type": [
            "string",
            "null"
          ],
          "description": "The category name for the mapped category."
        },
        "inactive": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Flag indicating whether or not the consent channel category is currently inactive"
        },
        "solicit_code_assignments": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ConsentSolicitCodeAssignmentRead"
          },
          "description": "The list of solicit code assignment."
        }
      },
      "additionalProperties": false,
      "description": "Represents the consent channel category."
    },
    "ConsentChannelConfigurationRead": {
      "type": "object",
      "properties": {
        "channel": {
          "type": [
            "string",
            "null"
          ],
          "description": "The channel of consent setting."
        },
        "inactive": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "Flag indicating whether or not the consent channel is inactive."
        },
        "categories": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ConsentChannelCategoryRead"
          },
          "description": "The list of channel category."
        }
      },
      "additionalProperties": false,
      "description": "Represents the configured mappings between a consent channel and categories"
    },
    "ConsentSolicitCodeAssignmentRead": {
      "type": "object",
      "properties": {
        "solicit_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "The solicit code name for the solicit code assignment."
        },
        "response": {
          "enum": [
            "OptIn",
            "OptOut"
          ],
          "type": "string",
          "description": "The response of solicit opt in or opt out.<p>Members:</p><ul><li><i>OptIn</i></li><li><i>OptOut</i></li></ul>"
        },
        "add_remove": {
          "enum": [
            "Add",
            "Remove"
          ],
          "type": "string",
          "description": "The add remove solicit response.<p>Members:</p><ul><li><i>Add</i></li><li><i>Remove</i></li></ul>"
        }
      },
      "additionalProperties": false,
      "description": "Represents the consent solicit code assignment."
    }
  }
}