{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-cdn/json-schema/microsoft-azure-cdn-afdorigin-group-update-parameters-schema.json",
  "title": "AFDOriginGroupUpdateParameters",
  "description": "AFDOrigin group properties needed for origin group creation or update.",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/_superseded/microsoft-azure-cdn-afdorigingroups-api-openapi.yml#/components/schemas/AFDOriginGroupUpdateParameters",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/AFDOriginGroupUpdatePropertiesParameters",
      "description": "The JSON object that contains the properties of the origin group.",
      "x-ms-client-flatten": true
    }
  },
  "$defs": {
    "AFDOriginGroupUpdatePropertiesParameters": {
      "type": "object",
      "description": "The JSON object that contains the properties of the origin group.",
      "properties": {
        "profileName": {
          "type": "string",
          "description": "The name of the profile which holds the origin group.",
          "readOnly": true
        },
        "loadBalancingSettings": {
          "$ref": "#/$defs/LoadBalancingSettingsParameters",
          "description": "Load balancing settings for a backend pool"
        },
        "healthProbeSettings": {
          "$ref": "#/$defs/HealthProbeParameters",
          "description": "Health probe settings to the origin that is used to determine the health of the origin."
        },
        "trafficRestorationTimeToHealedOrNewEndpointsInMinutes": {
          "type": "integer",
          "format": "int32",
          "description": "Time in minutes to shift the traffic to the endpoint gradually when an unhealthy endpoint comes healthy or a new endpoint is added. Default is 10 mins. This property is currently not supported.",
          "minimum": 0,
          "maximum": 50
        },
        "sessionAffinityState": {
          "$ref": "#/$defs/EnabledState",
          "description": "Whether to allow session affinity on this host. Valid options are 'Enabled' or 'Disabled'"
        },
        "authentication": {
          "$ref": "#/$defs/OriginAuthenticationProperties",
          "description": "Authentication settings for origin in origin group."
        }
      }
    },
    "EnabledState": {
      "type": "string",
      "description": "Whether to enable use of this rule. Permitted values are 'Enabled' or 'Disabled'",
      "enum": [
        "Enabled",
        "Disabled"
      ],
      "x-ms-enum": {
        "name": "EnabledState",
        "modelAsString": true,
        "values": [
          {
            "name": "Enabled",
            "value": "Enabled"
          },
          {
            "name": "Disabled",
            "value": "Disabled"
          }
        ]
      }
    },
    "HealthProbeParameters": {
      "type": "object",
      "description": "The JSON object that contains the properties to send health probes to origin.",
      "properties": {
        "probePath": {
          "type": "string",
          "description": "The path relative to the origin that is used to determine the health of the origin."
        },
        "probeRequestType": {
          "$ref": "#/$defs/HealthProbeRequestType",
          "description": "The type of health probe request that is made."
        },
        "probeProtocol": {
          "$ref": "#/$defs/ProbeProtocol",
          "description": "Protocol to use for health probe."
        },
        "probeIntervalInSeconds": {
          "type": "integer",
          "format": "int32",
          "description": "The number of seconds between health probes.Default is 240sec.",
          "minimum": 1,
          "maximum": 255
        }
      }
    },
    "HealthProbeRequestType": {
      "type": "string",
      "description": "The type of health probe request that is made.",
      "enum": [
        "NotSet",
        "GET",
        "HEAD"
      ],
      "x-ms-enum": {
        "name": "HealthProbeRequestType",
        "modelAsString": false
      }
    },
    "LoadBalancingSettingsParameters": {
      "type": "object",
      "description": "Round-Robin load balancing settings for a backend pool",
      "properties": {
        "sampleSize": {
          "type": "integer",
          "format": "int32",
          "description": "The number of samples to consider for load balancing decisions"
        },
        "successfulSamplesRequired": {
          "type": "integer",
          "format": "int32",
          "description": "The number of samples within the sample period that must succeed"
        },
        "additionalLatencyInMilliseconds": {
          "type": "integer",
          "format": "int32",
          "description": "The additional latency in milliseconds for probes to fall into the lowest latency bucket"
        }
      }
    },
    "OriginAuthenticationProperties": {
      "type": "object",
      "description": "The JSON object that contains the properties of the origin authentication settings.",
      "properties": {
        "type": {
          "$ref": "#/$defs/OriginAuthenticationType",
          "description": "The type of the authentication for the origin."
        },
        "userAssignedIdentity": {
          "$ref": "#/$defs/ResourceReference",
          "description": "The user assigned managed identity to use for the origin authentication if type is UserAssignedIdentity."
        },
        "scope": {
          "type": "string",
          "format": "uri",
          "description": "The scope used when requesting token from Microsoft Entra. For example, for Azure Blob Storage, scope could be \"https://storage.azure.com/.default\"."
        },
        "tokenDestinationHeader": {
          "$ref": "#/$defs/OriginAuthenticationTokenDestinationHeader",
          "description": "The HTTP request header where the origin authentication token will be placed when forwarding the request to the origin. If not specified, the service will use the `Authorization` header for backward compatibility."
        }
      }
    },
    "OriginAuthenticationTokenDestinationHeader": {
      "type": "string",
      "description": "The HTTP request header where the origin authentication token is placed when forwarding the request to the origin.",
      "enum": [
        "Authorization",
        "X-Azure-Authorization"
      ],
      "x-ms-enum": {
        "name": "OriginAuthenticationTokenDestinationHeader",
        "modelAsString": true,
        "values": [
          {
            "name": "Authorization",
            "value": "Authorization",
            "description": "Place the token in the standard `Authorization` request header (default behavior)."
          },
          {
            "name": "XAzureAuthorization",
            "value": "X-Azure-Authorization",
            "description": "Place the token in the `X-Azure-Authorization` request header to avoid conflicts with an existing `Authorization` header set by the client."
          }
        ]
      }
    },
    "OriginAuthenticationType": {
      "type": "string",
      "description": "The type of the authentication for the origin.",
      "enum": [
        "SystemAssignedIdentity",
        "UserAssignedIdentity"
      ],
      "x-ms-enum": {
        "name": "OriginAuthenticationType",
        "modelAsString": true,
        "values": [
          {
            "name": "SystemAssignedIdentity",
            "value": "SystemAssignedIdentity"
          },
          {
            "name": "UserAssignedIdentity",
            "value": "UserAssignedIdentity"
          }
        ]
      }
    },
    "ProbeProtocol": {
      "type": "string",
      "description": "Protocol to use for health probe.",
      "enum": [
        "NotSet",
        "Http",
        "Https"
      ],
      "x-ms-enum": {
        "name": "ProbeProtocol",
        "modelAsString": false
      }
    },
    "ResourceReference": {
      "type": "object",
      "description": "Reference to another resource.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Resource ID."
        }
      }
    }
  }
}