{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/microsoft-azure-load-balancer/json-schema/microsoft-azure-load-balancer-frontend-ipconfiguration-schema.json",
  "title": "FrontendIPConfiguration",
  "description": "Frontend IP address of the load balancer.",
  "x-generated": "2026-11-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/microsoft-azure-load-balancer-load-balancers-api-openapi.yml#/components/schemas/FrontendIPConfiguration",
  "type": "object",
  "properties": {
    "properties": {
      "$ref": "#/$defs/FrontendIPConfigurationPropertiesFormat",
      "description": "Properties of the load balancer probe.",
      "x-ms-client-flatten": true
    },
    "etag": {
      "type": "string",
      "description": "A unique read-only string that changes whenever the resource is updated.",
      "readOnly": true
    },
    "zones": {
      "type": "array",
      "description": "A list of availability zones denoting the IP allocated for the resource needs to come from.",
      "items": {
        "type": "string"
      }
    }
  },
  "allOf": [
    {
      "$ref": "#/$defs/SubResourceModel"
    }
  ],
  "$defs": {
    "DdosFrontendIpConfigurationSettings": {
      "type": "object",
      "description": "DDoS protection settings for a frontend IP configuration.",
      "properties": {
        "ddosCustomPolicy": {
          "$ref": "#/$defs/SubResource",
          "description": "The reference to the DDoS Custom Policy resource."
        }
      }
    },
    "ExtendedLocation": {
      "type": "object",
      "description": "ExtendedLocation complex type.",
      "properties": {
        "name": {
          "type": "string",
          "description": "The name of the extended location."
        },
        "type": {
          "$ref": "#/$defs/ExtendedLocationTypes",
          "description": "The type of the extended location."
        }
      }
    },
    "FrontendIPConfigurationPropertiesFormat": {
      "type": "object",
      "description": "Properties of Frontend IP Configuration of the load balancer.",
      "properties": {
        "inboundNatRules": {
          "type": "array",
          "description": "An array of references to inbound rules that use this frontend IP.",
          "items": {
            "$ref": "#/$defs/SubResource"
          },
          "readOnly": true
        },
        "inboundNatPools": {
          "type": "array",
          "description": "An array of references to inbound pools that use this frontend IP.",
          "items": {
            "$ref": "#/$defs/SubResource"
          },
          "readOnly": true
        },
        "outboundRules": {
          "type": "array",
          "description": "An array of references to outbound rules that use this frontend IP.",
          "items": {
            "$ref": "#/$defs/SubResource"
          },
          "readOnly": true
        },
        "loadBalancingRules": {
          "type": "array",
          "description": "An array of references to load balancing rules that use this frontend IP.",
          "items": {
            "$ref": "#/$defs/SubResource"
          },
          "readOnly": true
        },
        "privateIPAddress": {
          "type": "string",
          "description": "The private IP address of the IP configuration."
        },
        "privateIPAllocationMethod": {
          "$ref": "#/$defs/IPAllocationMethod",
          "description": "The Private IP allocation method."
        },
        "privateIPAddressVersion": {
          "$ref": "#/$defs/IPVersion",
          "description": "Whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4."
        },
        "subnet": {
          "$ref": "#/$defs/Subnet",
          "description": "The reference to the subnet resource."
        },
        "publicIPAddress": {
          "$ref": "#/$defs/PublicIPAddress",
          "description": "The reference to the Public IP resource."
        },
        "publicIPPrefix": {
          "$ref": "#/$defs/SubResource",
          "description": "The reference to the Public IP Prefix resource."
        },
        "gatewayLoadBalancer": {
          "$ref": "#/$defs/SubResource",
          "description": "The reference to gateway load balancer frontend IP."
        },
        "provisioningState": {
          "$ref": "#/$defs/ProvisioningState",
          "description": "The provisioning state of the frontend IP configuration resource.",
          "readOnly": true
        },
        "ddosSettings": {
          "$ref": "#/$defs/DdosFrontendIpConfigurationSettings",
          "description": "The DDoS protection settings associated with the frontend IP configuration."
        },
        "enableConnectionTracking": {
          "type": "boolean",
          "description": "Enables UDP flow tracking for traffic associated with the frontend IP configuration. When enabled, packets belonging to the same UDP flow are consistently directed to the same backend instance. This setting applies to all associated load balancing rules and takes precedence over rule-level enableConnectionTracking settings."
        }
      }
    },
    "IPAllocationMethod": {
      "type": "string",
      "description": "IP address allocation method.",
      "enum": [
        "Static",
        "Dynamic"
      ],
      "x-ms-enum": {
        "name": "IPAllocationMethod",
        "modelAsString": true,
        "values": [
          {
            "name": "Static",
            "value": "Static",
            "description": "Static"
          },
          {
            "name": "Dynamic",
            "value": "Dynamic",
            "description": "Dynamic"
          }
        ]
      }
    },
    "IPVersion": {
      "type": "string",
      "description": "IP address version.",
      "enum": [
        "IPv4",
        "IPv6"
      ],
      "x-ms-enum": {
        "name": "IPVersion",
        "modelAsString": true,
        "values": [
          {
            "name": "IPv4",
            "value": "IPv4",
            "description": "IPv4"
          },
          {
            "name": "IPv6",
            "value": "IPv6",
            "description": "IPv6"
          }
        ]
      }
    },
    "ProvisioningState": {
      "type": "string",
      "description": "Provisioning states of a resource.",
      "enum": [
        "Failed",
        "Succeeded",
        "Canceled",
        "Creating",
        "Updating",
        "Deleting"
      ],
      "x-ms-enum": {
        "name": "ProvisioningState",
        "modelAsString": true,
        "values": [
          {
            "name": "Failed",
            "value": "Failed",
            "description": "Failed"
          },
          {
            "name": "Succeeded",
            "value": "Succeeded",
            "description": "Succeeded"
          },
          {
            "name": "Canceled",
            "value": "Canceled",
            "description": "Canceled"
          },
          {
            "name": "Creating",
            "value": "Creating",
            "description": "Creating"
          },
          {
            "name": "Updating",
            "value": "Updating",
            "description": "Updating"
          },
          {
            "name": "Deleting",
            "value": "Deleting",
            "description": "Deleting"
          }
        ]
      }
    },
    "PublicIPAddress": {
      "type": "object",
      "description": "Public IP address resource.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/PublicIPAddressPropertiesFormat",
          "description": "Public IP address properties.",
          "x-ms-client-flatten": true
        },
        "extendedLocation": {
          "$ref": "#/$defs/ExtendedLocation",
          "description": "The extended location of the public ip address."
        },
        "sku": {
          "$ref": "#/$defs/PublicIPAddressSku",
          "description": "The public IP address SKU."
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        },
        "zones": {
          "type": "array",
          "description": "A list of availability zones denoting the IP allocated for the resource needs to come from.",
          "items": {
            "type": "string"
          }
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/Resource"
        }
      ]
    },
    "Resource": {
      "type": "object",
      "description": "Common resource representation.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Resource ID."
        },
        "name": {
          "type": "string",
          "description": "Resource name.",
          "readOnly": true
        },
        "type": {
          "type": "string",
          "description": "Resource type.",
          "readOnly": true
        },
        "location": {
          "type": "string",
          "description": "Resource location."
        },
        "tags": {
          "type": "object",
          "description": "Resource tags.",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "x-ms-azure-resource": true
    },
    "SubResource": {
      "type": "object",
      "description": "Reference to another subresource.",
      "properties": {
        "id": {
          "type": "string",
          "description": "Resource ID."
        }
      }
    },
    "SubResourceModel": {
      "type": "object",
      "description": "Reference to another subresource.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the resource."
        },
        "type": {
          "type": "string",
          "description": "Resource type.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResource"
        }
      ],
      "x-ms-azure-resource": true
    },
    "Subnet": {
      "type": "object",
      "description": "Subnet in a virtual network resource.",
      "properties": {
        "properties": {
          "$ref": "#/$defs/SubnetPropertiesFormat",
          "description": "Properties of the subnet.",
          "x-ms-client-flatten": true
        },
        "etag": {
          "type": "string",
          "description": "A unique read-only string that changes whenever the resource is updated.",
          "readOnly": true
        }
      },
      "allOf": [
        {
          "$ref": "#/$defs/SubResourceModel"
        }
      ]
    }
  }
}