VlanAttachmentRequest is a JSON Structure definition published by Palo Alto Networks, describing 12 properties, of which 3 are required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.
{
"$schema": "https://json-structure.org/meta/core/v0/#",
"$id": "https://raw.githubusercontent.com/api-evangelist/palo-alto-networks/refs/heads/main/json-structure/sase-multitenant-interconnect-api-vlan-attachment-request-structure.json",
"name": "VlanAttachmentRequest",
"description": "VlanAttachmentRequest schema from SP Interconnect Manage APIs",
"type": "object",
"properties": {
"name": {
"type": "string",
"pattern": "^([-0-9a-z]){1,13}$"
},
"stackType": {
"type": "string",
"enum": [
"IPV4_ONLY",
"IPV4_IPV6"
]
},
"bandwidth": {
"type": "string",
"enum": [
"BPS_50M",
"BPS_100M",
"BPS_200M",
"BPS_300M",
"BPS_400M",
"BPS_500M",
"BPS_1G",
"BPS_2G",
"BPS_5G",
"BPS_10G"
]
},
"bgpPeerAsn": {
"type": "int64",
"minimum": 1
},
"bgpPeerBfdSessionInitMode": {
"type": "string",
"enum": [
"ACTIVE",
"PASSIVE",
"DISABLED"
]
},
"bgpPeerBfdMinTransmitInterval": {
"type": "int64",
"minimum": 1000,
"maximum": 30000
},
"bgpPeerBfdMinReceiveInterval": {
"type": "int64",
"minimum": 1000,
"maximum": 30000
},
"bgpPeerBfdMultiplier": {
"type": "int64",
"minimum": 5,
"maximum": 16
},
"dedicatedConnectionDetails": {
"type": "array",
"items": {
"type": "object",
"properties": {
"edgeAvailability": {
"type": "string"
},
"bandwidth": {
"type": "string",
"enum": [
"BPS_50M",
"BPS_100M",
"BPS_200M",
"BPS_300M",
"BPS_400M",
"BPS_500M",
"BPS_1G",
"BPS_2G",
"BPS_5G",
"BPS_10G"
]
}
},
"required": [
"edgeAvailability"
]
}
},
"primaryAttachmentCustomIpAddress": {
"type": "object",
"description": "Custom IP address configuration for VLAN attachment BGP peering. Both Cloud Router and Customer Router IP addresses must be provided together with matching prefix lengths (/29 or /30). IP addresses must not be in reserved ranges (RFC1918 private IPs, loopback, etc.) and must not be network or broadcast addresses.",
"properties": {
"candidateCloudRouterIpAddress": {
"type": "string",
"description": "Cloud Router IP address in CIDR notation (e.g., 169.254.1.1/29). Must have prefix length /29 or /30 and match the prefix length of candidateCustomerRouterIpAddress.",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))/(29|30)$"
},
"candidateCustomerRouterIpAddress": {
"type": "string",
"description": "Customer Router IP address in CIDR notation (e.g., 169.254.1.2/29). Must have prefix length /29 or /30 and match the prefix length of candidateCloudRouterIpAddress.",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))/(29|30)$"
}
}
},
"redundantAttachmentCustomIpAddress": {
"type": "object",
"description": "Custom IP address configuration for VLAN attachment BGP peering. Both Cloud Router and Customer Router IP addresses must be provided together with matching prefix lengths (/29 or /30). IP addresses must not be in reserved ranges (RFC1918 private IPs, loopback, etc.) and must not be network or broadcast addresses.",
"properties": {
"candidateCloudRouterIpAddress": {
"type": "string",
"description": "Cloud Router IP address in CIDR notation (e.g., 169.254.1.1/29). Must have prefix length /29 or /30 and match the prefix length of candidateCustomerRouterIpAddress.",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))/(29|30)$"
},
"candidateCustomerRouterIpAddress": {
"type": "string",
"description": "Customer Router IP address in CIDR notation (e.g., 169.254.1.2/29). Must have prefix length /29 or /30 and match the prefix length of candidateCloudRouterIpAddress.",
"pattern": "^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))/(29|30)$"
}
}
},
"bgpPeerMd5AuthEnabled": {
"type": "boolean"
}
},
"required": [
"name",
"bgpPeerAsn",
"bgpPeerBfdSessionInitMode"
]
}