{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/ArcadeSdkPredefinedProfiles",
  "definitions": {
    "ArcadeSdkPredefinedProfiles": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/BaseSdkPredefinedProfile<ArcadeProfileId,ArcadeBundleType>"
      }
    },
    "BaseSdkPredefinedProfile<ArcadeProfileId,ArcadeBundleType>": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Profile name for UI"
        },
        "id": {
          "$ref": "#/definitions/ArcadeProfileId",
          "description": "Profile id for docs"
        },
        "bundles": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ArcadeBundleType"
          },
          "description": "Function bundles enabled for this profile"
        },
        "variables": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SdkVariable"
          },
          "description": "Variable describing name, type, and providing description"
        }
      },
      "required": [
        "name",
        "id",
        "bundles",
        "variables"
      ],
      "additionalProperties": false,
      "description": "Describes a profile"
    },
    "ArcadeProfileId": {
      "type": "string",
      "enum": [
        "aggregate-field",
        "alias",
        "attribute-rule-calculation",
        "attribute-rule-constraint",
        "attribute-rule-validation",
        "dashboard-data",
        "dashboard-indicator-formatting",
        "dashboard-list-formatting",
        "dashboard-table-formatting",
        "data-pipelines",
        "dictionary-renderer",
        "experience-builder-data",
        "experience-builder-list-item-widget-formatting",
        "experience-builder-widget-formatting",
        "feature-display-title",
        "feature-z",
        "field-calculation",
        "field-mapping",
        "form-attachment-filename-calculation",
        "form-calculation",
        "form-constraint",
        "geoanalytics",
        "geotrigger-notification",
        "labeling",
        "layout",
        "location-update-constraint",
        "measure-visualization",
        "minimalist",
        "model-builder",
        "popup-element-feature-reduction",
        "popup-element-imagery",
        "popup-element-voxel",
        "popup-element",
        "popup-feature-reduction",
        "popup-imagery",
        "popup-voxel",
        "popup",
        "quick-capture",
        "tasks",
        "velocity",
        "visualization"
      ],
      "description": "The list of supported profiles"
    },
    "ArcadeBundleType": {
      "type": "string",
      "enum": [
        "ai",
        "core",
        "data-access",
        "database",
        "geometry",
        "knowledge-graph",
        "portal-access",
        "track"
      ],
      "description": "Supported function bundles"
    },
    "SdkVariable": {
      "anyOf": [
        {
          "$ref": "#/definitions/SdkDictionaryVariable"
        },
        {
          "$ref": "#/definitions/SdkValueVariable"
        }
      ],
      "description": "Profile variable"
    },
    "SdkDictionaryVariable": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the variable."
        },
        "type": {
          "type": "string",
          "const": "dictionary",
          "description": "Type of the variable."
        },
        "description": {
          "type": "string",
          "description": "Description of the variable."
        },
        "properties": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/SdkVariable"
          }
        }
      },
      "required": [
        "name",
        "properties",
        "type"
      ],
      "additionalProperties": false,
      "description": "A dictionary variable"
    },
    "SdkValueVariable": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the variable."
        },
        "type": {
          "type": "string",
          "enum": [
            "array",
            "boolean",
            "dataCatalogDatastore",
            "date",
            "dateOnly",
            "feature",
            "featureSet",
            "featureSetCollection",
            "geometry",
            "knowledgeGraph",
            "number",
            "pixel",
            "text",
            "time",
            "voxel"
          ],
          "description": "Type of the variable."
        },
        "description": {
          "type": "string",
          "description": "Description of the variable."
        }
      },
      "required": [
        "name",
        "type"
      ],
      "additionalProperties": false,
      "description": "A variable that represents a simple type (boolean, number, feature, etc.)"
    }
  }
}