{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "Firewall",
  "description": "A Cloud NGFW firewall instance deployed in an AWS VPC.",
  "$id": "https://raw.githubusercontent.com/api-evangelist/palo-alto-networks/refs/heads/main/json-schema/cloud-ngfw-api-firewall-schema.json",
  "type": "object",
  "properties": {
    "FirewallName": {
      "type": "string"
    },
    "FirewallEntry": {
      "type": "object",
      "properties": {
        "Description": {
          "type": "string"
        },
        "VpcId": {
          "type": "string",
          "description": "AWS VPC ID where the firewall is deployed."
        },
        "AssociatedRuleStack": {
          "type": "string",
          "description": "Name of the rule stack associated with this firewall."
        },
        "SubnetMappings": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "SubnetId": {
                "type": "string",
                "description": "AWS subnet ID for the firewall endpoint."
              },
              "AvailabilityZone": {
                "type": "string"
              }
            }
          }
        },
        "Tags": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "Key": {
                "type": "string"
              },
              "Value": {
                "type": "string"
              }
            }
          }
        }
      }
    },
    "FirewallStatus": {
      "type": "object",
      "properties": {
        "FirewallStatus": {
          "type": "string",
          "enum": [
            "PROVISIONING",
            "ACTIVE",
            "DELETING",
            "FAILED"
          ]
        },
        "Attachments": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "SubnetId": {
                "type": "string"
              },
              "EndpointId": {
                "type": "string"
              },
              "Status": {
                "type": "string"
              }
            }
          }
        }
      }
    }
  }
}
