{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-cdn/json-schema/microsoft-azure-cdn-profile-schema.json",
  "title": "Profile",
  "description": "A profile is a logical grouping of endpoints that share the same settings.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_superseded/microsoft-azure-cdn-profiles-api-openapi.yml#/components/schemas/Profile",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/ProfileProperties",
      "description": "The JSON object that contains the properties required to create a profile.",
      "x-ms-client-flatten": true
    },
    "sku": {
      "$ref": "#/$defs/Sku",
      "description": "The pricing tier (defines Azure Front Door Standard or Premium or a CDN provider, feature list and rate) of the profile."
    },
    "kind": {
      "type": "string",
      "description": "Kind of the profile. Used by portal to differentiate traditional CDN profile and new AFD profile.",
      "readOnly": true
    },
    "identity": {
      "$ref": "../../../../../../common-types/resource-management/v6/managedidentity.json#/definitions/ManagedServiceIdentity",
      "description": "The managed service identities assigned to this resource."
    }
  },
  "required": [
    "sku"
  ],
  "allOf": [
    {
      "$ref": "../../../../../../common-types/resource-management/v6/types.json#/definitions/TrackedResource"
    }
  ],
  "$defs": {
    "ProfileLogScrubbing": {
      "type": "object",
      "description": "Defines rules that scrub sensitive fields in the Azure Front Door profile logs.",
      "properties": {
        "state": {
          "$ref": "#/$defs/ProfileScrubbingState",
          "description": "State of the log scrubbing config. Default value is Enabled."
        },
        "scrubbingRules": {
          "type": "array",
          "description": "List of log scrubbing rules applied to the Azure Front Door profile logs.",
          "items": {
            "$ref": "#/$defs/ProfileScrubbingRules"
          },
          "x-ms-identifiers": []
        }
      }
    },
    "ProfileProperties": {
      "type": "object",
      "description": "The JSON object that contains the properties required to create a profile.",
      "properties": {
        "resourceState": {
          "$ref": "#/$defs/ProfileResourceState",
          "description": "Resource status of the profile.",
          "readOnly": true
        },
        "provisioningState": {
          "$ref": "#/$defs/ProfileProvisioningState",
          "description": "Provisioning status of the profile.",
          "readOnly": true
        },
        "extendedProperties": {
          "type": "object",
          "description": "Key-Value pair representing additional properties for profiles.",
          "additionalProperties": {
            "type": "string"
          },
          "readOnly": true
        },
        "frontDoorId": {
          "type": "string",
          "description": "The Id of the frontdoor.",
          "readOnly": true
        },
        "originResponseTimeoutSeconds": {
          "type": "integer",
          "format": "int32",
          "description": "Send and receive timeout on forwarding request to the origin. When timeout is reached, the request fails and returns.",
          "minimum": 16
        },
        "logScrubbing": {
          "$ref": "#/$defs/ProfileLogScrubbing",
          "description": "Defines rules that scrub sensitive fields in the Azure Front Door profile logs."
        }
      }
    },
    "ProfileProvisioningState": {
      "type": "string",
      "description": "Provisioning status of the profile.",
      "enum": [
        "Succeeded",
        "Failed",
        "Updating",
        "Deleting",
        "Creating"
      ],
      "x-ms-enum": {
        "name": "ProfileProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Succeeded",
            "value": "Succeeded"
          },
          {
            "name": "Failed",
            "value": "Failed"
          },
          {
            "name": "Updating",
            "value": "Updating"
          },
          {
            "name": "Deleting",
            "value": "Deleting"
          },
          {
            "name": "Creating",
            "value": "Creating"
          }
        ]
      }
    },
    "ProfileResourceState": {
      "type": "string",
      "description": "Resource status of the profile.",
      "enum": [
        "Creating",
        "Active",
        "Deleting",
        "Disabled",
        "Migrating",
        "Migrated",
        "PendingMigrationCommit",
        "CommittingMigration",
        "AbortingMigration"
      ],
      "x-ms-enum": {
        "name": "ProfileResourceState",
        "modelAsString": true,
        "values": [
          {
            "name": "Creating",
            "value": "Creating"
          },
          {
            "name": "Active",
            "value": "Active"
          },
          {
            "name": "Deleting",
            "value": "Deleting"
          },
          {
            "name": "Disabled",
            "value": "Disabled"
          },
          {
            "name": "Migrating",
            "value": "Migrating"
          },
          {
            "name": "Migrated",
            "value": "Migrated"
          },
          {
            "name": "PendingMigrationCommit",
            "value": "PendingMigrationCommit"
          },
          {
            "name": "CommittingMigration",
            "value": "CommittingMigration"
          },
          {
            "name": "AbortingMigration",
            "value": "AbortingMigration"
          }
        ]
      }
    },
    "ProfileScrubbingRules": {
      "type": "object",
      "description": "Defines the contents of the log scrubbing rules.",
      "properties": {
        "matchVariable": {
          "$ref": "#/$defs/ScrubbingRuleEntryMatchVariable",
          "description": "The variable to be scrubbed from the logs."
        },
        "selectorMatchOperator": {
          "$ref": "#/$defs/ScrubbingRuleEntryMatchOperator",
          "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to."
        },
        "selector": {
          "type": "string",
          "description": "When matchVariable is a collection, operator used to specify which elements in the collection this rule applies to."
        },
        "state": {
          "$ref": "#/$defs/ScrubbingRuleEntryState",
          "description": "Defines the state of a log scrubbing rule. Default value is enabled."
        }
      },
      "required": [
        "matchVariable",
        "selectorMatchOperator"
      ]
    },
    "ProfileScrubbingState": {
      "type": "string",
      "description": "State of the log scrubbing config. Default value is Enabled.",
      "enum": [
        "Enabled",
        "Disabled"
      ],
      "x-ms-enum": {
        "name": "ProfileScrubbingState",
        "modelAsString": true,
        "values": [
          {
            "name": "Enabled",
            "value": "Enabled"
          },
          {
            "name": "Disabled",
            "value": "Disabled"
          }
        ]
      }
    },
    "ScrubbingRuleEntryMatchOperator": {
      "type": "string",
      "description": "When matchVariable is a collection, operate on the selector to specify which elements in the collection this rule applies to.",
      "enum": [
        "EqualsAny"
      ],
      "x-ms-enum": {
        "name": "ScrubbingRuleEntryMatchOperator",
        "modelAsString": true,
        "values": [
          {
            "name": "EqualsAny",
            "value": "EqualsAny"
          }
        ]
      }
    },
    "ScrubbingRuleEntryMatchVariable": {
      "type": "string",
      "description": "The variable to be scrubbed from the logs.",
      "enum": [
        "RequestIPAddress",
        "RequestUri",
        "QueryStringArgNames"
      ],
      "x-ms-enum": {
        "name": "ScrubbingRuleEntryMatchVariable",
        "modelAsString": true,
        "values": [
          {
            "name": "RequestIPAddress",
            "value": "RequestIPAddress"
          },
          {
            "name": "RequestUri",
            "value": "RequestUri"
          },
          {
            "name": "QueryStringArgNames",
            "value": "QueryStringArgNames"
          }
        ]
      }
    },
    "ScrubbingRuleEntryState": {
      "type": "string",
      "description": "Defines the state of a log scrubbing rule. Default value is enabled.",
      "enum": [
        "Enabled",
        "Disabled"
      ],
      "x-ms-enum": {
        "name": "ScrubbingRuleEntryState",
        "modelAsString": true,
        "values": [
          {
            "name": "Enabled",
            "value": "Enabled"
          },
          {
            "name": "Disabled",
            "value": "Disabled"
          }
        ]
      }
    },
    "Sku": {
      "type": "object",
      "description": "Standard_Verizon = The SKU name for a Standard Verizon CDN profile.\nPremium_Verizon = The SKU name for a Premium Verizon CDN profile.\nCustom_Verizon = The SKU name for a Custom Verizon CDN profile.\nStandard_Akamai = The SKU name for an Akamai CDN profile.\nStandard_ChinaCdn = The SKU name for a China CDN profile for VOD, Web and download scenarios using GB based billing model.\nStandard_Microsoft = The SKU name for a Standard Microsoft CDN profile.\nStandard_AzureFrontDoor =  The SKU name for an Azure Front Door Standard profile.\nPremium_AzureFrontDoor = The SKU name for an Azure Front Door Premium profile.\nStandard_955BandWidth_ChinaCdn = The SKU name for a China CDN profile for VOD, Web and download scenarios using 95-5 peak bandwidth billing model.\nStandard_AvgBandWidth_ChinaCdn = The SKU name for a China CDN profile for VOD, Web and download scenarios using monthly average peak bandwidth billing model.\nStandardPlus_ChinaCdn = The SKU name for a China CDN profile for live-streaming using GB based billing model.\nStandardPlus_955BandWidth_ChinaCdn = The SKU name for a China CDN live-streaming profile using 95-5 peak bandwidth billing model.\nStandardPlus_AvgBandWidth_ChinaCdn = The SKU name for a China CDN live-streaming profile using monthly average peak bandwidth billing model.",
      "properties": {
        "name": {
          "$ref": "#/$defs/SkuName",
          "description": "Name of the pricing tier."
        }
      }
    },
    "SkuName": {
      "type": "string",
      "description": "Name of the pricing tier.",
      "enum": [
        "Standard_Verizon",
        "Premium_Verizon",
        "Custom_Verizon",
        "Standard_Akamai",
        "Standard_ChinaCdn",
        "Standard_Microsoft",
        "Standard_AzureFrontDoor",
        "Premium_AzureFrontDoor",
        "Standard_955BandWidth_ChinaCdn",
        "Standard_AvgBandWidth_ChinaCdn",
        "StandardPlus_ChinaCdn",
        "StandardPlus_955BandWidth_ChinaCdn",
        "StandardPlus_AvgBandWidth_ChinaCdn"
      ],
      "x-ms-enum": {
        "name": "SkuName",
        "modelAsString": true,
        "values": [
          {
            "name": "Standard_Verizon",
            "value": "Standard_Verizon"
          },
          {
            "name": "Premium_Verizon",
            "value": "Premium_Verizon"
          },
          {
            "name": "Custom_Verizon",
            "value": "Custom_Verizon"
          },
          {
            "name": "Standard_Akamai",
            "value": "Standard_Akamai"
          },
          {
            "name": "Standard_ChinaCdn",
            "value": "Standard_ChinaCdn"
          },
          {
            "name": "Standard_Microsoft",
            "value": "Standard_Microsoft"
          },
          {
            "name": "Standard_AzureFrontDoor",
            "value": "Standard_AzureFrontDoor"
          },
          {
            "name": "Premium_AzureFrontDoor",
            "value": "Premium_AzureFrontDoor"
          },
          {
            "name": "Standard_955BandWidth_ChinaCdn",
            "value": "Standard_955BandWidth_ChinaCdn"
          },
          {
            "name": "Standard_AvgBandWidth_ChinaCdn",
            "value": "Standard_AvgBandWidth_ChinaCdn"
          },
          {
            "name": "StandardPlus_ChinaCdn",
            "value": "StandardPlus_ChinaCdn"
          },
          {
            "name": "StandardPlus_955BandWidth_ChinaCdn",
            "value": "StandardPlus_955BandWidth_ChinaCdn"
          },
          {
            "name": "StandardPlus_AvgBandWidth_ChinaCdn",
            "value": "StandardPlus_AvgBandWidth_ChinaCdn"
          }
        ]
      }
    }
  }
}