{ "openapi": "3.0.1", "info": { "title": "Cisco Meraki Dashboard API \u2014 appliance", "description": "The appliance operations of the Cisco Meraki Dashboard API, split by product area from Cisco's published OpenAPI definition.", "version": "1.72.0", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" }, "x-provenance": { "method": "harvested", "authored_by": "Cisco Meraki", "harvested_by": "API Evangelist", "harvested_on": "2026-07-31", "first_party": true, "note": "Split by first tag from Cisco's published spec3.json; operations unmodified.", "provider_published": true }, "x-evidence": [ { "type": "source", "url": "https://github.com/meraki/openapi/blob/master/openapi/spec3.json" }, { "type": "raw", "url": "https://raw.githubusercontent.com/meraki/openapi/master/openapi/spec3.json" }, { "type": "alternate", "url": "https://api.meraki.com/api/v1/openapiSpec" } ] }, "servers": [ { "url": "https://api.meraki.com/{basePath}", "variables": { "basePath": { "default": "api/v1" } } } ], "security": [ { "meraki_api_key": [] }, { "bearerAuth": [] } ], "tags": [ { "name": "account", "description": "" }, { "name": "appliance", "description": "" }, { "name": "applicationCategories", "description": "" }, { "name": "assignments", "description": "" }, { "name": "authenticationToken", "description": "" }, { "name": "bgp", "description": "" }, { "name": "bulkCreate", "description": "" }, { "name": "bulkDelete", "description": "" }, { "name": "byDevice", "description": "" }, { "name": "byNetwork", "description": "" }, { "name": "byVlan", "description": "" }, { "name": "categories", "description": "" }, { "name": "cellularFirewallRules", "description": "" }, { "name": "clients", "description": "" }, { "name": "configure", "description": "" }, { "name": "connectivityMonitoringDestinations", "description": "" }, { "name": "contentFiltering", "description": "" }, { "name": "customPerformanceClasses", "description": "" }, { "name": "delegated", "description": "" }, { "name": "devices", "description": "" }, { "name": "dhcp", "description": "" }, { "name": "dns", "description": "" }, { "name": "domains", "description": "" }, { "name": "events", "description": "" }, { "name": "firewall", "description": "" }, { "name": "firewalledServices", "description": "" }, { "name": "global", "description": "" }, { "name": "group", "description": "" }, { "name": "history", "description": "" }, { "name": "inboundCellularFirewallRules", "description": "" }, { "name": "inboundFirewallRules", "description": "" }, { "name": "interfaces", "description": "" }, { "name": "internetPolicies", "description": "" }, { "name": "intrusion", "description": "" }, { "name": "ipsec", "description": "" }, { "name": "l3", "description": "" }, { "name": "l3FirewallRules", "description": "" }, { "name": "l7FirewallRules", "description": "" }, { "name": "local", "description": "" }, { "name": "malware", "description": "" }, { "name": "monitor", "description": "" }, { "name": "multicastForwarding", "description": "" }, { "name": "nat", "description": "" }, { "name": "oneToManyNatRules", "description": "" }, { "name": "oneToOneNatRules", "description": "" }, { "name": "overview", "description": "" }, { "name": "overviews", "description": "" }, { "name": "packets", "description": "" }, { "name": "peers", "description": "" }, { "name": "performance", "description": "" }, { "name": "policies", "description": "" }, { "name": "portForwardingRules", "description": "" }, { "name": "ports", "description": "" }, { "name": "prefixes", "description": "" }, { "name": "profiles", "description": "" }, { "name": "radio", "description": "" }, { "name": "readings", "description": "" }, { "name": "records", "description": "" }, { "name": "redundancy", "description": "" }, { "name": "rfProfiles", "description": "" }, { "name": "routing", "description": "" }, { "name": "rules", "description": "" }, { "name": "sdwan", "description": "" }, { "name": "security", "description": "" }, { "name": "settings", "description": "" }, { "name": "singleLan", "description": "" }, { "name": "siteToSite", "description": "" }, { "name": "siteToSiteVpn", "description": "" }, { "name": "slas", "description": "" }, { "name": "split", "description": "" }, { "name": "ssids", "description": "" }, { "name": "staticRoutes", "description": "" }, { "name": "statics", "description": "" }, { "name": "stats", "description": "" }, { "name": "statuses", "description": "" }, { "name": "subnets", "description": "" }, { "name": "swap", "description": "" }, { "name": "thirdPartyVPNPeers", "description": "" }, { "name": "trafficShaping", "description": "" }, { "name": "transceivers", "description": "" }, { "name": "umbrella", "description": "" }, { "name": "update", "description": "" }, { "name": "uplinkBandwidth", "description": "" }, { "name": "uplinkSelection", "description": "" }, { "name": "uplinks", "description": "" }, { "name": "usage", "description": "" }, { "name": "usageHistory", "description": "" }, { "name": "vlanAssignments", "description": "" }, { "name": "vlans", "description": "" }, { "name": "vmx", "description": "" }, { "name": "vpn", "description": "" }, { "name": "vpnExclusions", "description": "" }, { "name": "vpnFirewallRules", "description": "" }, { "name": "vrfs", "description": "" }, { "name": "warmSpare", "description": "" } ], "components": { "securitySchemes": { "meraki_api_key": { "type": "apiKey", "name": "X-Cisco-Meraki-API-Key", "in": "header" }, "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "API Key" } } }, "paths": { "/devices/{serial}/appliance/dhcp/subnets": { "get": { "description": "Return the DHCP subnet information for an appliance", "operationId": "getDeviceApplianceDhcpSubnets", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "subnet": { "type": "string", "description": "Subnet" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "usedCount": { "type": "integer", "description": "Count of used IP addresses in subnet" }, "freeCount": { "type": "integer", "description": "Count of free IP addresses in subnet" } } } }, "example": [ { "subnet": "192.168.1.0/24", "vlanId": 100, "usedCount": 2, "freeCount": 251 } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return the DHCP subnet information for an appliance", "tags": [ "appliance", "monitor", "dhcp", "subnets" ] } }, "/devices/{serial}/appliance/interfaces/ports/update": { "post": { "description": "Update configurations for an appliance's specified port", "operationId": "createDeviceApplianceInterfacesPortsUpdate", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "slot": { "type": "integer", "description": "The slot number for the port", "nullable": true }, "subslot": { "type": "integer", "description": "The subslot number for the port", "nullable": true }, "number": { "type": "integer", "description": "The leaf port number" } }, "description": "The interface tuple used to identify the port" }, "enabled": { "type": "boolean", "description": "Indicates whether the port is enabled" }, "personality": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "lan", "wan" ], "description": "The type of interface, 'wan' or 'lan', the port is configured as" }, "layer": { "type": "object", "properties": { "mode": { "type": "integer", "enum": [ 2, 3 ], "description": "The layer at which the port operates" } }, "description": "Describes the port's layer configurability" } }, "description": "Describes the port's configurability" }, "uplink": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "cellular", "ethernet" ], "description": "Describes the uplink device", "nullable": true } }, "description": "The port's settings when in WAN mode" }, "downlink": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "access", "trunk" ], "description": "Indicates whether the port is in 'trunk' or 'access' mode" }, "sgt": { "type": "object", "properties": { "id": { "type": "string", "description": "Adaptive policy group ID that all traffic originating from this port is assigned to", "nullable": true } }, "description": "Security Group Tag settings for this port" }, "access": { "type": "object", "properties": { "vlan": { "type": "string", "description": "The VLAN for which this port will accept and pass traffic in 'access' mode. All untagged traffic will automatically be treated as if it belonged to this VLAN" }, "policy": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "802.1X", "MAC RADIUS", "hybrid", "open" ], "description": "The access policy that will be enforced by the 'access' VLAN", "nullable": true } }, "description": "The access policy settings for this port" } }, "description": "The port's settings when in 'access' mode" }, "trunk": { "type": "object", "properties": { "nativeVlan": { "type": "string", "description": "The Native VLAN for the port. All untagged traffic that comes in on this port will be treated as if it belonged to this VLAN. This can also be set to 0 to drop untagged traffic." }, "allowedVlans": { "type": "array", "items": { "type": "string" }, "description": "The VLANs for which this port will accept and pass traffic in 'trunk' mode. This must include the Native VLAN if one is set" }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the trunk port is Peer SGT capable" } }, "description": "Security Group Tag settings for this trunk port" } }, "description": "The port's settings when in 'trunk' mode" } }, "description": "The port's VLAN settings when in LAN mode" } }, "example": { "interface": { "slot": 1, "subslot": 2, "number": 3 }, "enabled": true, "personality": { "mode": "wan", "layer": { "mode": 3 } }, "uplink": { "type": "ethernet" }, "downlink": { "mode": "access", "sgt": { "id": "1234" }, "access": { "vlan": "1", "policy": { "type": "802.1X" } }, "trunk": { "nativeVlan": "2", "allowedVlans": [ "2", "3", "4", "5" ], "sgt": { "enabled": false } } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "number": { "type": "string", "description": "A port's identifier as labeled on the device" }, "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "The full interface identifier for this port" }, "slot": { "type": "integer", "description": "The slot for this port", "nullable": true }, "subslot": { "type": "integer", "description": "The subslot for this port", "nullable": true }, "number": { "type": "integer", "description": "The leaf interface number for this port" } }, "description": "The structured interface identifier for this port" }, "enabled": { "type": "boolean", "description": "Indicates whether the port is enabled" }, "name": { "type": "string", "description": "The name of the interface the port is mapped to" }, "personality": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "lan", "wan" ], "description": "The type of interface, 'wan' or 'lan', the port is configured as" }, "isFlexible": { "type": "boolean", "description": "Indicates whether the port interface type can convert between WAN and LAN" }, "layer": { "type": "object", "properties": { "mode": { "type": "integer", "enum": [ 2, 3 ], "description": "The layer at which the port operates" }, "isFlexible": { "type": "boolean", "description": "Whether the layer mode is mutable" } }, "description": "Describes the port's layer configurability" } }, "description": "Describes the port's configurability" }, "uplink": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "cellular", "ethernet" ], "description": "Describes the uplink device" }, "primary": { "type": "boolean", "description": "Indicates whether the uplink has the highest priority among the device's WAN ports" } }, "description": "The port's settings when in WAN mode" }, "downlink": { "type": "object", "properties": { "mode": { "type": "string", "description": "Indicates whether the port is in 'trunk' or 'access' mode" }, "sgt": { "type": "object", "properties": { "id": { "type": "string", "description": "Adaptive policy group ID that all traffic originating from this port is assigned to", "nullable": true } }, "description": "Security Group Tag settings for this port" }, "access": { "type": "object", "properties": { "vlan": { "type": "string", "description": "The VLAN for which this port will accept and pass traffic in 'access' mode. All untagged traffic will automatically be treated as if it belonged to this VLAN" }, "policy": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "802.1X", "MAC RADIUS", "hybrid", "open" ], "description": "The access policy that will be enforced by the 'access' VLAN", "nullable": true } }, "description": "The access policy settings for this port" } }, "description": "The port's settings when in 'access' mode" }, "trunk": { "type": "object", "properties": { "nativeVlan": { "type": "string", "description": "The Native VLAN for the port. All untagged traffic that comes in on this port will be treated as if it belonged to this VLAN. This can also be set to 0 to drop untagged traffic." }, "allowedVlans": { "type": "array", "items": { "type": "string" }, "description": "The VLANs for which this port will accept and pass traffic in 'trunk' mode. This must include the Native VLAN if one is set" }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the trunk port is Peer SGT capable" } }, "description": "Security Group Tag settings for this trunk port" } }, "description": "The port's settings when in 'trunk' mode" } }, "description": "The port's VLAN settings when in LAN mode" } } }, "example": { "number": "1", "interface": { "name": "GigabitEthernet1/2/3", "slot": 1, "subslot": 2, "number": 3 }, "enabled": true, "name": "wan1", "personality": { "mode": "wan", "isFlexible": false, "layer": { "mode": 3, "isFlexible": false } }, "uplink": { "type": "ethernet", "primary": true }, "downlink": { "mode": "access", "sgt": { "id": "1234" }, "access": { "vlan": "1", "policy": { "type": "802.1X" } }, "trunk": { "nativeVlan": "2", "allowedVlans": [ "2", "3", "4", "5" ], "sgt": { "enabled": false } } } } } } } }, "summary": "Update configurations for an appliance's specified port", "tags": [ "appliance", "configure", "interfaces", "ports", "update" ] } }, "/devices/{serial}/appliance/performance": { "get": { "description": "Return the performance score for a single Secure Appliance or Secure Router. Only primary Secure Appliance devices supported. If no data is available, a 204 error code is returned.", "operationId": "getDeviceAppliancePerformance", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 30 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 14 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 30 minutes and be less than or equal to 14 days. The default is 30 minutes.", "schema": { "type": "number", "format": "float", "minimum": 1800, "maximum": 1209600 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "perfScore": { "type": "number", "format": "float", "description": "Utilization for the device" } } }, "example": { "perfScore": 10.0 } } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return the performance score for a single Secure Appliance or Secure Router", "tags": [ "appliance", "monitor", "performance" ] } }, "/devices/{serial}/appliance/prefixes/delegated": { "get": { "description": "Return current delegated IPv6 prefixes on an appliance.", "operationId": "getDeviceAppliancePrefixesDelegated", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "origin": { "type": "object", "properties": { "interface": { "type": "string", "description": "Uplink interface for this delegated prefix." } }, "required": [ "interface" ], "description": "Origin details for the delegated prefix." }, "prefix": { "type": "string", "description": "Delegated IPv6 prefix in CIDR notation." }, "counts": { "type": "object", "properties": { "assigned": { "type": "integer", "description": "Number of assigned VLAN prefixes." }, "available": { "type": "integer", "description": "Number of available VLAN prefixes." } }, "required": [ "assigned", "available" ], "description": "Usage counters for the delegated prefix." }, "method": { "type": "string", "enum": [ "auto", "manual" ], "description": "Delegation method." }, "staticDelegatedPrefixId": { "type": "string", "description": "Static delegated prefix id. Present when method is manual." }, "description": { "type": "string", "description": "Description for a manual delegated prefix." }, "isPreferred": { "type": "boolean", "description": "Whether this delegated prefix is preferred." }, "expiresAt": { "type": "string", "format": "date-time", "description": "Expiration time of the delegated prefix.", "nullable": true } }, "required": [ "prefix", "method", "isPreferred" ] } }, "example": [ { "origin": { "interface": "wan1" }, "prefix": "2001:db8:3c4d:15::/64", "counts": { "assigned": 2, "available": 253 }, "method": "auto", "staticDelegatedPrefixId": "2001:db8:3c4d:15::/64", "description": "My ISP provider", "isPreferred": true, "expiresAt": "2018-05-12T00:00:00Z" } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return current delegated IPv6 prefixes on an appliance.", "tags": [ "appliance", "monitor", "prefixes", "delegated" ] } }, "/devices/{serial}/appliance/prefixes/delegated/vlanAssignments": { "get": { "description": "Return prefixes assigned to all IPv6 enabled VLANs on an appliance.", "operationId": "getDeviceAppliancePrefixesDelegatedVlanAssignments", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "vlan": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN id." }, "name": { "type": "string", "description": "VLAN name." } }, "required": [ "id", "name" ], "description": "VLAN details for the prefix assignment." }, "origin": { "type": "object", "properties": { "interface": { "type": "string", "description": "Uplink interface origin." }, "prefix": { "type": "string", "description": "Delegated origin prefix.", "nullable": true } }, "required": [ "interface" ], "description": "Delegated prefix origin for this VLAN assignment." }, "status": { "type": "string", "enum": [ "Active", "Expiring soon", "Not assigned" ], "description": "Current assignment status." }, "ipv6": { "type": "object", "properties": { "prefix": { "type": "string", "description": "Assigned IPv6 subnet prefix.", "nullable": true }, "address": { "type": "string", "description": "IPv6 address assigned to the MX on the VLAN." }, "linkLocal": { "type": "object", "properties": { "address": { "type": "string", "description": "Link-local address.", "nullable": true } }, "description": "IPv6 link-local address." }, "solicitedNodeMulticast": { "type": "object", "properties": { "address": { "type": "string", "description": "Solicited-node multicast address.", "nullable": true } }, "description": "IPv6 solicited-node multicast address." } }, "required": [ "address" ], "description": "IPv6 assignment details for the VLAN." } }, "required": [ "status" ] } }, "example": [ { "vlan": { "id": 100, "name": "My VLAN" }, "origin": { "interface": "wan1", "prefix": "2001:db8:3c4d:15::/64" }, "status": "Active", "ipv6": { "prefix": "2001:db8:3c4d:15::/64", "address": "2001:db8:3c4d:15::1", "linkLocal": { "address": "2001:db8:3c4d:15::1" }, "solicitedNodeMulticast": { "address": "2001:db8:3c4d:15::1" } } } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return prefixes assigned to all IPv6 enabled VLANs on an appliance.", "tags": [ "appliance", "monitor", "prefixes", "delegated", "vlanAssignments" ] } }, "/devices/{serial}/appliance/radio/settings": { "get": { "description": "Return the radio settings of an appliance", "operationId": "getDeviceApplianceRadioSettings", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "serial": { "type": "string", "description": "The device serial" }, "rfProfileId": { "type": "string", "description": "RF Profile ID" }, "twoFourGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "description": "Manual channel for 2.4 GHz" }, "targetPower": { "type": "integer", "description": "Manual target power for 2.4 GHz" } }, "description": "Manual radio settings for 2.4 GHz" }, "fiveGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177 ], "description": "Manual channel for 5 GHz" }, "channelWidth": { "type": "integer", "enum": [ 0, 20, 40, 80, 160 ], "description": "Manual channel width for 5 GHz" }, "targetPower": { "type": "integer", "description": "Manual target power for 5 GHz" } }, "description": "Manual radio settings for 5 GHz" } } }, "example": { "serial": "Q234-ABCD-5678", "rfProfileId": "1234", "twoFourGhzSettings": { "channel": 11, "targetPower": 21 }, "fiveGhzSettings": { "channel": 149, "channelWidth": 20, "targetPower": 15 } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the radio settings of an appliance", "tags": [ "appliance", "configure", "radio", "settings" ] }, "put": { "description": "Update the radio settings of an appliance", "operationId": "updateDeviceApplianceRadioSettings", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rfProfileId": { "type": "string", "nullable": true, "description": "The ID of an RF profile to assign to the device. If the value of this parameter is null, the appropriate basic RF profile (indoor or outdoor) will be assigned to the device. Assigning an RF profile will clear ALL manually configured overrides on the device (channel width, channel, power)." }, "twoFourGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "description": "Sets a manual channel for 2.4 GHz. Can be '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13' or '14' or null for using auto channel.", "nullable": true }, "targetPower": { "type": "integer", "description": "Set a manual target power for 2.4 GHz (dBm). Enter null for using auto power range.", "nullable": true } }, "description": "Manual radio settings for 2.4 GHz." }, "fiveGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177 ], "description": "Sets a manual channel for 5 GHz. Can be '36', '40', '44', '48', '52', '56', '60', '64', '100', '104', '108', '112', '116', '120', '124', '128', '132', '136', '140', '144', '149', '153', '157', '161', '165', '169', '173' or '177' or null for using auto channel.", "nullable": true }, "channelWidth": { "type": "integer", "enum": [ 0, 20, 40, 80, 160 ], "description": "Sets a manual channel width for 5 GHz. Can be '0', '20', '40', '80' or '160' or null for using auto channel width.", "nullable": true }, "targetPower": { "type": "integer", "description": "Set a manual target power for 5 GHz (dBm). Enter null for using auto power range.", "nullable": true } }, "description": "Manual radio settings for 5 GHz." } }, "example": { "rfProfileId": "1234", "twoFourGhzSettings": { "channel": 11, "targetPower": 21 }, "fiveGhzSettings": { "channel": 149, "channelWidth": 20, "targetPower": 15 } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "serial": { "type": "string", "description": "The device serial" }, "rfProfileId": { "type": "string", "description": "RF Profile ID" }, "twoFourGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ], "description": "Manual channel for 2.4 GHz" }, "targetPower": { "type": "integer", "description": "Manual target power for 2.4 GHz" } }, "description": "Manual radio settings for 2.4 GHz" }, "fiveGhzSettings": { "type": "object", "properties": { "channel": { "type": "integer", "enum": [ 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 144, 149, 153, 157, 161, 165, 169, 173, 177 ], "description": "Manual channel for 5 GHz" }, "channelWidth": { "type": "integer", "enum": [ 0, 20, 40, 80, 160 ], "description": "Manual channel width for 5 GHz" }, "targetPower": { "type": "integer", "description": "Manual target power for 5 GHz" } }, "description": "Manual radio settings for 5 GHz" } } }, "example": { "serial": "Q234-ABCD-5678", "rfProfileId": "1234", "twoFourGhzSettings": { "channel": 11, "targetPower": 21 }, "fiveGhzSettings": { "channel": 149, "channelWidth": 20, "targetPower": 15 } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the radio settings of an appliance", "tags": [ "appliance", "configure", "radio", "settings" ] } }, "/devices/{serial}/appliance/uplinks/settings": { "get": { "description": "Return the uplink settings for a secure router or security appliance", "operationId": "getDeviceApplianceUplinksSettings", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaces": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 1 settings." }, "wan2": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 2 settings." } }, "description": "Interface settings." } } }, "example": { "interfaces": { "wan1": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username" } } }, "wan2": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username" } } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the uplink settings for a secure router or security appliance", "tags": [ "appliance", "configure", "uplinks", "settings" ] }, "put": { "description": "Update the uplink settings for a secure router or security appliance", "operationId": "updateDeviceApplianceUplinksSettings", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaces": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." }, "password": { "type": "string", "description": "Password for PPPoE authentication. This parameter is not returned." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 1 settings." }, "wan2": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." }, "password": { "type": "string", "description": "Password for PPPoE authentication. This parameter is not returned." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 2 settings." } }, "description": "Interface settings." } }, "example": { "interfaces": { "wan1": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username", "password": "password" } } }, "wan2": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username", "password": "password" } } } } }, "required": [ "interfaces" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaces": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 1 settings." }, "wan2": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable the interface." }, "vlanTagging": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether VLAN tagging is enabled." }, "vlanId": { "type": "integer", "description": "The ID of the VLAN to use for VLAN tagging." } }, "description": "VLAN tagging settings." }, "svis": { "type": "object", "properties": { "ipv4": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "IP address and subnet mask when in static mode." }, "gateway": { "type": "string", "description": "Gateway IP address when in static mode." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv4 settings for static/dynamic mode." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "The assignment mode for this SVI. Applies only when PPPoE is disabled." }, "address": { "type": "string", "description": "Static address that will override the one(s) received by SLAAC." }, "gateway": { "type": "string", "description": "Static gateway that will override the one received by autoconf." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Up to 2 nameserver addresses to use, ordered in priority from highest to lowest priority." } }, "description": "The nameserver settings for this SVI." } }, "description": "IPv6 settings for static/dynamic mode." } }, "description": "SVI settings by protocol." }, "pppoe": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE is enabled." }, "authentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether PPPoE authentication is enabled." }, "username": { "type": "string", "description": "Username for PPPoE authentication." } }, "description": "Settings for PPPoE Authentication." } }, "description": "Configuration options for PPPoE." } }, "description": "WAN 2 settings." } }, "description": "Interface settings." } } }, "example": { "interfaces": { "wan1": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username" } } }, "wan2": { "enabled": true, "vlanTagging": { "enabled": true, "vlanId": 1 }, "svis": { "ipv4": { "assignmentMode": "static", "address": "9.10.11.10/16", "gateway": "13.14.15.16", "nameservers": { "addresses": [ "1.2.3.4" ] } }, "ipv6": { "assignmentMode": "static", "address": "1:2:3::4", "gateway": "1:2:3::5", "nameservers": { "addresses": [ "1001:4860:4860::8888", "1001:4860:4860::8844" ] } } }, "pppoe": { "enabled": true, "authentication": { "enabled": true, "username": "username" } } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the uplink settings for a secure router or security appliance", "tags": [ "appliance", "configure", "uplinks", "settings" ] } }, "/devices/{serial}/appliance/vmx/authenticationToken": { "post": { "description": "Generate a new vMX authentication token", "operationId": "createDeviceApplianceVmxAuthenticationToken", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "token": { "type": "string", "description": "The newly generated authentication token for the vMX instance" }, "expiresAt": { "type": "string", "description": "The expiration time for the token, in ISO 8601 format" } } }, "example": { "token": "ffc0b7b578b61be5bd1d172132c78044/9af03bd84d474", "expiresAt": "2021-06-18T12:40:10Z" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Generate a new vMX authentication token", "tags": [ "appliance", "configure", "vmx", "authenticationToken" ] } }, "/networks/{networkId}/appliance/clients/{clientId}/security/events": { "get": { "description": "List the security events for a client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", "operationId": "getNetworkApplianceClientSecurityEvents", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "clientId", "in": "path", "description": "Client ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. Data is gathered after the specified t0 value. The maximum lookback period is 791 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 791 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 791 days. The default is 31 days.", "schema": { "type": "number", "format": "float", "maximum": 68342400 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of security events based on event detection time. Order options are 'ascending' or 'descending'. Default is ascending order.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "example": [ { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "File Scanned", "clientName": "COMPUTER-M-V78J", "clientMac": "10:dd:b1:eb:88:f8", "clientIp": "192.168.128.2", "srcIp": "192.168.128.2", "destIp": "119.192.233.48", "protocol": "http", "uri": "http://www.favorite-icons.com/program/FavoriteIconsUninstall.exe", "canonicalName": "PUA.Win.Dropper.Kraddare::1201", "destinationPort": 80, "fileHash": "3ec1b9a95fe62aa25fc959643a0f227b76d253094681934daaf628d3574b3463", "fileType": "MS_EXE", "fileSizeBytes": 193688, "disposition": "Malicious", "action": "Blocked" }, { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "IDS Alert", "deviceMac": "00:18:0a:01:02:03", "clientMac": "A1:B2:C3:D4:E5:F6", "srcIp": "1.2.3.4:34195", "destIp": "10.20.30.40:80", "protocol": "tcp/ip", "priority": "2", "classification": "4", "blocked": true, "message": "SERVER-WEBAPP JBoss JMX console access attempt", "signature": "1:21516:9", "sigSource": "", "ruleId": "meraki:intrusion/snort/GID/1/SID/26267" } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "List the security events for a client", "tags": [ "appliance", "monitor", "clients", "security", "events" ] } }, "/networks/{networkId}/appliance/connectivityMonitoringDestinations": { "get": { "description": "Return the connectivity testing destinations for an MX network", "operationId": "getNetworkApplianceConnectivityMonitoringDestinations", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "destinations": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address to test connectivity with" }, "description": { "type": "string", "description": "Description of the testing destination. Optional, defaults to an empty string" }, "default": { "type": "boolean", "description": "Boolean indicating whether this is the default testing destination (true) or not (false). Defaults to false. Only one default is allowed" } } }, "description": "The list of connectivity monitoring destinations" } } }, "example": { "destinations": [ { "ip": "1.2.3.4", "description": "Google", "default": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return the connectivity testing destinations for an MX network", "tags": [ "appliance", "configure", "connectivityMonitoringDestinations" ] }, "put": { "description": "Update the connectivity testing destinations for an MX network", "operationId": "updateNetworkApplianceConnectivityMonitoringDestinations", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "destinations": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address to test connectivity with" }, "description": { "type": "string", "description": "Description of the testing destination. Optional, defaults to null", "nullable": true }, "default": { "type": "boolean", "description": "Boolean indicating whether this is the default testing destination (true) or not (false). Defaults to false. Only one default is allowed" } }, "required": [ "ip" ] }, "description": "The list of connectivity monitoring destinations" } }, "example": { "destinations": [ { "ip": "1.2.3.4", "description": "Google", "default": false } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "destinations": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IP address to test connectivity with" }, "description": { "type": "string", "description": "Description of the testing destination. Optional, defaults to an empty string" }, "default": { "type": "boolean", "description": "Boolean indicating whether this is the default testing destination (true) or not (false). Defaults to false. Only one default is allowed" } } }, "description": "The list of connectivity monitoring destinations" } } }, "example": { "destinations": [ { "ip": "1.2.3.4", "description": "Google", "default": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:write" ] } ], "summary": "Update the connectivity testing destinations for an MX network", "tags": [ "appliance", "configure", "connectivityMonitoringDestinations" ] } }, "/networks/{networkId}/appliance/contentFiltering": { "get": { "description": "Return the content filtering settings for an MX network", "operationId": "getNetworkApplianceContentFiltering", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are allowed" }, "blockedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are blocked" }, "blockedUrlCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The identifier of the content filtering category" }, "name": { "type": "string", "description": "The name of the content filtering category" } } }, "description": "A list of URL categories to block" }, "urlCategoryListSize": { "type": "string", "enum": [ "fullList", "topSites" ], "description": "URL category list size which is either 'topSites' or 'fullList'" } } }, "example": { "allowedUrlPatterns": [ "http://www.example.org", "http://help.com.au" ], "blockedUrlPatterns": [ "http://www.example.com", "http://www.betting.com" ], "blockedUrlCategories": [ { "id": "meraki:contentFiltering/category/1", "name": "Real Estate" } ], "urlCategoryListSize": "topSites" } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the content filtering settings for an MX network", "tags": [ "appliance", "configure", "contentFiltering" ] }, "put": { "description": "Update the content filtering settings for an MX network", "operationId": "updateNetworkApplianceContentFiltering", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are allowed" }, "blockedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are blocked" }, "blockedUrlCategories": { "type": "array", "items": { "type": "string" }, "description": "A list of URL categories to block" }, "urlCategoryListSize": { "type": "string", "enum": [ "fullList", "topSites" ], "description": "URL category list size which is either 'topSites' or 'fullList'" } }, "example": { "allowedUrlPatterns": [ "http://www.example.org", "http://help.com.au" ], "blockedUrlPatterns": [ "http://www.example.com", "http://www.betting.com" ], "blockedUrlCategories": [ "meraki:contentFiltering/category/1", "meraki:contentFiltering/category/7" ], "urlCategoryListSize": "topSites" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are allowed" }, "blockedUrlPatterns": { "type": "array", "items": { "type": "string" }, "description": "A list of URL patterns that are blocked" }, "blockedUrlCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The identifier of the content filtering category" }, "name": { "type": "string", "description": "The name of the content filtering category" } } }, "description": "A list of URL categories to block" }, "urlCategoryListSize": { "type": "string", "enum": [ "fullList", "topSites" ], "description": "URL category list size which is either 'topSites' or 'fullList'" } } }, "example": { "allowedUrlPatterns": [ "http://www.example.org", "http://help.com.au" ], "blockedUrlPatterns": [ "http://www.example.com", "http://www.betting.com" ], "blockedUrlCategories": [ { "id": "meraki:contentFiltering/category/1", "name": "Real Estate" } ], "urlCategoryListSize": "topSites" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the content filtering settings for an MX network", "tags": [ "appliance", "configure", "contentFiltering" ] } }, "/networks/{networkId}/appliance/contentFiltering/categories": { "get": { "description": "List all available content filtering categories for an MX network", "operationId": "getNetworkApplianceContentFilteringCategories", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "categories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category identifier" }, "name": { "type": "string", "description": "Category name" } } }, "description": "Available content filtering categories" } } }, "example": { "categories": [ { "id": "meraki:contentFiltering/category/1", "name": "Real Estate" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List all available content filtering categories for an MX network", "tags": [ "appliance", "configure", "contentFiltering", "categories" ] } }, "/networks/{networkId}/appliance/devices/redundancy": { "put": { "description": "Update MX warm spare settings", "operationId": "updateNetworkApplianceDevicesRedundancy", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable warm spare" }, "mode": { "type": "string", "enum": [ "active-active", "active-passive", "disabled" ], "description": "HA mode (disabled|active-passive|active-active)" }, "designations": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Appliance serial" }, "priority": { "type": "integer", "description": "Role priority (1=primary, 2=spare)" } } }, "description": "Ordered warm spare roles" }, "uplink": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "public", "virtual" ], "description": "Uplink mode (public|virtual)" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1, wan2, ...)" }, "addresses": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string", "description": "Virtual IP" }, "subnet": { "type": "string", "description": "Subnet for the VIP (optional)" } } }, "description": "Interface VIP addresses" } } }, "description": "Interfaces to configure" }, "sharing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable uplink sharing" }, "vlanId": { "type": "string", "description": "Uplink sharing VLAN ID", "nullable": true }, "byInterface": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1, wan2, ...)" }, "parent": { "type": "string", "description": "Parent appliance role (primary|secondary)" } } }, "description": "Per-interface sharing configuration" } }, "description": "HA uplink sharing properties" }, "loadBalancing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable load balancing" }, "vlanSelection": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "auto", "manual" ], "description": "Selection mode (auto|manual)" }, "byDevice": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial number" }, "vlanIds": { "type": "array", "items": { "type": "integer" }, "description": "VLAN IDs participating in sharing" } } }, "description": "Per-device VLAN selection" } }, "description": "VLAN selection strategy" } }, "description": "Load balancing configuration" } }, "description": "Uplink configuration" } }, "example": { "enabled": true, "mode": "active-active", "designations": [ { "serial": "Q234-ABCD-5678", "priority": 1 } ], "uplink": { "mode": "virtual", "interfaces": [ { "name": "wan1", "addresses": [ { "address": "1.2.3.4", "subnet": "192.168.1.0/24" } ] } ], "sharing": { "enabled": true, "vlanId": "100", "byInterface": [ { "name": "wan1", "parent": "primary" } ] }, "loadBalancing": { "enabled": true, "vlanSelection": { "mode": "auto", "byDevice": [ { "serial": "Q234-ABCD-5678", "vlanIds": [ 1, 2 ] } ] } } } }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Dashboard network ID" }, "name": { "type": "string", "description": "Dashboard network name" }, "enabled": { "type": "boolean", "description": "Is warm spare enabled" }, "mode": { "type": "string", "enum": [ "active-active", "active-passive", "disabled" ], "description": "HA mode (disabled|active-passive|active-active)" }, "designations": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Appliance serial" }, "priority": { "type": "integer", "description": "Role priority (1=primary)" } } }, "description": "Ordered HA roles (1=primary, 2=spare)" }, "uplink": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "public", "virtual" ], "description": "Uplink mode (public|virtual)" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1|wan2|wanN)" }, "addresses": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string", "description": "VIP address" }, "subnet": { "type": "string", "description": "VIP subnet (optional in PUT)" } } }, "description": "Addresses for this interface" } } }, "description": "List of WAN interfaces" }, "sharing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable uplink sharing" }, "vlanId": { "type": "string", "description": "Uplink sharing VLAN ID", "nullable": true }, "byInterface": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1, wan2, ...)" }, "parent": { "type": "string", "description": "Parent appliance role (primary|secondary)" } } }, "description": "Per-interface sharing configuration" } }, "description": "HA uplink sharing properties" }, "loadBalancing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable load balancing" }, "vlanSelection": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "auto", "device" ], "description": "Selection mode (auto|device)" }, "byDevice": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial" }, "vlanIds": { "type": "array", "items": { "type": "integer" }, "description": "VLAN IDs for this device" } } }, "description": "Per-device VLAN selection" } }, "description": "VLAN selection strategy" } }, "description": "Load balancing configuration" } }, "description": "Uplink configuration" } } }, "example": { "networkId": "L_12345", "name": "some_locale", "enabled": true, "mode": "active-active", "designations": [ { "serial": "Q234-ABCD-5678", "priority": 1 } ], "uplink": { "mode": "virtual", "interfaces": [ { "name": "wan1", "addresses": [ { "address": "1.2.3.4", "subnet": "192.168.1.0/24" } ] } ], "sharing": { "enabled": true, "vlanId": "100", "byInterface": [ { "name": "wan1", "parent": "primary" } ] }, "loadBalancing": { "enabled": true, "vlanSelection": { "mode": "auto", "byDevice": [ { "serial": "Q234-ABCD-5678", "vlanIds": [ 1, 2 ] } ] } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update MX warm spare settings", "tags": [ "appliance", "configure", "devices", "redundancy" ] } }, "/networks/{networkId}/appliance/devices/redundancy/swap": { "post": { "description": "Swap MX primary and warm spare appliances", "operationId": "createNetworkApplianceDevicesRedundancySwap", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Dashboard network ID" }, "name": { "type": "string", "description": "Dashboard network name" }, "enabled": { "type": "boolean", "description": "Is warm spare enabled" }, "mode": { "type": "string", "enum": [ "active-active", "active-passive", "disabled" ], "description": "HA mode (disabled|active-passive|active-active)" }, "designations": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Appliance serial" }, "priority": { "type": "integer", "description": "Role priority (1=primary)" } } }, "description": "Ordered HA roles (1=primary, 2=spare)" }, "uplink": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "public", "virtual" ], "description": "Uplink mode (public|virtual)" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1|wan2|wanN)" }, "addresses": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string", "description": "VIP address" }, "subnet": { "type": "string", "description": "VIP subnet (optional in PUT)" } } }, "description": "Addresses for this interface" } } }, "description": "List of WAN interfaces" }, "sharing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable uplink sharing" }, "vlanId": { "type": "string", "description": "Uplink sharing VLAN ID", "nullable": true }, "byInterface": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1, wan2, ...)" }, "parent": { "type": "string", "description": "Parent appliance role (primary|secondary)" } } }, "description": "Per-interface sharing configuration" } }, "description": "HA uplink sharing properties" }, "loadBalancing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable load balancing" }, "vlanSelection": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "auto", "device" ], "description": "Selection mode (auto|device)" }, "byDevice": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial" }, "vlanIds": { "type": "array", "items": { "type": "integer" }, "description": "VLAN IDs for this device" } } }, "description": "Per-device VLAN selection" } }, "description": "VLAN selection strategy" } }, "description": "Load balancing configuration" } }, "description": "Uplink configuration" } } }, "example": { "networkId": "L_12345", "name": "some_locale", "enabled": true, "mode": "active-active", "designations": [ { "serial": "Q234-ABCD-5678", "priority": 1 } ], "uplink": { "mode": "virtual", "interfaces": [ { "name": "wan1", "addresses": [ { "address": "1.2.3.4", "subnet": "192.168.1.0/24" } ] } ], "sharing": { "enabled": true, "vlanId": "100", "byInterface": [ { "name": "wan1", "parent": "primary" } ] }, "loadBalancing": { "enabled": true, "vlanSelection": { "mode": "auto", "byDevice": [ { "serial": "Q234-ABCD-5678", "vlanIds": [ 1, 2 ] } ] } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Swap MX primary and warm spare appliances", "tags": [ "appliance", "configure", "devices", "redundancy", "swap" ] } }, "/networks/{networkId}/appliance/firewall/cellularFirewallRules": { "get": { "description": "Return the cellular firewall rules for an MX network", "operationId": "getNetworkApplianceFirewallCellularFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the cellular firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "cellularFirewallRules" ] }, "put": { "description": "Update the cellular firewall rules of an MX network", "operationId": "updateNetworkApplianceFirewallCellularFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } }, "required": [ "policy", "protocol", "srcCidr", "destCidr" ] }, "description": "An ordered array of the firewall rules (not including the default rule)" } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the cellular firewall rules of an MX network", "tags": [ "appliance", "configure", "firewall", "cellularFirewallRules" ] } }, "/networks/{networkId}/appliance/firewall/firewalledServices": { "get": { "description": "List the appliance services and their accessibility rules", "operationId": "getNetworkApplianceFirewallFirewalledServices", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "service": { "type": "string", "description": "Appliance service name" }, "access": { "type": "string", "description": "A string indicating the rule for which IPs are allowed to use the specified service" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of allowed CIDRs that can access the service" } } } }, "example": [ { "service": "web", "access": "restricted", "allowedIps": [ "123.123.123.1" ] } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the appliance services and their accessibility rules", "tags": [ "appliance", "configure", "firewall", "firewalledServices" ] } }, "/networks/{networkId}/appliance/firewall/firewalledServices/{service}": { "get": { "description": "Return the accessibility settings of the given service ('ICMP', 'web', or 'SNMP')", "operationId": "getNetworkApplianceFirewallFirewalledService", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "service", "in": "path", "description": "Service", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "service": { "type": "string", "description": "Appliance service name" }, "access": { "type": "string", "description": "A string indicating the rule for which IPs are allowed to use the specified service" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of allowed IPs that can access the service" } } }, "example": { "service": "web", "access": "restricted", "allowedIps": [ "123.123.123.1" ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the accessibility settings of the given service ('ICMP', 'web', or 'SNMP')", "tags": [ "appliance", "configure", "firewall", "firewalledServices" ] }, "put": { "description": "Updates the accessibility settings for the given service ('ICMP', 'web', or 'SNMP')", "operationId": "updateNetworkApplianceFirewallFirewalledService", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "service", "in": "path", "description": "Service", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "access": { "type": "string", "enum": [ "blocked", "restricted", "unrestricted" ], "description": "A string indicating the rule for which IPs are allowed to use the specified service. Acceptable values are \"blocked\" (no remote IPs can access the service), \"restricted\" (only allowed IPs can access the service), and \"unrestriced\" (any remote IP can access the service). This field is required" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of allowed CIDRs that can access the service. This field is required if \"access\" is set to \"restricted\". Otherwise this field is ignored" } }, "example": { "access": "restricted", "allowedIps": [ "123.123.123.1" ] }, "required": [ "access" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "service": { "type": "string", "description": "Appliance service name" }, "access": { "type": "string", "description": "A string indicating the rule for which IPs are allowed to use the specified service" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of allowed CIDRs that can access the service" } } }, "example": { "service": "web", "access": "restricted", "allowedIps": [ "123.123.123.1" ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Updates the accessibility settings for the given service ('ICMP', 'web', or 'SNMP')", "tags": [ "appliance", "configure", "firewall", "firewalledServices" ] } }, "/networks/{networkId}/appliance/firewall/inboundCellularFirewallRules": { "get": { "description": "Return the inbound cellular firewall rules for an MX network", "operationId": "getNetworkApplianceFirewallInboundCellularFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the inbound cellular firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "inboundCellularFirewallRules" ] }, "put": { "description": "Update the inbound cellular firewall rules of an MX network", "operationId": "updateNetworkApplianceFirewallInboundCellularFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } }, "required": [ "policy", "protocol", "srcCidr", "destCidr" ] }, "description": "An ordered array of the firewall rules (not including the default rule)" } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the inbound cellular firewall rules of an MX network", "tags": [ "appliance", "configure", "firewall", "inboundCellularFirewallRules" ] } }, "/networks/{networkId}/appliance/firewall/inboundFirewallRules": { "get": { "description": "Return the inbound firewall rules for an MX network", "operationId": "getNetworkApplianceFirewallInboundFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" }, "syslogDefaultRule": { "type": "boolean", "description": "Log the special default rule (boolean value - enable only if you've configured a syslog server) (optional)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ], "syslogDefaultRule": false } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the inbound firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "inboundFirewallRules" ] }, "put": { "description": "Update the inbound firewall rules of an MX network", "operationId": "updateNetworkApplianceFirewallInboundFirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } }, "required": [ "policy", "protocol", "srcCidr", "destCidr" ] }, "description": "An ordered array of the firewall rules (not including the default rule)" }, "syslogDefaultRule": { "type": "boolean", "description": "Log the special default rule (boolean value - enable only if you've configured a syslog server) (optional)" } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ], "syslogDefaultRule": true } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" }, "syslogDefaultRule": { "type": "boolean", "description": "Log the special default rule (boolean value - enable only if you've configured a syslog server) (optional)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ], "syslogDefaultRule": false } } } } }, "summary": "Update the inbound firewall rules of an MX network", "tags": [ "appliance", "configure", "firewall", "inboundFirewallRules" ] } }, "/networks/{networkId}/appliance/firewall/l3FirewallRules": { "get": { "description": "Return the L3 firewall rules for an MX network", "operationId": "getNetworkApplianceFirewallL3FirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the L3 firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "l3FirewallRules" ] }, "put": { "description": "Update the L3 firewall rules of an MX network", "operationId": "updateNetworkApplianceFirewallL3FirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } }, "required": [ "policy", "protocol", "srcCidr", "destCidr" ] }, "description": "An ordered array of the firewall rules (not including the default rule)" }, "syslogDefaultRule": { "type": "boolean", "description": "Log the special default rule (boolean value - enable only if you've configured a syslog server) (optional)" } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ], "syslogDefaultRule": true } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the L3 firewall rules of an MX network", "tags": [ "appliance", "configure", "firewall", "l3FirewallRules" ] } }, "/networks/{networkId}/appliance/firewall/l7FirewallRules": { "get": { "description": "List the MX L7 firewall rules for an MX network", "operationId": "getNetworkApplianceFirewallL7FirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "enum": [ "deny" ], "description": "'Deny' traffic specified by this rule" }, "type": { "type": "string", "enum": [ "allowedCountries", "application", "applicationCategory", "blacklistedCountries", "blockedCountries", "host", "ipRange", "port", "whitelistedCountries" ], "description": "Type of the L7 rule. One of: 'application', 'applicationCategory', 'host', 'port', 'ipRange' Country variants accepted: 'allowedCountries'/'blockedCountries' (and backward-compatible 'whitelistedCountries'/'blacklistedCountries')." }, "value": { "type": "string", "description": "The 'value' of what you want to block. Format of 'value' varies depending on type of the rule. The application categories and application ids can be retrieved from the the 'MX L7 application categories' endpoint. The countries follow the two-letter ISO 3166-1 alpha-2 format." } } }, "description": "An ordered array of the MX L7 firewall rules. Each rule is an object with 'policy', 'type', and 'value'. The 'value' shape depends on 'type': object for application/applicationCategory, string for host/port/ipRange, and an array of 2-letter ISO 3166-1 alpha-2 country codes for allowedCountries/blockedCountries. For backward compatibility, request types also accept whitelistedCountries/blacklistedCountries." } } }, "example": { "rules": [ { "policy": "deny", "type": "host", "value": "google.com" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the MX L7 firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "l7FirewallRules" ] }, "put": { "description": "Update the MX L7 firewall rules for an MX network", "operationId": "updateNetworkApplianceFirewallL7FirewallRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "enum": [ "deny" ], "description": "'Deny' traffic specified by this rule" }, "type": { "type": "string", "enum": [ "allowedCountries", "application", "applicationCategory", "blacklistedCountries", "blockedCountries", "host", "ipRange", "port", "whitelistedCountries" ], "description": "Type of the L7 rule. One of: 'application', 'applicationCategory', 'host', 'port', 'ipRange' Country variants accepted: 'allowedCountries'/'blockedCountries' (and backward-compatible 'whitelistedCountries'/'blacklistedCountries')." }, "value": { "type": "string", "description": "The 'value' of what you want to block. Format of 'value' varies depending on type of the rule. The application categories and application ids can be retrieved from the the 'MX L7 application categories' endpoint. The countries follow the two-letter ISO 3166-1 alpha-2 format." } } }, "description": "An ordered array of the MX L7 firewall rules. Each rule is an object with 'policy', 'type', and 'value'. The 'value' shape depends on 'type': object for application/applicationCategory, string for host/port/ipRange, and an array of 2-letter ISO 3166-1 alpha-2 country codes for allowedCountries/blockedCountries. For backward compatibility, request types also accept whitelistedCountries/blacklistedCountries." } }, "example": { "rules": [ { "policy": "deny", "type": "host", "value": "google.com" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "enum": [ "deny" ], "description": "'Deny' traffic specified by this rule" }, "type": { "type": "string", "enum": [ "allowedCountries", "application", "applicationCategory", "blacklistedCountries", "blockedCountries", "host", "ipRange", "port", "whitelistedCountries" ], "description": "Type of the L7 rule. One of: 'application', 'applicationCategory', 'host', 'port', 'ipRange' Country variants accepted: 'allowedCountries'/'blockedCountries' (and backward-compatible 'whitelistedCountries'/'blacklistedCountries')." }, "value": { "type": "string", "description": "The 'value' of what you want to block. Format of 'value' varies depending on type of the rule. The application categories and application ids can be retrieved from the the 'MX L7 application categories' endpoint. The countries follow the two-letter ISO 3166-1 alpha-2 format." } } }, "description": "An ordered array of the MX L7 firewall rules. Each rule is an object with 'policy', 'type', and 'value'. The 'value' shape depends on 'type': object for application/applicationCategory, string for host/port/ipRange, and an array of 2-letter ISO 3166-1 alpha-2 country codes for allowedCountries/blockedCountries. For backward compatibility, request types also accept whitelistedCountries/blacklistedCountries." } } }, "example": { "rules": [ { "policy": "deny", "type": "host", "value": "google.com" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the MX L7 firewall rules for an MX network", "tags": [ "appliance", "configure", "firewall", "l7FirewallRules" ] } }, "/networks/{networkId}/appliance/firewall/l7FirewallRules/applicationCategories": { "get": { "description": "Return the L7 firewall application categories and their associated applications for an MX network", "operationId": "getNetworkApplianceFirewallL7FirewallRulesApplicationCategories", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The id of the category" }, "name": { "type": "string", "description": "The name of the category" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The id of the application" }, "name": { "type": "string", "description": "The name of the application" } } }, "description": "Details of the associated applications" } } }, "description": " The L7 firewall application categories and their associated applications for an MX network" } } }, "example": { "applicationCategories": [ { "id": "meraki:layer7/category/24", "name": "Advertising", "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the L7 firewall application categories and their associated applications for an MX network", "tags": [ "appliance", "configure", "firewall", "l7FirewallRules", "applicationCategories" ] } }, "/networks/{networkId}/appliance/firewall/multicastForwarding": { "put": { "description": "Update static multicast forward rules for a network", "operationId": "updateNetworkApplianceFirewallMulticastForwarding", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string", "description": "Forwarding rule description." }, "address": { "type": "string", "description": "IP address" }, "vlanIds": { "type": "array", "items": { "type": "string" }, "description": "List of VLAN IDs" } }, "required": [ "description", "address", "vlanIds" ] }, "description": "Static multicast forwarding rules. Pass an empty array to clear all rules." } }, "example": { "rules": [ { "description": "test", "address": "224.0.0.1", "vlanIds": [ "1" ] } ] }, "required": [ "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network whose multicast forwarding settings are returned." }, "name": { "type": "string", "description": "Name of the network whose multicast forwarding settings are returned." } }, "required": [ "id", "name" ], "description": "Network details" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string", "description": "Forwarding rule description." }, "address": { "type": "string", "description": "IP address" }, "vlanIds": { "type": "array", "items": { "type": "string" }, "description": "List of VLAN IDs" } }, "required": [ "description", "address", "vlanIds" ] }, "description": "Static multicast forwarding rules." } }, "required": [ "network", "rules" ] }, "example": { "network": { "id": "N_24329156", "name": "Main Office" }, "rules": [ { "description": "test", "address": "224.0.0.1", "vlanIds": [ "1" ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update static multicast forward rules for a network", "tags": [ "appliance", "configure", "firewall", "multicastForwarding" ] } }, "/networks/{networkId}/appliance/firewall/oneToManyNatRules": { "get": { "description": "Return the 1:Many NAT mapping rules for an MX network", "operationId": "getNetworkApplianceFirewallOneToManyNatRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "portRules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A description of the rule" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "'tcp' or 'udp'" }, "publicPort": { "type": "string", "description": "Destination port of the traffic that is arriving on the WAN" }, "localIp": { "type": "string", "description": "Local IP address to which traffic will be forwarded" }, "localPort": { "type": "string", "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" } } }, "description": "An array of associated forwarding rules" } } }, "description": "An array of 1:Many nat rules" } } }, "example": { "rules": [ { "publicIp": "146.11.11.13", "uplink": "internet1", "portRules": [ { "name": "Rule 1", "protocol": "tcp", "publicPort": "9443", "localIp": "192.168.128.1", "localPort": "443", "allowedIps": [ "any" ] } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the 1:Many NAT mapping rules for an MX network", "tags": [ "appliance", "configure", "firewall", "oneToManyNatRules" ] }, "put": { "description": "Set the 1:Many NAT mapping rules for an MX network", "operationId": "updateNetworkApplianceFirewallOneToManyNatRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "portRules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A description of the rule" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "'tcp' or 'udp'" }, "publicPort": { "type": "string", "description": "Destination port of the traffic that is arriving on the WAN" }, "localIp": { "type": "string", "description": "Local IP address to which traffic will be forwarded" }, "localPort": { "type": "string", "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" } } }, "description": "An array of associated forwarding rules" } }, "required": [ "publicIp", "uplink", "portRules" ] }, "description": "An array of 1:Many nat rules" } }, "example": { "rules": [ { "publicIp": "146.11.11.13", "uplink": "internet1", "portRules": [ { "name": "Rule 1", "protocol": "tcp", "publicPort": "9443", "localIp": "192.168.128.1", "localPort": "443", "allowedIps": [ "any" ] } ] } ] }, "required": [ "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "portRules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A description of the rule" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "'tcp' or 'udp'" }, "publicPort": { "type": "string", "description": "Destination port of the traffic that is arriving on the WAN" }, "localIp": { "type": "string", "description": "Local IP address to which traffic will be forwarded" }, "localPort": { "type": "string", "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" } } }, "description": "An array of associated forwarding rules" } } }, "description": "An array of 1:Many nat rules" } } }, "example": { "rules": [ { "publicIp": "146.11.11.13", "uplink": "internet1", "portRules": [ { "name": "Rule 1", "protocol": "tcp", "publicPort": "9443", "localIp": "192.168.128.1", "localPort": "443", "allowedIps": [ "any" ] } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Set the 1:Many NAT mapping rules for an MX network", "tags": [ "appliance", "configure", "firewall", "oneToManyNatRules" ] } }, "/networks/{networkId}/appliance/firewall/oneToOneNatRules": { "get": { "description": "Return the 1:1 NAT mapping rules for an MX network", "operationId": "getNetworkApplianceFirewallOneToOneNatRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A descriptive name for the rule" }, "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "lanIp": { "type": "string", "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "allowedInbound": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp-ping", "tcp", "udp" ], "description": "Either of the following: 'tcp', 'udp', 'icmp-ping' or 'any'" }, "destinationPorts": { "type": "array", "items": { "type": "string" }, "description": "An array of ports or port ranges that will be forwarded to the host on the LAN" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges, or 'any'" } } }, "description": "The ports this mapping will provide access on, and the remote IPs that will be allowed access to the resource" } } }, "description": "An array of 1:1 nat rules" } } }, "example": { "rules": [ { "name": "Service behind NAT", "publicIp": "146.12.3.33", "lanIp": "192.168.128.22", "uplink": "internet1", "allowedInbound": [ { "protocol": "tcp", "destinationPorts": [ "80" ], "allowedIps": [ "10.82.112.0/24", "10.82.0.0/16" ] } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the 1:1 NAT mapping rules for an MX network", "tags": [ "appliance", "configure", "firewall", "oneToOneNatRules" ] }, "put": { "description": "Set the 1:1 NAT mapping rules for an MX network", "operationId": "updateNetworkApplianceFirewallOneToOneNatRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A descriptive name for the rule" }, "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "lanIp": { "type": "string", "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "allowedInbound": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp-ping", "tcp", "udp" ], "description": "Either of the following: 'tcp', 'udp', 'icmp-ping' or 'any'" }, "destinationPorts": { "type": "array", "items": { "type": "string" }, "description": "An array of ports or port ranges that will be forwarded to the host on the LAN" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges, or 'any'" } } }, "description": "The ports this mapping will provide access on, and the remote IPs that will be allowed access to the resource" } }, "required": [ "lanIp" ] }, "description": "An array of 1:1 nat rules" } }, "example": { "rules": [ { "name": "Service behind NAT", "publicIp": "146.12.3.33", "lanIp": "192.168.128.22", "uplink": "internet1", "allowedInbound": [ { "protocol": "tcp", "destinationPorts": [ "80" ], "allowedIps": [ "10.82.112.0/24", "10.82.0.0/16" ] } ] } ] }, "required": [ "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A descriptive name for the rule" }, "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, "lanIp": { "type": "string", "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" }, "uplink": { "type": "string", "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "allowedInbound": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp-ping", "tcp", "udp" ], "description": "Either of the following: 'tcp', 'udp', 'icmp-ping' or 'any'" }, "destinationPorts": { "type": "array", "items": { "type": "string" }, "description": "An array of ports or port ranges that will be forwarded to the host on the LAN" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges, or 'any'" } } }, "description": "The ports this mapping will provide access on, and the remote IPs that will be allowed access to the resource" } } }, "description": "An array of 1:1 nat rules" } } }, "example": { "rules": [ { "name": "Service behind NAT", "publicIp": "146.12.3.33", "lanIp": "192.168.128.22", "uplink": "internet1", "allowedInbound": [ { "protocol": "tcp", "destinationPorts": [ "80" ], "allowedIps": [ "10.82.112.0/24", "10.82.0.0/16" ] } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Set the 1:1 NAT mapping rules for an MX network", "tags": [ "appliance", "configure", "firewall", "oneToOneNatRules" ] } }, "/networks/{networkId}/appliance/firewall/portForwardingRules": { "get": { "description": "Return the port forwarding rules for an MX network", "operationId": "getNetworkApplianceFirewallPortForwardingRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "lanIp": { "type": "string", "description": "IP address of the device subject to port forwarding" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges (or any)" }, "name": { "type": "string", "description": "Name of the rule" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "Protocol the rule applies to" }, "publicPort": { "type": "string", "description": "The port or port range forwarded to the host on the LAN" }, "localPort": { "type": "string", "description": "The port or port range that receives forwarded traffic from the WAN" }, "uplink": { "type": "string", "enum": [ "all", "both", "internet1", "internet2", "internet3", "internet4" ], "description": "The physical WAN interface on which the traffic arrives; allowed values vary by appliance model and configuration" } } }, "description": "An array of port forwarding rules" } } }, "example": { "rules": [ { "lanIp": "192.168.128.1", "allowedIps": [ "any" ], "name": "Description of Port Forwarding Rule", "protocol": "tcp", "publicPort": "8100-8101", "localPort": "442-443", "uplink": "both" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the port forwarding rules for an MX network", "tags": [ "appliance", "configure", "firewall", "portForwardingRules" ] }, "put": { "description": "Update the port forwarding rules for an MX network", "operationId": "updateNetworkApplianceFirewallPortForwardingRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "A descriptive name for the rule" }, "lanIp": { "type": "string", "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" }, "uplink": { "type": "string", "enum": [ "all", "both", "internet1", "internet2", "internet3", "internet4" ], "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2' or 'both')" }, "publicPort": { "type": "string", "description": "A port or port ranges that will be forwarded to the host on the LAN" }, "localPort": { "type": "string", "description": "A port or port ranges that will receive the forwarded traffic from the WAN" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges (or any)" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "TCP or UDP" } }, "required": [ "lanIp", "publicPort", "localPort", "allowedIps", "protocol" ] }, "description": "An array of port forwarding params" } }, "example": { "rules": [ { "name": "Description of Port Forwarding Rule", "lanIp": "192.168.128.1", "uplink": "both", "publicPort": "8100-8101", "localPort": "442-443", "allowedIps": [ "any" ], "protocol": "tcp" } ] }, "required": [ "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "lanIp": { "type": "string", "description": "IP address of the device subject to port forwarding" }, "allowedIps": { "type": "array", "items": { "type": "string" }, "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges (or any)" }, "name": { "type": "string", "description": "Name of the rule" }, "protocol": { "type": "string", "enum": [ "tcp", "udp" ], "description": "Protocol the rule applies to" }, "publicPort": { "type": "string", "description": "The port or port range forwarded to the host on the LAN" }, "localPort": { "type": "string", "description": "The port or port range that receives forwarded traffic from the WAN" }, "uplink": { "type": "string", "enum": [ "all", "both", "internet1", "internet2", "internet3", "internet4" ], "description": "The physical WAN interface on which the traffic arrives; allowed values vary by appliance model and configuration" } } }, "description": "An array of port forwarding rules" } } }, "example": { "rules": [ { "lanIp": "192.168.128.1", "allowedIps": [ "any" ], "name": "Description of Port Forwarding Rule", "protocol": "tcp", "publicPort": "8100-8101", "localPort": "442-443", "uplink": "both" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the port forwarding rules for an MX network", "tags": [ "appliance", "configure", "firewall", "portForwardingRules" ] } }, "/networks/{networkId}/appliance/firewall/settings": { "get": { "description": "Return the firewall settings for this network", "operationId": "getNetworkApplianceFirewallSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "spoofingProtection": { "type": "object", "properties": { "ipSourceGuard": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "block", "log" ], "description": "Mode of protection" } }, "description": "IP source address spoofing settings" } }, "description": "Spoofing protection settings" } } }, "example": { "spoofingProtection": { "ipSourceGuard": { "mode": "block" } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the firewall settings for this network", "tags": [ "appliance", "configure", "firewall", "settings" ] }, "put": { "description": "Update the firewall settings for this network", "operationId": "updateNetworkApplianceFirewallSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "spoofingProtection": { "type": "object", "properties": { "ipSourceGuard": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "block", "log" ], "description": "Mode of protection" } }, "description": "IP source address spoofing settings" } }, "description": "Spoofing protection settings" } }, "example": { "spoofingProtection": { "ipSourceGuard": { "mode": "block" } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "spoofingProtection": { "type": "object", "properties": { "ipSourceGuard": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "block", "log" ], "description": "Mode of protection" } }, "description": "IP source address spoofing settings" } }, "description": "Spoofing protection settings" } } }, "example": { "spoofingProtection": { "ipSourceGuard": { "mode": "block" } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the firewall settings for this network", "tags": [ "appliance", "configure", "firewall", "settings" ] } }, "/networks/{networkId}/appliance/interfaces/l3": { "post": { "description": "Create wired L3 interface", "operationId": "createNetworkApplianceInterfacesL3", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "port": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Read-only full interface name for the port" }, "slot": { "type": "integer", "description": "Slot number for the port" }, "subslot": { "type": "integer", "description": "Subslot number for the port" }, "number": { "type": "integer", "description": "Leaf port number for the port" } }, "required": [ "slot", "subslot", "number" ], "description": "Structured interface identifier for the port being modified" } }, "description": "Port configuration" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address" }, "subnet": { "type": "string", "description": "IPv4 subnet in CIDR notation" } }, "description": "IPv4 configuration" } }, "example": { "port": { "interface": { "name": "GigabitEthernet0/0/1", "slot": 0, "subslot": 0, "number": 1 } }, "ipv4": { "address": "192.0.2.1", "subnet": "192.0.2.0/24" } }, "required": [ "ipv4" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address" }, "subnet": { "type": "string", "description": "IPv4 subnet in CIDR notation" } }, "description": "IPv4 configuration" }, "port": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Read-only full interface name for the port", "nullable": true }, "slot": { "type": "integer", "description": "Slot number for the port", "nullable": true }, "subslot": { "type": "integer", "description": "Subslot number for the port", "nullable": true }, "number": { "type": "integer", "description": "Leaf port number for the port", "nullable": true } }, "description": "Structured interface identifier for the port" } }, "description": "Port configuration" } } }, "example": { "interfaceId": "1234", "ipv4": { "address": "192.168.1.2", "subnet": "192.168.1.0/24" }, "port": { "interface": { "name": "GigabitEthernet0/0/1", "slot": 0, "subslot": 0, "number": 1 } } } } } } }, "summary": "Create wired L3 interface", "tags": [ "appliance", "configure", "interfaces", "l3" ] } }, "/networks/{networkId}/appliance/interfaces/l3/{interfaceId}": { "put": { "description": "Update wired L3 interface", "operationId": "updateNetworkApplianceInterfacesL3", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "port": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Read-only full interface name for the port", "nullable": true }, "slot": { "type": "integer", "description": "Slot number for the port", "nullable": true }, "subslot": { "type": "integer", "description": "Subslot number for the port", "nullable": true }, "number": { "type": "integer", "description": "Leaf port number for the port", "nullable": true } }, "required": [ "slot", "subslot", "number" ], "description": "Structured interface identifier for the port being modified" } }, "description": "Port configuration" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address" }, "subnet": { "type": "string", "description": "IPv4 subnet in CIDR notation" } }, "description": "IPv4 configuration" } }, "example": { "port": { "interface": { "name": "GigabitEthernet0/0/1", "slot": 0, "subslot": 0, "number": 1 } }, "ipv4": { "address": "192.0.2.1", "subnet": "192.0.2.0/24" } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address" }, "subnet": { "type": "string", "description": "IPv4 subnet in CIDR notation" } }, "description": "IPv4 configuration" }, "port": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Read-only full interface name for the port", "nullable": true }, "slot": { "type": "integer", "description": "Slot number for the port", "nullable": true }, "subslot": { "type": "integer", "description": "Subslot number for the port", "nullable": true }, "number": { "type": "integer", "description": "Leaf port number for the port", "nullable": true } }, "description": "Structured interface identifier for the port" } }, "description": "Port configuration" } } }, "example": { "interfaceId": "1234", "ipv4": { "address": "192.168.1.2", "subnet": "192.168.1.0/24" }, "port": { "interface": { "name": "GigabitEthernet0/0/1", "slot": 0, "subslot": 0, "number": 1 } } } } } } }, "summary": "Update wired L3 interface", "tags": [ "appliance", "configure", "interfaces", "l3" ] }, "delete": { "description": "Delete wired L3 interface", "operationId": "deleteNetworkApplianceInterfacesL3", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete wired L3 interface", "tags": [ "appliance", "configure", "interfaces", "l3" ] } }, "/networks/{networkId}/appliance/ports": { "get": { "description": "List per-port VLAN settings for all ports of a secure router or security appliance.", "operationId": "getNetworkAppliancePorts", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "integer", "description": "Number of the port" }, "enabled": { "type": "boolean", "description": "The status of the port" }, "type": { "type": "string", "description": "The type of the port: 'access' or 'trunk'." }, "dropUntaggedTraffic": { "type": "boolean", "description": "Whether the trunk port can drop all untagged traffic." }, "vlan": { "type": "integer", "description": "Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode." }, "allowedVlans": { "type": "string", "description": "Comma-delimited list of VLAN IDs and/or ranges (for example, '2-10,15'), or 'all' to permit all VLANs on the port." }, "accessPolicy": { "type": "string", "description": "The name of the policy. Only applicable to Access ports." }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this port is assigned to.", "nullable": true }, "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic through this port." } }, "description": "Security Group Tag settings for the port." } } } }, "example": [ { "number": 1, "enabled": true, "type": "access", "dropUntaggedTraffic": false, "vlan": 3, "allowedVlans": "all", "accessPolicy": "open", "sgt": { "id": 1234, "enabled": true } } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List per-port VLAN settings for all ports of a secure router or security appliance.", "tags": [ "appliance", "configure", "ports" ] } }, "/networks/{networkId}/appliance/ports/{portId}": { "get": { "description": "Return per-port VLAN settings for a single secure router or security appliance port.", "operationId": "getNetworkAppliancePort", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "portId", "in": "path", "description": "Port ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "number": { "type": "integer", "description": "Number of the port" }, "enabled": { "type": "boolean", "description": "The status of the port" }, "type": { "type": "string", "description": "The type of the port: 'access' or 'trunk'." }, "dropUntaggedTraffic": { "type": "boolean", "description": "Whether the trunk port can drop all untagged traffic." }, "vlan": { "type": "integer", "description": "Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode." }, "allowedVlans": { "type": "string", "description": "Comma-delimited list of VLAN IDs and/or ranges (for example, '2-10,15'), or 'all' to permit all VLANs on the port." }, "accessPolicy": { "type": "string", "description": "The name of the policy. Only applicable to Access ports." }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this port is assigned to.", "nullable": true }, "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic through this port." } }, "description": "Security Group Tag settings for the port." } } }, "example": { "number": 1, "enabled": true, "type": "access", "dropUntaggedTraffic": false, "vlan": 3, "allowedVlans": "all", "accessPolicy": "open", "sgt": { "id": 1234, "enabled": true } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return per-port VLAN settings for a single secure router or security appliance port.", "tags": [ "appliance", "configure", "ports" ] }, "put": { "description": "Update the per-port VLAN settings for a single secure router or security appliance port.", "operationId": "updateNetworkAppliancePort", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "portId", "in": "path", "description": "Port ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The status of the port" }, "dropUntaggedTraffic": { "type": "boolean", "description": "Trunk port can Drop all Untagged traffic. When true, no VLAN is required. Access ports cannot have dropUntaggedTraffic set to true." }, "type": { "type": "string", "description": "The type of the port: 'access' or 'trunk'." }, "vlan": { "type": "integer", "description": "Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode." }, "allowedVlans": { "type": "string", "description": "Comma-delimited list of VLAN IDs (e.g. '2,15') for all devices. Secure Routers also support VLAN ranges (e.g. '2-10,15'). Use 'all' to permit all VLANs on the port." }, "accessPolicy": { "type": "string", "description": "The name of the policy. Only applicable to Access ports. Valid values are: 'open', '8021x-radius', 'mac-radius', 'hybris-radius' for MX64 or Z3 or any MX supporting the per port authentication feature. Otherwise, 'open' is the only valid value and 'open' is the default value if the field is missing." }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this port is assigned to.", "nullable": true }, "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic through this port." } }, "description": "Security Group Tag settings for the port." } }, "example": { "enabled": true, "dropUntaggedTraffic": false, "type": "access", "vlan": 3, "allowedVlans": "all", "accessPolicy": "open", "sgt": { "id": 1234, "enabled": true } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "number": { "type": "integer", "description": "Number of the port" }, "enabled": { "type": "boolean", "description": "The status of the port" }, "type": { "type": "string", "description": "The type of the port: 'access' or 'trunk'." }, "dropUntaggedTraffic": { "type": "boolean", "description": "Whether the trunk port can drop all untagged traffic." }, "vlan": { "type": "integer", "description": "Native VLAN when the port is in Trunk mode. Access VLAN when the port is in Access mode." }, "allowedVlans": { "type": "string", "description": "Comma-delimited list of VLAN IDs and/or ranges (for example, '2-10,15'), or 'all' to permit all VLANs on the port." }, "accessPolicy": { "type": "string", "description": "The name of the policy. Only applicable to Access ports." }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this port is assigned to.", "nullable": true }, "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic through this port." } }, "description": "Security Group Tag settings for the port." } } }, "example": { "number": 1, "enabled": true, "type": "access", "dropUntaggedTraffic": false, "vlan": 3, "allowedVlans": "all", "accessPolicy": "open", "sgt": { "id": 1234, "enabled": true } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the per-port VLAN settings for a single secure router or security appliance port.", "tags": [ "appliance", "configure", "ports" ] } }, "/networks/{networkId}/appliance/prefixes/delegated/statics": { "get": { "description": "List static delegated prefixes for a network", "operationId": "getNetworkAppliancePrefixesDelegatedStatics", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "staticDelegatedPrefixId": { "type": "string", "description": "Static delegated prefix id." }, "prefix": { "type": "string", "description": "IPv6 prefix/prefix length." }, "origin": { "type": "object", "properties": { "type": { "type": "string", "description": "Origin type" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Uplink provided or independent" } }, "description": "WAN1/WAN2/Independent prefix." }, "description": { "type": "string", "description": "Identifying description for the prefix.", "nullable": true }, "createdAt": { "type": "string", "format": "date-time", "description": "Prefix creation time." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Prefix Updated time." } } } }, "example": [ { "staticDelegatedPrefixId": "1284392014819", "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z" } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List static delegated prefixes for a network", "tags": [ "appliance", "configure", "prefixes", "delegated", "statics" ] }, "post": { "description": "Add a static delegated prefix from a network", "operationId": "createNetworkAppliancePrefixesDelegatedStatic", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "prefix": { "type": "string", "description": "A static IPv6 prefix" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix. Required when origin type is internet." } }, "description": "The origin of the prefix" }, "description": { "type": "string", "description": "A name or description for the prefix" } }, "example": { "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network" }, "required": [ "prefix", "origin" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticDelegatedPrefixId": { "type": "string", "description": "Static delegated prefix id." }, "prefix": { "type": "string", "description": "IPv6 prefix/prefix length." }, "origin": { "type": "object", "properties": { "type": { "type": "string", "description": "Origin type" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Uplink provided or independent" } }, "description": "WAN1/WAN2/Independent prefix." }, "description": { "type": "string", "description": "Identifying description for the prefix.", "nullable": true }, "createdAt": { "type": "string", "format": "date-time", "description": "Prefix creation time." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Prefix Updated time." } } }, "example": { "staticDelegatedPrefixId": "1284392014819", "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Add a static delegated prefix from a network", "tags": [ "appliance", "configure", "prefixes", "delegated", "statics" ] } }, "/networks/{networkId}/appliance/prefixes/delegated/statics/{staticDelegatedPrefixId}": { "get": { "description": "Return a static delegated prefix from a network", "operationId": "getNetworkAppliancePrefixesDelegatedStatic", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticDelegatedPrefixId", "in": "path", "description": "Static delegated prefix ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticDelegatedPrefixId": { "type": "string", "description": "Static delegated prefix id." }, "prefix": { "type": "string", "description": "IPv6 prefix/prefix length." }, "origin": { "type": "object", "properties": { "type": { "type": "string", "description": "Origin type" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Uplink provided or independent" } }, "description": "WAN1/WAN2/Independent prefix." }, "description": { "type": "string", "description": "Identifying description for the prefix.", "nullable": true }, "createdAt": { "type": "string", "format": "date-time", "description": "Prefix creation time." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Prefix Updated time." } } }, "example": { "staticDelegatedPrefixId": "1284392014819", "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a static delegated prefix from a network", "tags": [ "appliance", "configure", "prefixes", "delegated", "statics" ] }, "put": { "description": "Update a static delegated prefix from a network", "operationId": "updateNetworkAppliancePrefixesDelegatedStatic", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticDelegatedPrefixId", "in": "path", "description": "Static delegated prefix ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "prefix": { "type": "string", "description": "A static IPv6 prefix" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix. Required when origin type is internet." } }, "description": "The origin of the prefix" }, "description": { "type": "string", "description": "A name or description for the prefix" } }, "example": { "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticDelegatedPrefixId": { "type": "string", "description": "Static delegated prefix id." }, "prefix": { "type": "string", "description": "IPv6 prefix/prefix length." }, "origin": { "type": "object", "properties": { "type": { "type": "string", "description": "Origin type" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Uplink provided or independent" } }, "description": "WAN1/WAN2/Independent prefix." }, "description": { "type": "string", "description": "Identifying description for the prefix.", "nullable": true }, "createdAt": { "type": "string", "format": "date-time", "description": "Prefix creation time." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Prefix Updated time." } } }, "example": { "staticDelegatedPrefixId": "1284392014819", "prefix": "2001:db8:3c4d:15::/64", "origin": { "type": "internet", "interfaces": [ "wan1" ] }, "description": "Prefix on WAN 1 of Long Island Office network", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a static delegated prefix from a network", "tags": [ "appliance", "configure", "prefixes", "delegated", "statics" ] }, "delete": { "description": "Delete a static delegated prefix from a network", "operationId": "deleteNetworkAppliancePrefixesDelegatedStatic", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticDelegatedPrefixId", "in": "path", "description": "Static delegated prefix ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object" }, "example": {} } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Delete a static delegated prefix from a network", "tags": [ "appliance", "configure", "prefixes", "delegated", "statics" ] } }, "/networks/{networkId}/appliance/rfProfiles": { "get": { "description": "List the RF profiles for this network", "operationId": "getNetworkApplianceRfProfiles", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "assigned": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the RF Profile." }, "networkId": { "type": "string", "description": "ID of network this RF Profile belongs in." }, "name": { "type": "string", "description": "The name of the profile." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 2.4Ghz band is on or off." } }, "description": "Settings related to 2.4Ghz band." }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 5Ghz band is on or off." } }, "description": "Settings related to 5Ghz band." }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 1." }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 2." }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 3." }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 4." } }, "description": "Per-SSID radio settings by number." } } }, "description": "RF Profiles" } } }, "example": { "assigned": [ { "id": "1234", "networkId": "N_24329156", "name": "Some Custom RF Profile", "twoFourGhzSettings": { "minBitrate": 11.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 12, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the RF profiles for this network", "tags": [ "appliance", "configure", "rfProfiles" ] }, "post": { "description": "Creates new RF profile for this network", "operationId": "createNetworkApplianceRfProfile", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the new profile. Must be unique. This param is required on creation." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Sets min bitrate (Mbps) of 2.4Ghz band. Can be one of '1', '2', '5.5', '6', '9', '11', '12', '18', '24', '36', '48' or '54'. Defaults to 11." }, "axEnabled": { "type": "boolean", "description": "Determines whether ax radio on 2.4Ghz band is on or off. Can be either true or false. If false, we highly recommend disabling band steering. Defaults to true." } }, "description": "Settings related to 2.4Ghz band" }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Sets min bitrate (Mbps) of 5Ghz band. Can be one of '6', '9', '12', '18', '24', '36', '48' or '54'. Defaults to 12." }, "axEnabled": { "type": "boolean", "description": "Determines whether ax radio on 5GHz band is on or off. Can be either true or false. If false, we highly recommend disabling band steering. Defaults to true." } }, "description": "Settings related to 5Ghz band" }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 1" }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 2" }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 3" }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 4" } }, "description": "Per-SSID radio settings by number." } }, "example": { "name": "MX RF Profile", "twoFourGhzSettings": { "minBitrate": 12.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 48, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the RF Profile." }, "networkId": { "type": "string", "description": "ID of network this RF Profile belongs in." }, "name": { "type": "string", "description": "The name of the profile." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 2.4Ghz band is on or off." } }, "description": "Settings related to 2.4Ghz band." }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 5Ghz band is on or off." } }, "description": "Settings related to 5Ghz band." }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 1." }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 2." }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 3." }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 4." } }, "description": "Per-SSID radio settings by number." } } }, "example": { "id": "1234", "networkId": "N_24329156", "name": "Some Custom RF Profile", "twoFourGhzSettings": { "minBitrate": 11.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 12, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Creates new RF profile for this network", "tags": [ "appliance", "configure", "rfProfiles" ] } }, "/networks/{networkId}/appliance/rfProfiles/{rfProfileId}": { "put": { "description": "Updates specified RF profile for this network", "operationId": "updateNetworkApplianceRfProfile", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rfProfileId", "in": "path", "description": "Rf profile ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the new profile. Must be unique." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Sets min bitrate (Mbps) of 2.4Ghz band. Can be one of '1', '2', '5.5', '6', '9', '11', '12', '18', '24', '36', '48' or '54'." }, "axEnabled": { "type": "boolean", "description": "Determines whether ax radio on 2.4Ghz band is on or off. Can be either true or false. If false, we highly recommend disabling band steering." } }, "description": "Settings related to 2.4Ghz band" }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Sets min bitrate (Mbps) of 5Ghz band. Can be one of '6', '9', '12', '18', '24', '36', '48' or '54'." }, "axEnabled": { "type": "boolean", "description": "Determines whether ax radio on 5GHz band is on or off. Can be either true or false. If false, we highly recommend disabling band steering." } }, "description": "Settings related to 5Ghz band" }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 1" }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 2" }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 3" }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "enum": [ "2.4ghz", "5ghz", "6ghz", "dual", "multi" ], "description": "Choice between 'dual', '2.4ghz', '5ghz', '6ghz' or 'multi'." }, "bandSteeringEnabled": { "type": "boolean", "description": "Steers client to most open band between 2.4 GHz and 5 GHz. Can be either true or false." } }, "description": "Settings for SSID 4" } }, "description": "Per-SSID radio settings by number." } }, "example": { "name": "MX RF Profile", "twoFourGhzSettings": { "minBitrate": 12.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 48, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the RF Profile." }, "networkId": { "type": "string", "description": "ID of network this RF Profile belongs in." }, "name": { "type": "string", "description": "The name of the profile." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 2.4Ghz band is on or off." } }, "description": "Settings related to 2.4Ghz band." }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 5Ghz band is on or off." } }, "description": "Settings related to 5Ghz band." }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 1." }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 2." }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 3." }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 4." } }, "description": "Per-SSID radio settings by number." } } }, "example": { "id": "1234", "networkId": "N_24329156", "name": "Some Custom RF Profile", "twoFourGhzSettings": { "minBitrate": 11.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 12, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Updates specified RF profile for this network", "tags": [ "appliance", "configure", "rfProfiles" ] }, "delete": { "description": "Delete a RF Profile", "operationId": "deleteNetworkApplianceRfProfile", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rfProfileId", "in": "path", "description": "Rf profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Delete a RF Profile", "tags": [ "appliance", "configure", "rfProfiles" ] }, "get": { "description": "Return a RF profile", "operationId": "getNetworkApplianceRfProfile", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rfProfileId", "in": "path", "description": "Rf profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the RF Profile." }, "networkId": { "type": "string", "description": "ID of network this RF Profile belongs in." }, "name": { "type": "string", "description": "The name of the profile." }, "twoFourGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "number", "format": "float", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 2.4Ghz band is on or off." } }, "description": "Settings related to 2.4Ghz band." }, "fiveGhzSettings": { "type": "object", "properties": { "minBitrate": { "type": "integer", "description": "Min bitrate (Mbps) of 2.4Ghz band." }, "axEnabled": { "type": "boolean", "description": "Whether ax radio on 5Ghz band is on or off." } }, "description": "Settings related to 5Ghz band." }, "perSsidSettings": { "type": "object", "properties": { "1": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 1." }, "2": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 2." }, "3": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 3." }, "4": { "type": "object", "properties": { "bandOperationMode": { "type": "string", "description": "Band mode of this SSID" }, "bandSteeringEnabled": { "type": "boolean", "description": "Whether this SSID steers clients to the most open band between 2.4 GHz and 5 GHz." } }, "description": "Settings for SSID 4." } }, "description": "Per-SSID radio settings by number." } } }, "example": { "id": "1234", "networkId": "N_24329156", "name": "Some Custom RF Profile", "twoFourGhzSettings": { "minBitrate": 11.0, "axEnabled": true }, "fiveGhzSettings": { "minBitrate": 12, "axEnabled": true }, "perSsidSettings": { "1": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "2": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "3": { "bandOperationMode": "dual", "bandSteeringEnabled": true }, "4": { "bandOperationMode": "dual", "bandSteeringEnabled": true } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a RF profile", "tags": [ "appliance", "configure", "rfProfiles" ] } }, "/networks/{networkId}/appliance/sdwan/internetPolicies": { "put": { "description": "Update SDWAN internet traffic preferences for an MX network", "operationId": "updateNetworkApplianceSdwanInternetPolicies", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "wanTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1', 'wan2', 'bestForVoIP', 'loadBalancing', 'defaultUplink' or 'cellular'" }, "failOverCriterion": { "type": "string", "enum": [ "poorPerformance", "uplinkDown" ], "description": "WAN failover and failback behavior" }, "performanceClass": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "builtin", "custom" ], "description": "Type of this performance class. Must be one of: 'builtin' or 'custom'", "nullable": true }, "builtinPerformanceClassName": { "type": "string", "enum": [ "VoIP" ], "description": "Name of builtin performance class. Must be present when performanceClass type is 'builtin' and value must be one of: 'VoIP'", "nullable": true }, "customPerformanceClassId": { "type": "string", "description": "ID of created custom performance class, must be present when performanceClass type is \"custom\"", "nullable": true } }, "description": "Performance class setting for uplink preference rule" }, "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "custom", "majorApplication" ], "description": "Traffic filter type. Must be 'custom', 'major_application', 'application (NBAR)', if type is 'application', you can pass either an NBAR App Category or Application" }, "value": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp6", "tcp", "udp" ], "description": "Protocol of the traffic filter. Must be one of: 'tcp', 'udp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"", "nullable": true }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\"", "nullable": true }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the major application, or a list of NBAR Application Category or Application selections", "nullable": true }, "name": { "type": "string", "description": "Name of the major application or application category selected", "nullable": true }, "type": { "type": "string", "description": "app type (major or nbar)", "nullable": true } } }, "description": "list of application objects (either majorApplication or nbar)", "nullable": true } }, "description": "Destination of 'custom' type traffic filter" } }, "required": [ "source", "destination" ], "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" } }, "required": [ "preferredUplink", "trafficFilters" ] }, "description": "policies with respective traffic filters for an MX network" } }, "example": { "wanTrafficUplinkPreferences": [ { "preferredUplink": "wan1", "failOverCriterion": "poorPerformance", "performanceClass": { "type": "custom", "builtinPerformanceClassName": "VoIP", "customPerformanceClassId": "123456" }, "trafficFilters": [ { "type": "custom", "value": { "protocol": "tcp", "source": { "port": "1-1024", "cidr": "192.168.1.0/24", "vlan": 10, "host": 254 }, "destination": { "port": "any", "cidr": "any", "applications": [ { "id": "meraki:layer7/application/3", "name": "DNS", "type": "major" } ] } } } ] } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "wanTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1', 'wan2', 'bestForVoIP', 'loadBalancing', 'defaultUplink' or 'cellular'" }, "failOverCriterion": { "type": "string", "enum": [ "poorPerformance", "uplinkDown" ], "description": "WAN failover and failback behavior" }, "performanceClass": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "builtin", "custom" ], "description": "Type of this performance class. Must be one of: 'builtin' or 'custom'", "nullable": true }, "builtinPerformanceClassName": { "type": "string", "enum": [ "VoIP" ], "description": "Name of builtin performance class. Must be present when performanceClass type is 'builtin' and value must be one of: 'VoIP'", "nullable": true }, "customPerformanceClassId": { "type": "string", "description": "ID of created custom performance class, must be present when performanceClass type is \"custom\"", "nullable": true } }, "description": "Performance class setting for uplink preference rule" }, "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "custom", "majorApplication" ], "description": "Traffic filter type. Must be 'custom', 'major_application', 'application (NBAR)', if type is 'application', you can pass either an NBAR App Category or Application" }, "value": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp6", "tcp", "udp" ], "description": "Protocol of the traffic filter. Must be one of: 'tcp', 'udp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"", "nullable": true }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\"", "nullable": true }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the major application, or a list of NBAR Application Category or Application selections", "nullable": true }, "name": { "type": "string", "description": "Name of the major application or application category selected", "nullable": true }, "type": { "type": "string", "description": "app type (major or nbar)", "nullable": true } } }, "description": "list of application objects (either majorApplication or nbar)", "nullable": true } }, "description": "Destination of 'custom' type traffic filter" } }, "required": [ "source", "destination" ], "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" } }, "required": [ "preferredUplink", "trafficFilters" ] }, "description": "policies with respective traffic filters for an MX network" } } }, "example": { "wanTrafficUplinkPreferences": [ { "preferredUplink": "wan1", "failOverCriterion": "poorPerformance", "performanceClass": { "type": "custom", "builtinPerformanceClassName": "VoIP", "customPerformanceClassId": "123456" }, "trafficFilters": [ { "type": "custom", "value": { "protocol": "tcp", "source": { "port": "1-1024", "cidr": "192.168.1.0/24", "vlan": 10, "host": 254 }, "destination": { "port": "any", "cidr": "any", "applications": [ { "id": "meraki:layer7/application/3", "name": "DNS", "type": "major" } ] } } } ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update SDWAN internet traffic preferences for an MX network", "tags": [ "appliance", "configure", "sdwan", "internetPolicies" ] } }, "/networks/{networkId}/appliance/security/events": { "get": { "description": "List the security events for a network", "operationId": "getNetworkApplianceSecurityEvents", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. Data is gathered after the specified t0 value. The maximum lookback period is 365 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 365 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 365 days. The default is 31 days.", "schema": { "type": "number", "format": "float", "maximum": 31536000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of security events based on event detection time. Order options are 'ascending' or 'descending'. Default is ascending order.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "example": [ { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "File Scanned", "clientName": "COMPUTER-M-V78J", "clientMac": "10:dd:b1:eb:88:f8", "clientIp": "192.168.128.2", "srcIp": "192.168.128.2", "destIp": "119.192.233.48", "protocol": "http", "uri": "http://www.favorite-icons.com/program/FavoriteIconsUninstall.exe", "canonicalName": "PUA.Win.Dropper.Kraddare::1201", "destinationPort": 80, "fileHash": "3ec1b9a95fe62aa25fc959643a0f227b76d253094681934daaf628d3574b3463", "fileType": "MS_EXE", "fileSizeBytes": 193688, "disposition": "Malicious", "action": "Blocked" }, { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "IDS Alert", "deviceMac": "00:18:0a:01:02:03", "clientMac": "A1:B2:C3:D4:E5:F6", "srcIp": "1.2.3.4:34195", "destIp": "10.20.30.40:80", "protocol": "tcp/ip", "priority": "2", "classification": "4", "blocked": true, "message": "SERVER-WEBAPP JBoss JMX console access attempt", "signature": "1:21516:9", "sigSource": "", "ruleId": "meraki:intrusion/snort/GID/1/SID/26267" } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "List the security events for a network", "tags": [ "appliance", "monitor", "security", "events" ] } }, "/networks/{networkId}/appliance/security/intrusion": { "get": { "description": "Returns all supported intrusion settings for an MX network", "operationId": "getNetworkApplianceSecurityIntrusion", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "detection", "disabled", "prevention" ], "description": "Intrusion detection mode" }, "idsRulesets": { "type": "string", "description": "Intrusion detection ruleset" }, "protectedNetworks": { "type": "object", "properties": { "useDefault": { "type": "boolean", "description": "Whether special IPv4 addresses should be used (see: https://tools.ietf.org/html/rfc5735)" }, "includedCidr": { "type": "array", "items": { "type": "string" }, "description": "List of IP addresses or subnets being protected" }, "excludedCidr": { "type": "array", "items": { "type": "string" }, "description": "List of IP addresses or subnets being excluded from protection" } }, "description": "Networks included in and excluded from the detection engine" } } }, "example": { "mode": "prevention", "idsRulesets": "balanced", "protectedNetworks": { "useDefault": false, "includedCidr": [ "10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12" ], "excludedCidr": [ "10.0.0.0/8", "127.0.0.0/8" ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Returns all supported intrusion settings for an MX network", "tags": [ "appliance", "configure", "security", "intrusion" ] }, "put": { "description": "Set the supported intrusion settings for an MX network", "operationId": "updateNetworkApplianceSecurityIntrusion", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "detection", "disabled", "prevention" ], "description": "Set mode to 'disabled'/'detection'/'prevention' (optional - omitting will leave current config unchanged)" }, "idsRulesets": { "type": "string", "enum": [ "balanced", "connectivity", "security" ], "description": "Set the detection ruleset 'connectivity'/'balanced'/'security' (optional - omitting will leave current config unchanged). Default value is 'balanced' if none currently saved" }, "protectedNetworks": { "type": "object", "properties": { "useDefault": { "type": "boolean", "description": "true/false whether to use special IPv4 addresses: https://tools.ietf.org/html/rfc5735 (required). Default value is true if none currently saved" }, "includedCidr": { "type": "array", "items": { "type": "string" }, "description": "list of IP addresses or subnets being protected (required if 'useDefault' is false)" }, "excludedCidr": { "type": "array", "items": { "type": "string" }, "description": "list of IP addresses or subnets being excluded from protection (required if 'useDefault' is false)" } }, "description": "Set the included/excluded networks from the intrusion engine (optional - omitting will leave current config unchanged). This is available only in 'passthrough' mode" } }, "example": { "mode": "prevention", "idsRulesets": "balanced", "protectedNetworks": { "useDefault": false, "includedCidr": [ "10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12" ], "excludedCidr": [ "10.0.0.0/8", "127.0.0.0/8" ] } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "Intrusion detection mode" }, "idsRulesets": { "type": "string", "description": "Intrusion detection ruleset" }, "protectedNetworks": { "type": "object", "properties": { "useDefault": { "type": "boolean", "description": "Whether special IPv4 addresses should be used (see: https://tools.ietf.org/html/rfc5735)" }, "includedCidr": { "type": "array", "items": { "type": "string" }, "description": "List of IP addresses or subnets being protected" }, "excludedCidr": { "type": "array", "items": { "type": "string" }, "description": "List of IP addresses or subnets being excluded from protection" } }, "description": "Networks included in and excluded from the detection engine" } } }, "example": { "mode": "prevention", "idsRulesets": "balanced", "protectedNetworks": { "useDefault": false, "includedCidr": [ "10.0.0.0/8", "127.0.0.0/8", "169.254.0.0/16", "172.16.0.0/12" ], "excludedCidr": [ "10.0.0.0/8", "127.0.0.0/8" ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Set the supported intrusion settings for an MX network", "tags": [ "appliance", "configure", "security", "intrusion" ] } }, "/networks/{networkId}/appliance/security/malware": { "get": { "description": "Returns all supported malware settings for an MX network", "operationId": "getNetworkApplianceSecurityMalware", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "Current status of malware prevention" }, "allowedUrls": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "The allowed URL" }, "comment": { "type": "string", "description": "Comment about the allowed URL" } } }, "description": "URLs permitted by the malware detection engine" }, "allowedFiles": { "type": "array", "items": { "type": "object", "properties": { "sha256": { "type": "string", "description": "The sha256 digest of allowed file" }, "comment": { "type": "string", "description": "Comment about the allowed file" } } }, "description": "Sha256 digests of files permitted by the malware detection engine" } } }, "example": { "mode": "enabled", "allowedUrls": [ { "url": "help.com.au", "comment": "allow help.com.au" } ], "allowedFiles": [ { "sha256": "e82c5f7d75004727e1f3b94426b9a11c8bc4c312a9170ac9a73abace40aef503", "comment": "allow ZIP file" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Returns all supported malware settings for an MX network", "tags": [ "appliance", "configure", "security", "malware" ] }, "put": { "description": "Set the supported malware settings for an MX network", "operationId": "updateNetworkApplianceSecurityMalware", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "disabled", "enabled" ], "description": "Set mode to 'enabled' to enable malware prevention, otherwise 'disabled'" }, "allowedUrls": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "The url to allow" }, "comment": { "type": "string", "description": "Comment about the allowed entity" } }, "required": [ "url", "comment" ] }, "description": "The urls that should be permitted by the malware detection engine. If omitted, the current config will remain unchanged. This is available only if your network supports AMP allow listing" }, "allowedFiles": { "type": "array", "items": { "type": "object", "properties": { "sha256": { "type": "string", "description": "The file sha256 hash to allow" }, "comment": { "type": "string", "description": "Comment about the allowed entity" } }, "required": [ "sha256", "comment" ] }, "description": "The sha256 digests of files that should be permitted by the malware detection engine. If omitted, the current config will remain unchanged. This is available only if your network supports AMP allow listing" } }, "example": { "mode": "enabled", "allowedUrls": [ { "url": "help.com.au", "comment": "allow help.com.au" } ], "allowedFiles": [ { "sha256": "e82c5f7d75004727e1f3b94426b9a11c8bc4c312a9170ac9a73abace40aef503", "comment": "allow ZIP file" } ] }, "required": [ "mode" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "Current status of malware prevention" }, "allowedUrls": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "The allowed URL" }, "comment": { "type": "string", "description": "Comment about the allowed URL" } } }, "description": "URLs permitted by the malware detection engine" }, "allowedFiles": { "type": "array", "items": { "type": "object", "properties": { "sha256": { "type": "string", "description": "The sha256 digest of allowed file" }, "comment": { "type": "string", "description": "Comment about the allowed file" } } }, "description": "Sha256 digests of files permitted by the malware detection engine" } } }, "example": { "mode": "enabled", "allowedUrls": [ { "url": "help.com.au", "comment": "allow help.com.au" } ], "allowedFiles": [ { "sha256": "e82c5f7d75004727e1f3b94426b9a11c8bc4c312a9170ac9a73abace40aef503", "comment": "allow ZIP file" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Set the supported malware settings for an MX network", "tags": [ "appliance", "configure", "security", "malware" ] } }, "/networks/{networkId}/appliance/settings": { "get": { "description": "Return the appliance settings for a network", "operationId": "getNetworkApplianceSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "clientTrackingMethod": { "type": "string", "enum": [ "IP address", "MAC address", "Unique client identifier" ], "description": "Client tracking method of a network" }, "deploymentMode": { "type": "string", "enum": [ "passthrough", "routed" ], "description": "Deployment mode of a network" }, "dynamicDns": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Dynamic DNS enabled" }, "prefix": { "type": "string", "description": "Dynamic DNS url prefix. DDNS must be enabled to update" }, "url": { "type": "string", "description": "Dynamic DNS url. DDNS must be enabled to update" } }, "description": "Dynamic DNS settings for a network" } } }, "example": { "clientTrackingMethod": "MAC address", "deploymentMode": "routed", "dynamicDns": { "enabled": true, "prefix": "test", "url": "test-adfgnnhjea.meraki.com" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the appliance settings for a network", "tags": [ "appliance", "configure", "settings" ] }, "put": { "description": "Update the appliance settings for a network", "operationId": "updateNetworkApplianceSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "clientTrackingMethod": { "type": "string", "enum": [ "IP address", "MAC address", "Unique client identifier" ], "description": "Client tracking method of a network" }, "deploymentMode": { "type": "string", "enum": [ "passthrough", "routed" ], "description": "Deployment mode of a network" }, "dynamicDns": { "type": "object", "properties": { "prefix": { "type": "string", "description": "Dynamic DNS url prefix. DDNS must be enabled to update" }, "enabled": { "type": "boolean", "description": "Dynamic DNS enabled" } }, "description": "Dynamic DNS settings for a network" } }, "example": { "clientTrackingMethod": "MAC address", "deploymentMode": "routed", "dynamicDns": { "prefix": "test", "enabled": true } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "clientTrackingMethod": { "type": "string", "enum": [ "IP address", "MAC address", "Unique client identifier" ], "description": "Client tracking method of a network" }, "deploymentMode": { "type": "string", "enum": [ "passthrough", "routed" ], "description": "Deployment mode of a network" }, "dynamicDns": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Dynamic DNS enabled" }, "prefix": { "type": "string", "description": "Dynamic DNS url prefix. DDNS must be enabled to update" }, "url": { "type": "string", "description": "Dynamic DNS url. DDNS must be enabled to update" } }, "description": "Dynamic DNS settings for a network" } } }, "example": { "clientTrackingMethod": "MAC address", "deploymentMode": "routed", "dynamicDns": { "enabled": true, "prefix": "test", "url": "test-adfgnnhjea.meraki.com" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the appliance settings for a network", "tags": [ "appliance", "configure", "settings" ] } }, "/networks/{networkId}/appliance/singleLan": { "get": { "description": "Return single LAN configuration", "operationId": "getNetworkApplianceSingleLan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "subnet": { "type": "string", "description": "The subnet of the single LAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the single LAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on single LAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this single LAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on single LAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the single LAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the single LAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the single LAN" } }, "description": "IPv6 configuration on the single LAN" } } }, "example": { "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "mandatoryDhcp": { "enabled": true }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return single LAN configuration", "tags": [ "appliance", "configure", "singleLan" ] }, "put": { "description": "Update single LAN configuration", "operationId": "updateNetworkApplianceSingleLan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "subnet": { "type": "string", "description": "The subnet of the single LAN configuration" }, "applianceIp": { "type": "string", "description": "The appliance IP address of the single LAN" }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN." }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "disabled": { "type": "boolean", "description": "Disable the prefix assignment" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN", "nullable": true }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP", "nullable": true }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "required": [ "type" ], "description": "The origin of the prefix" } }, "required": [ "disabled" ] }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on LAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this LAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" } }, "example": {} } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "subnet": { "type": "string", "description": "The subnet of the single LAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the single LAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on single LAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this single LAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on single LAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the single LAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the single LAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the single LAN" } }, "description": "IPv6 configuration on the single LAN" } } }, "example": { "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "mandatoryDhcp": { "enabled": true }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update single LAN configuration", "tags": [ "appliance", "configure", "singleLan" ] } }, "/networks/{networkId}/appliance/ssids": { "get": { "description": "List the MX SSIDs in a network", "operationId": "getNetworkApplianceSsids", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "integer", "description": "The number of the SSID." }, "name": { "type": "string", "description": "The name of the SSID." }, "enabled": { "type": "boolean", "description": "Whether or not the SSID is enabled." }, "defaultVlanId": { "type": "integer", "description": "The VLAN ID of the VLAN associated to this SSID." }, "authMode": { "type": "string", "description": "The association control method for the SSID." }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string", "description": "The IP address of your RADIUS server." }, "port": { "type": "integer", "description": "The UDP port your RADIUS servers listens on for Access-requests." } } }, "description": "The RADIUS 802.1x servers to be used for authentication." }, "encryptionMode": { "type": "string", "description": "The psk encryption mode for the SSID." }, "wpaEncryptionMode": { "type": "string", "description": "WPA encryption mode for the SSID." }, "visible": { "type": "boolean", "description": "Boolean indicating whether the MX should advertise or hide this SSID." } } } }, "example": [ { "number": 1, "name": "My SSID", "enabled": true, "defaultVlanId": 1, "authMode": "8021x-radius", "radiusServers": [ { "host": "0.0.0.0", "port": 1000 } ], "encryptionMode": "wpa", "wpaEncryptionMode": "WPA2 only", "visible": true } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the MX SSIDs in a network", "tags": [ "appliance", "configure", "ssids" ] } }, "/networks/{networkId}/appliance/ssids/{number}": { "get": { "description": "Return a single MX SSID", "operationId": "getNetworkApplianceSsid", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "number", "in": "path", "description": "Number", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "number": { "type": "integer", "description": "The number of the SSID." }, "name": { "type": "string", "description": "The name of the SSID." }, "enabled": { "type": "boolean", "description": "Whether or not the SSID is enabled." }, "defaultVlanId": { "type": "integer", "description": "The VLAN ID of the VLAN associated to this SSID." }, "authMode": { "type": "string", "description": "The association control method for the SSID." }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string", "description": "The IP address of your RADIUS server." }, "port": { "type": "integer", "description": "The UDP port your RADIUS servers listens on for Access-requests." } } }, "description": "The RADIUS 802.1x servers to be used for authentication." }, "encryptionMode": { "type": "string", "description": "The psk encryption mode for the SSID." }, "wpaEncryptionMode": { "type": "string", "description": "WPA encryption mode for the SSID." }, "visible": { "type": "boolean", "description": "Boolean indicating whether the MX should advertise or hide this SSID." } } }, "example": { "number": 1, "name": "My SSID", "enabled": true, "defaultVlanId": 1, "authMode": "8021x-radius", "radiusServers": [ { "host": "0.0.0.0", "port": 1000 } ], "encryptionMode": "wpa", "wpaEncryptionMode": "WPA2 only", "visible": true } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a single MX SSID", "tags": [ "appliance", "configure", "ssids" ] }, "put": { "description": "Update the attributes of an MX SSID", "operationId": "updateNetworkApplianceSsid", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "number", "in": "path", "description": "Number", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the SSID." }, "enabled": { "type": "boolean", "description": "Whether or not the SSID is enabled." }, "defaultVlanId": { "type": "integer", "description": "The VLAN ID of the VLAN associated to this SSID. This parameter is only valid if the network is in routed mode." }, "authMode": { "type": "string", "enum": [ "8021x-meraki", "8021x-radius", "open", "psk" ], "description": "The association control method for the SSID ('open', 'psk', '8021x-meraki' or '8021x-radius')." }, "psk": { "type": "string", "description": "The passkey for the SSID. This param is only valid if the authMode is 'psk'." }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string", "description": "The IP address of your RADIUS server." }, "port": { "type": "integer", "description": "The UDP port your RADIUS servers listens on for Access-requests." }, "secret": { "type": "string", "description": "The RADIUS client shared secret." } } }, "description": "The RADIUS 802.1x servers to be used for authentication. This param is only valid if the authMode is '8021x-radius'." }, "encryptionMode": { "type": "string", "enum": [ "wep", "wpa" ], "description": "The psk encryption mode for the SSID ('wep' or 'wpa'). This param is only valid if the authMode is 'psk'." }, "wpaEncryptionMode": { "type": "string", "enum": [ "WPA1 and WPA2", "WPA2 only", "WPA3 Transition Mode", "WPA3 only" ], "description": "The types of WPA encryption. ('WPA1 and WPA2', 'WPA2 only', 'WPA3 Transition Mode' or 'WPA3 only'). This param is only valid if (1) the authMode is 'psk' & the encryptionMode is 'wpa' OR (2) the authMode is '8021x-meraki' OR (3) the authMode is '8021x-radius'" }, "visible": { "type": "boolean", "description": "Boolean indicating whether the MX should advertise or hide this SSID." }, "dhcpEnforcedDeauthentication": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable DCHP Enforced Deauthentication on the SSID." } }, "description": "DHCP Enforced Deauthentication enables the disassociation of wireless clients in addition to Mandatory DHCP. This param is only valid on firmware versions >= MX 17.0 where the associated LAN has Mandatory DHCP Enabled " }, "dot11w": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether 802.11w is enabled or not." }, "required": { "type": "boolean", "description": "(Optional) Whether 802.11w is required or not." } }, "description": "The current setting for Protected Management Frames (802.11w)." } }, "example": { "name": "My SSID", "enabled": true, "defaultVlanId": 1, "authMode": "8021x-radius", "psk": "psk", "radiusServers": [ { "host": "0.0.0.0", "port": 1000, "secret": "secret" } ], "encryptionMode": "wpa", "wpaEncryptionMode": "WPA2 only", "visible": true, "dhcpEnforcedDeauthentication": { "enabled": true }, "dot11w": { "enabled": true, "required": true } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "number": { "type": "integer", "description": "The number of the SSID." }, "name": { "type": "string", "description": "The name of the SSID." }, "enabled": { "type": "boolean", "description": "Whether or not the SSID is enabled." }, "defaultVlanId": { "type": "integer", "description": "The VLAN ID of the VLAN associated to this SSID." }, "authMode": { "type": "string", "description": "The association control method for the SSID." }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string", "description": "The IP address of your RADIUS server." }, "port": { "type": "integer", "description": "The UDP port your RADIUS servers listens on for Access-requests." } } }, "description": "The RADIUS 802.1x servers to be used for authentication." }, "encryptionMode": { "type": "string", "description": "The psk encryption mode for the SSID." }, "wpaEncryptionMode": { "type": "string", "description": "WPA encryption mode for the SSID." }, "visible": { "type": "boolean", "description": "Boolean indicating whether the MX should advertise or hide this SSID." } } }, "example": { "number": 1, "name": "My SSID", "enabled": true, "defaultVlanId": 1, "authMode": "8021x-radius", "radiusServers": [ { "host": "0.0.0.0", "port": 1000 } ], "encryptionMode": "wpa", "wpaEncryptionMode": "WPA2 only", "visible": true } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the attributes of an MX SSID", "tags": [ "appliance", "configure", "ssids" ] } }, "/networks/{networkId}/appliance/staticRoutes": { "get": { "description": "List the static routes for an MX or teleworker network", "operationId": "getNetworkApplianceStaticRoutes", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Route ID" }, "ipVersion": { "type": "integer", "description": "IP protocol version" }, "networkId": { "type": "string", "description": "Network ID" }, "enabled": { "type": "boolean", "description": "Whether the route is enabled or not" }, "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "Assigned IP address" }, "name": { "type": "string", "description": "Client name" } }, "description": "An object representing MAC address to IP address and client name mapping. This is the MAC address" }, "description": "Fixed DHCP IP assignments on the route" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "First address in the reserved range" }, "end": { "type": "string", "description": "Last address in the reserved range" }, "comment": { "type": "string", "description": "Description of the range" } } }, "description": "DHCP reserved IP ranges" }, "gatewayVlanId": { "type": "integer", "description": "Gateway VLAN ID" } } } }, "example": [ { "id": "d7fa4948-7921-4dfa-af6b-ae8b16c20c39", "ipVersion": 4, "networkId": "N_24329156", "enabled": true, "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "gatewayVlanId": 100 } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the static routes for an MX or teleworker network", "tags": [ "appliance", "configure", "staticRoutes" ] }, "post": { "description": "Add a static route for an MX or teleworker network", "operationId": "createNetworkApplianceStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "gatewayVlanId": { "type": "integer", "minimum": 0, "maximum": 4094, "description": "Gateway VLAN ID" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "gatewayVlanId": 100 }, "required": [ "name", "subnet", "gatewayIp" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Route ID" }, "ipVersion": { "type": "integer", "description": "IP protocol version" }, "networkId": { "type": "string", "description": "Network ID" }, "enabled": { "type": "boolean", "description": "Whether the route is enabled or not" }, "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "Assigned IP address" }, "name": { "type": "string", "description": "Client name" } }, "description": "An object representing MAC address to IP address and client name mapping. This is the MAC address" }, "description": "Fixed DHCP IP assignments on the route" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "First address in the reserved range" }, "end": { "type": "string", "description": "Last address in the reserved range" }, "comment": { "type": "string", "description": "Description of the range" } } }, "description": "DHCP reserved IP ranges" }, "gatewayVlanId": { "type": "integer", "description": "Gateway VLAN ID" } } }, "example": { "id": "d7fa4948-7921-4dfa-af6b-ae8b16c20c39", "ipVersion": 4, "networkId": "N_24329156", "enabled": true, "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "gatewayVlanId": 100 } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Add a static route for an MX or teleworker network", "tags": [ "appliance", "configure", "staticRoutes" ] } }, "/networks/{networkId}/appliance/staticRoutes/{staticRouteId}": { "get": { "description": "Return a static route for an MX or teleworker network", "operationId": "getNetworkApplianceStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticRouteId", "in": "path", "description": "Static route ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Route ID" }, "ipVersion": { "type": "integer", "description": "IP protocol version" }, "networkId": { "type": "string", "description": "Network ID" }, "enabled": { "type": "boolean", "description": "Whether the route is enabled or not" }, "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "Assigned IP address" }, "name": { "type": "string", "description": "Client name" } }, "description": "An object representing MAC address to IP address and client name mapping. This is the MAC address" }, "description": "Fixed DHCP IP assignments on the route" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "First address in the reserved range" }, "end": { "type": "string", "description": "Last address in the reserved range" }, "comment": { "type": "string", "description": "Description of the range" } } }, "description": "DHCP reserved IP ranges" }, "gatewayVlanId": { "type": "integer", "description": "Gateway VLAN ID" } } }, "example": { "id": "d7fa4948-7921-4dfa-af6b-ae8b16c20c39", "ipVersion": 4, "networkId": "N_24329156", "enabled": true, "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "gatewayVlanId": 100 } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a static route for an MX or teleworker network", "tags": [ "appliance", "configure", "staticRoutes" ] }, "put": { "description": "Update a static route for an MX or teleworker network", "operationId": "updateNetworkApplianceStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticRouteId", "in": "path", "description": "Static route ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "gatewayVlanId": { "type": "integer", "minimum": 0, "maximum": 4094, "nullable": true, "description": "Gateway VLAN ID" }, "enabled": { "type": "boolean", "description": "Whether the route should be enabled or not" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "Assigned IP address" }, "name": { "type": "string", "description": "Client name" } }, "description": "An object representing MAC address to IP address and client name mapping. This should be the MAC address" }, "description": "Fixed DHCP IP assignments on the route" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "First address in the reserved range" }, "end": { "type": "string", "description": "Last address in the reserved range" }, "comment": { "type": "string", "description": "Description of the range" } }, "required": [ "start", "end", "comment" ] }, "description": "DHCP reserved IP ranges" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "gatewayVlanId": 100, "enabled": true, "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Route ID" }, "ipVersion": { "type": "integer", "description": "IP protocol version" }, "networkId": { "type": "string", "description": "Network ID" }, "enabled": { "type": "boolean", "description": "Whether the route is enabled or not" }, "name": { "type": "string", "description": "Name of the route" }, "subnet": { "type": "string", "description": "Subnet of the route" }, "gatewayIp": { "type": "string", "description": "Gateway IP address (next hop)" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "Assigned IP address" }, "name": { "type": "string", "description": "Client name" } }, "description": "An object representing MAC address to IP address and client name mapping. This is the MAC address" }, "description": "Fixed DHCP IP assignments on the route" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "First address in the reserved range" }, "end": { "type": "string", "description": "Last address in the reserved range" }, "comment": { "type": "string", "description": "Description of the range" } } }, "description": "DHCP reserved IP ranges" }, "gatewayVlanId": { "type": "integer", "description": "Gateway VLAN ID" } } }, "example": { "id": "d7fa4948-7921-4dfa-af6b-ae8b16c20c39", "ipVersion": 4, "networkId": "N_24329156", "enabled": true, "name": "My route", "subnet": "192.168.1.0/24", "gatewayIp": "1.2.3.5", "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "gatewayVlanId": 100 } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a static route for an MX or teleworker network", "tags": [ "appliance", "configure", "staticRoutes" ] }, "delete": { "description": "Delete a static route from an MX or teleworker network", "operationId": "deleteNetworkApplianceStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "staticRouteId", "in": "path", "description": "Static route ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Delete a static route from an MX or teleworker network", "tags": [ "appliance", "configure", "staticRoutes" ] } }, "/networks/{networkId}/appliance/trafficShaping": { "get": { "description": "Display the traffic shaping settings for an MX network", "operationId": "getNetworkApplianceTrafficShaping", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "globalBandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The upload bandwidth limit in Kbps. (0 represents no limit.)" }, "limitDown": { "type": "integer", "description": "The download bandwidth limit in Kbps. (0 represents no limit.)" } }, "required": [ "limitUp", "limitDown" ], "description": "Global per-client bandwidth limit" } }, "required": [ "globalBandwidthLimits" ] }, "example": { "globalBandwidthLimits": { "limitUp": 2048, "limitDown": 5120 } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Display the traffic shaping settings for an MX network", "tags": [ "appliance", "configure", "trafficShaping" ] }, "put": { "description": "Update the traffic shaping settings for an MX network", "operationId": "updateNetworkApplianceTrafficShaping", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "globalBandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The upload bandwidth limit in Kbps. (0 represents no limit.)" }, "limitDown": { "type": "integer", "description": "The download bandwidth limit in Kbps. (0 represents no limit.)" } }, "description": "Global per-client bandwidth limit" } }, "example": { "globalBandwidthLimits": { "limitUp": 2048, "limitDown": 5120 } }, "required": [ "globalBandwidthLimits" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "globalBandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The upload bandwidth limit in Kbps. (0 represents no limit.)" }, "limitDown": { "type": "integer", "description": "The download bandwidth limit in Kbps. (0 represents no limit.)" } }, "required": [ "limitUp", "limitDown" ], "description": "Global per-client bandwidth limit" } }, "required": [ "globalBandwidthLimits" ] }, "example": { "globalBandwidthLimits": { "limitUp": 2048, "limitDown": 5120 } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the traffic shaping settings for an MX network", "tags": [ "appliance", "configure", "trafficShaping" ] } }, "/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses": { "get": { "description": "List all custom performance classes for an MX network", "operationId": "getNetworkApplianceTrafficShapingCustomPerformanceClasses", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "customPerformanceClassId": { "type": "string", "description": "ID of the custom performance class" }, "maxLatency": { "type": "integer", "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "description": "Maximum percentage of packet loss" } } } }, "example": [ { "name": "myCustomPerformanceClass", "customPerformanceClassId": "123", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List all custom performance classes for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "customPerformanceClasses" ] }, "post": { "description": "Add a custom performance class for an MX network", "operationId": "createNetworkApplianceTrafficShapingCustomPerformanceClass", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "maxLatency": { "type": "integer", "nullable": true, "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "nullable": true, "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "nullable": true, "description": "Maximum percentage of packet loss" } }, "example": { "name": "myCustomPerformanceClass", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "customPerformanceClassId": { "type": "string", "description": "ID of the custom performance class" }, "maxLatency": { "type": "integer", "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "description": "Maximum percentage of packet loss" } } }, "example": { "name": "myCustomPerformanceClass", "customPerformanceClassId": "123", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Add a custom performance class for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "customPerformanceClasses" ] } }, "/networks/{networkId}/appliance/trafficShaping/customPerformanceClasses/{customPerformanceClassId}": { "get": { "description": "Return a custom performance class for an MX network", "operationId": "getNetworkApplianceTrafficShapingCustomPerformanceClass", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "customPerformanceClassId", "in": "path", "description": "Custom performance class ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "customPerformanceClassId": { "type": "string", "description": "ID of the custom performance class" }, "maxLatency": { "type": "integer", "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "description": "Maximum percentage of packet loss" } } }, "example": { "name": "myCustomPerformanceClass", "customPerformanceClassId": "123", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a custom performance class for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "customPerformanceClasses" ] }, "put": { "description": "Update a custom performance class for an MX network", "operationId": "updateNetworkApplianceTrafficShapingCustomPerformanceClass", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "customPerformanceClassId", "in": "path", "description": "Custom performance class ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "maxLatency": { "type": "integer", "nullable": true, "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "nullable": true, "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "nullable": true, "description": "Maximum percentage of packet loss" } }, "example": { "name": "myCustomPerformanceClass", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the custom performance class" }, "customPerformanceClassId": { "type": "string", "description": "ID of the custom performance class" }, "maxLatency": { "type": "integer", "description": "Maximum latency in milliseconds" }, "maxJitter": { "type": "integer", "description": "Maximum jitter in milliseconds" }, "maxLossPercentage": { "type": "integer", "description": "Maximum percentage of packet loss" } } }, "example": { "name": "myCustomPerformanceClass", "customPerformanceClassId": "123", "maxLatency": 100, "maxJitter": 100, "maxLossPercentage": 5 } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a custom performance class for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "customPerformanceClasses" ] }, "delete": { "description": "Delete a custom performance class from an MX network", "operationId": "deleteNetworkApplianceTrafficShapingCustomPerformanceClass", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "customPerformanceClassId", "in": "path", "description": "Custom performance class ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Delete a custom performance class from an MX network", "tags": [ "appliance", "configure", "trafficShaping", "customPerformanceClasses" ] } }, "/networks/{networkId}/appliance/trafficShaping/rules": { "put": { "description": "Update the traffic shaping settings rules for an MX network", "operationId": "updateNetworkApplianceTrafficShapingRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultRulesEnabled": { "type": "boolean", "description": "Whether default traffic shaping rules are enabled (true) or disabled (false). There are 4 default rules, which can be seen on your network's traffic shaping page. Note that default rules count against the rule limit of 8." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "definitions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "host", "ipRange", "localNet", "port" ], "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." }, "value": { "type": "string", "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" } }, "required": [ "type", "value" ] }, "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" }, "perClientBandwidthLimits": { "type": "object", "properties": { "settings": { "type": "string", "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." }, "bandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps)." }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps)." } }, "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." } }, "description": " An object describing the bandwidth settings for your rule.\n" }, "dscpTagValue": { "type": "integer", "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n", "nullable": true }, "priority": { "type": "string", "description": " A string, indicating the priority level for packets bound to your rule.\n Can be 'low', 'normal' or 'high'.\n" } }, "required": [ "definitions" ] }, "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" } }, "example": { "defaultRulesEnabled": true, "rules": [ { "definitions": [ { "type": "host", "value": "google.com" } ], "perClientBandwidthLimits": { "settings": "custom", "bandwidthLimits": { "limitUp": 1000000, "limitDown": 1000000 } }, "dscpTagValue": 0, "priority": "normal" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultRulesEnabled": { "type": "boolean", "description": "Whether default traffic shaping rules are enabled (true) or disabled (false). There are 4 default rules, which can be seen on your network's traffic shaping page. Note that default rules count against the rule limit of 8." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "definitions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "host", "ipRange", "localNet", "port" ], "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." }, "value": { "type": "string", "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" } }, "required": [ "type", "value" ] }, "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" }, "perClientBandwidthLimits": { "type": "object", "properties": { "settings": { "type": "string", "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." }, "bandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps)." }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps)." } }, "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." } }, "description": " An object describing the bandwidth settings for your rule.\n" }, "dscpTagValue": { "type": "integer", "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n", "nullable": true }, "priority": { "type": "string", "description": " A string, indicating the priority level for packets bound to your rule.\n Can be 'low', 'normal' or 'high'.\n" } }, "required": [ "definitions" ] }, "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" } } }, "example": { "defaultRulesEnabled": true, "rules": [ { "definitions": [ { "type": "host", "value": "google.com" } ], "perClientBandwidthLimits": { "settings": "custom", "bandwidthLimits": { "limitUp": 1000000, "limitDown": 1000000 } }, "dscpTagValue": 0, "priority": "normal" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the traffic shaping settings rules for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "rules" ] }, "get": { "description": "Display the traffic shaping settings rules for an MX network", "operationId": "getNetworkApplianceTrafficShapingRules", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultRulesEnabled": { "type": "boolean", "description": "Whether default traffic shaping rules are enabled (true) or disabled (false). There are 4 default rules, which can be seen on your network's traffic shaping page. Note that default rules count against the rule limit of 8." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "definitions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "host", "ipRange", "localNet", "port" ], "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." }, "value": { "type": "string", "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" } }, "required": [ "type", "value" ] }, "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" }, "perClientBandwidthLimits": { "type": "object", "properties": { "settings": { "type": "string", "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." }, "bandwidthLimits": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps)." }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps)." } }, "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." } }, "description": " An object describing the bandwidth settings for your rule.\n" }, "dscpTagValue": { "type": "integer", "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n", "nullable": true }, "priority": { "type": "string", "description": " A string, indicating the priority level for packets bound to your rule.\n Can be 'low', 'normal' or 'high'.\n" } }, "required": [ "definitions" ] }, "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" } } }, "example": { "defaultRulesEnabled": true, "rules": [ { "definitions": [ { "type": "host", "value": "google.com" } ], "perClientBandwidthLimits": { "settings": "custom", "bandwidthLimits": { "limitUp": 1000000, "limitDown": 1000000 } }, "dscpTagValue": 0, "priority": "normal" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Display the traffic shaping settings rules for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "rules" ] } }, "/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth": { "get": { "description": "Returns the uplink bandwidth limits for your MX network. This may not reflect the affected device's hardware capabilities. For more information on your device's hardware capabilities, please consult our MX Family Datasheet - [https://meraki.cisco.com/product-collateral/mx-family-datasheet/?file]", "operationId": "getNetworkApplianceTrafficShapingUplinkBandwidth", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "bandwidthLimits": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink wan1 configured limits [optional]" }, "wan2": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink wan2 configured limits [optional]" }, "cellular": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink cellular configured limits [optional]" } }, "description": "A hash uplink keys and their configured settings for the Appliance" } } }, "example": { "bandwidthLimits": { "wan1": { "limitUp": 1000000, "limitDown": 1000000 }, "wan2": { "limitUp": 1000000, "limitDown": 1000000 }, "cellular": { "limitUp": 51200, "limitDown": 51200 } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Returns the uplink bandwidth limits for your MX network", "tags": [ "appliance", "configure", "trafficShaping", "uplinkBandwidth" ] }, "put": { "description": "Updates the uplink bandwidth settings for your MX network.", "operationId": "updateNetworkApplianceTrafficShapingUplinkBandwidth", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "bandwidthLimits": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps). null indicates no limit", "nullable": true }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps). null indicates no limit", "nullable": true } }, "description": "The bandwidth settings for the 'wan1' uplink" }, "wan2": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps). null indicates no limit", "nullable": true }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps). null indicates no limit", "nullable": true } }, "description": "The bandwidth settings for the 'wan2' uplink" }, "cellular": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "The maximum upload limit (integer, in Kbps). null indicates no limit", "nullable": true }, "limitDown": { "type": "integer", "description": "The maximum download limit (integer, in Kbps). null indicates no limit", "nullable": true } }, "description": "The bandwidth settings for the 'cellular' uplink" } }, "description": "A mapping of uplinks to their bandwidth settings (be sure to check which uplinks are supported for your network)" } }, "example": { "bandwidthLimits": { "wan1": { "limitUp": 1000000, "limitDown": 1000000 }, "wan2": { "limitUp": 1000000, "limitDown": 1000000 }, "cellular": { "limitUp": 1000000, "limitDown": 1000000 } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "bandwidthLimits": { "type": "object", "properties": { "wan1": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink wan1 configured limits [optional]" }, "wan2": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink wan2 configured limits [optional]" }, "cellular": { "type": "object", "properties": { "limitUp": { "type": "integer", "description": "configured UP limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true }, "limitDown": { "type": "integer", "description": "configured DOWN limit for the uplink (in Kbps). Null indicated unlimited", "nullable": true } }, "description": "uplink cellular configured limits [optional]" } }, "description": "A hash uplink keys and their configured settings for the Appliance" } } }, "example": { "bandwidthLimits": { "wan1": { "limitUp": 1000000, "limitDown": 1000000 }, "wan2": { "limitUp": 1000000, "limitDown": 1000000 }, "cellular": { "limitUp": 51200, "limitDown": 51200 } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Updates the uplink bandwidth settings for your MX network.", "tags": [ "appliance", "configure", "trafficShaping", "uplinkBandwidth" ] } }, "/networks/{networkId}/appliance/trafficShaping/uplinkSelection": { "get": { "description": "Show uplink selection settings for an MX network", "operationId": "getNetworkApplianceTrafficShapingUplinkSelection", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "activeActiveAutoVpnEnabled": { "type": "boolean", "description": "Whether active-active AutoVPN is enabled" }, "defaultUplink": { "type": "string", "description": "The default uplink. Must be a WAN interface 'wanX'" }, "loadBalancingEnabled": { "type": "boolean", "description": "Whether load balancing is enabled" }, "failoverAndFailback": { "type": "object", "properties": { "immediate": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether immediate WAN failover and failback is enabled" } }, "required": [ "enabled" ], "description": "Immediate WAN failover and failback" } }, "description": "WAN failover and failback" }, "wanTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom" ], "description": "Traffic filter type. Must be \"custom\"" }, "value": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp6", "tcp", "udp" ], "description": "Protocol of 'custom' type traffic filter. Must be one of: 'tcp', 'udp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of 'custom' type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\"" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the major application, or a list of NBAR Application Category or Application selections", "nullable": true }, "name": { "type": "string", "description": "Name of the major application or application category selected", "nullable": true }, "type": { "type": "string", "description": "app type (major or nbar)", "nullable": true } } }, "description": "list of application objects (either majorApplication or nbar)", "nullable": true } }, "description": "Destination of 'custom' type traffic filter" } }, "required": [ "source", "destination" ], "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1' or 'wan2', or any other valid uplink (wanX, cellular) if it applies to the network" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Uplink preference rules for WAN traffic" }, "vpnTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "custom" ], "description": "Traffic filter type. Must be one of: 'applicationCategory', 'application' or 'custom'" }, "value": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of 'applicationCategory' or 'application' type traffic filter" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "Protocol of 'custom' type traffic filter. Must be one of: 'tcp', 'udp', 'icmp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of 'custom' type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" or \"fqdn\" property" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" or \"fqdn\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." }, "fqdn": { "type": "string", "description": "FQDN format address. Cannot be used in combination with the \"cidr\" or \"fqdn\" property and is currently only available in the \"destination\" object of the \"vpnTrafficUplinkPreference\" object. E.g.: \"www.google.com\"" } }, "description": "Destination of 'custom' type traffic filter" } }, "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1', 'wan2', 'bestForVoIP', 'loadBalancing', 'defaultUplink' or 'cellular', or any other valid uplink (wanX, cellular) if it applies to the network" }, "failOverCriterion": { "type": "string", "enum": [ "poorPerformance", "uplinkDown" ], "description": "Fail over criterion for uplink preference rule. Must be one of: 'poorPerformance' or 'uplinkDown'" }, "performanceClass": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "builtin", "custom" ], "description": "Type of this performance class. Must be one of: 'builtin' or 'custom'" }, "builtinPerformanceClassName": { "type": "string", "enum": [ "VoIP" ], "description": "Name of builtin performance class. Must be present when performanceClass type is 'builtin' and value must be one of: 'VoIP'" }, "customPerformanceClassId": { "type": "string", "description": "ID of created custom performance class, must be present when performanceClass type is \"custom\"" } }, "required": [ "type" ], "description": "Performance class setting for uplink preference rule" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Uplink preference rules for VPN traffic" } } }, "example": { "activeActiveAutoVpnEnabled": true, "defaultUplink": "wan1", "loadBalancingEnabled": true, "failoverAndFailback": { "immediate": { "enabled": true } }, "wanTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "custom", "value": { "protocol": "tcp", "source": { "port": "1-1024", "cidr": "192.168.1.0/24", "vlan": 10, "host": 254 }, "destination": { "port": "any", "cidr": "any", "applications": [ { "id": "meraki:layer7/application/3", "name": "DNS", "type": "major" } ] } } } ], "preferredUplink": "wan1" } ], "vpnTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "applicationCategory", "value": { "id": "meraki:layer7/category/1", "protocol": "tcp", "source": { "port": "any", "cidr": "192.168.1.0/24", "network": "L_23456789", "vlan": 20, "host": 200 }, "destination": { "port": "1-1024", "cidr": "any", "network": "L_12345678", "vlan": 10, "host": 254, "fqdn": "www.google.com" } } } ], "preferredUplink": "bestForVoIP", "failOverCriterion": "poorPerformance", "performanceClass": { "type": "custom", "builtinPerformanceClassName": "VoIP", "customPerformanceClassId": "123456" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Show uplink selection settings for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "uplinkSelection" ] }, "put": { "description": "Update uplink selection settings for an MX network", "operationId": "updateNetworkApplianceTrafficShapingUplinkSelection", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "activeActiveAutoVpnEnabled": { "type": "boolean", "description": "Toggle for enabling or disabling active-active AutoVPN" }, "defaultUplink": { "type": "string", "description": "The default uplink. Must be a WAN interface 'wanX'" }, "loadBalancingEnabled": { "type": "boolean", "description": "Toggle for enabling or disabling load balancing" }, "failoverAndFailback": { "type": "object", "properties": { "immediate": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Toggle for enabling or disabling immediate WAN failover and failback" } }, "required": [ "enabled" ], "description": "Immediate WAN transition terminates all flows (new and existing) on current WAN when it is deemed unreliable." } }, "description": "WAN failover and failback behavior" }, "wanTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom" ], "description": "Type of this traffic filter. Must be one of: 'custom'" }, "value": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp6", "tcp", "udp" ], "description": "Protocol of this custom type traffic filter. Must be one of: 'tcp', 'udp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address, or \"any\". E.g.: \"192.168.10.0/24\", \"192.168.10.1\" (same as \"192.168.10.1/32\"), \"0.0.0.0/0\" (same as \"any\")" }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN, should be used along with 'vlan', and not exceed the vlan subnet capacity. Currently only available under a template network." } }, "description": "Source of this custom type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address, or \"any\". E.g.: \"192.168.10.0/24\", \"192.168.10.1\" (same as \"192.168.10.1/32\"), \"0.0.0.0/0\" (same as \"any\")" } }, "description": "Destination of this custom type traffic filter" } }, "required": [ "source", "destination" ], "description": "Value object of this traffic filter" } }, "required": [ "type", "value" ] }, "description": "Array of traffic filters for this uplink preference rule" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for this uplink preference rule. Must be one of: 'wan1' or 'wan2', or any other valid uplink(wanX) if it applies to the network" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Array of uplink preference rules for WAN traffic" }, "vpnTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "custom" ], "description": "Type of this traffic filter. Must be one of: 'applicationCategory', 'application' or 'custom'" }, "value": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of this applicationCategory or application type traffic filter. E.g.: \"meraki:layer7/category/1\", \"meraki:layer7/application/4\"" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "Protocol of this custom type traffic filter. Must be one of: 'tcp', 'udp', 'icmp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address, or \"any\". E.g.: \"192.168.10.0/24\", \"192.168.10.1\" (same as \"192.168.10.1/32\"), \"0.0.0.0/0\" (same as \"any\")" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN, should be used along with 'vlan', and not exceed the vlan subnet capacity. Currently only available under a template network." } }, "description": "Source of this custom type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address, or \"any\". E.g.: \"192.168.10.0/24\", \"192.168.10.1\" (same as \"192.168.10.1/32\"), \"0.0.0.0/0\" (same as \"any\")" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN, should be used along with 'vlan', and not exceed the vlan subnet capacity. Currently only available under a template network." }, "fqdn": { "type": "string", "description": "FQDN format address. Currently only availabe in 'destination' of 'vpnTrafficUplinkPreference' object. E.g.: 'www.google.com'" } }, "description": "Destination of this custom type traffic filter" } }, "description": "Value object of this traffic filter" } }, "required": [ "type", "value" ] }, "description": "Array of traffic filters for this uplink preference rule" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for this uplink preference rule. Must be one of: 'wan1', 'wan2', 'bestForVoIP', 'loadBalancing', 'defaultUplink' or 'cellular', or any other valid uplink(wanX) if it applies to the network" }, "failOverCriterion": { "type": "string", "enum": [ "poorPerformance", "uplinkDown" ], "description": "Fail over criterion for this uplink preference rule. Must be one of: 'poorPerformance' or 'uplinkDown'" }, "performanceClass": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "builtin", "custom" ], "description": "Type of this performance class. Must be one of: 'builtin' or 'custom'" }, "builtinPerformanceClassName": { "type": "string", "enum": [ "VoIP" ], "description": "Name of builtin performance class, must be present when performanceClass type is 'builtin', and value must be one of: 'VoIP'" }, "customPerformanceClassId": { "type": "string", "description": "ID of created custom performance class, must be present when performanceClass type is 'custom'" } }, "required": [ "type" ], "description": "Performance class setting for this uplink preference rule" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Array of uplink preference rules for VPN traffic" } }, "example": { "activeActiveAutoVpnEnabled": true, "defaultUplink": "wan1", "loadBalancingEnabled": true, "failoverAndFailback": { "immediate": { "enabled": true } }, "wanTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "custom", "value": { "protocol": "tcp", "source": { "port": "1-1024", "cidr": "192.168.1.0/24", "vlan": 10, "host": 254 }, "destination": { "port": "any", "cidr": "any" } } } ], "preferredUplink": "wan1" } ], "vpnTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "applicationCategory", "value": { "id": "meraki:layer7/category/1", "protocol": "tcp", "source": { "port": "any", "cidr": "192.168.1.0/24", "network": "L_23456789", "vlan": 20, "host": 200 }, "destination": { "port": "1-1024", "cidr": "any", "network": "L_12345678", "vlan": 10, "host": 254, "fqdn": "www.google.com" } } } ], "preferredUplink": "bestForVoIP", "failOverCriterion": "poorPerformance", "performanceClass": { "type": "custom", "builtinPerformanceClassName": "VoIP", "customPerformanceClassId": "123456" } } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "activeActiveAutoVpnEnabled": { "type": "boolean", "description": "Whether active-active AutoVPN is enabled" }, "defaultUplink": { "type": "string", "description": "The default uplink. Must be a WAN interface 'wanX'" }, "loadBalancingEnabled": { "type": "boolean", "description": "Whether load balancing is enabled" }, "failoverAndFailback": { "type": "object", "properties": { "immediate": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether immediate WAN failover and failback is enabled" } }, "required": [ "enabled" ], "description": "Immediate WAN failover and failback" } }, "description": "WAN failover and failback" }, "wanTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "custom" ], "description": "Traffic filter type. Must be \"custom\"" }, "value": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "icmp6", "tcp", "udp" ], "description": "Protocol of 'custom' type traffic filter. Must be one of: 'tcp', 'udp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of 'custom' type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\"" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the major application, or a list of NBAR Application Category or Application selections", "nullable": true }, "name": { "type": "string", "description": "Name of the major application or application category selected", "nullable": true }, "type": { "type": "string", "description": "app type (major or nbar)", "nullable": true } } }, "description": "list of application objects (either majorApplication or nbar)", "nullable": true } }, "description": "Destination of 'custom' type traffic filter" } }, "required": [ "source", "destination" ], "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1' or 'wan2', or any other valid uplink (wanX, cellular) if it applies to the network" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Uplink preference rules for WAN traffic" }, "vpnTrafficUplinkPreferences": { "type": "array", "items": { "type": "object", "properties": { "trafficFilters": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "application", "applicationCategory", "custom" ], "description": "Traffic filter type. Must be one of: 'applicationCategory', 'application' or 'custom'" }, "value": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of 'applicationCategory' or 'application' type traffic filter" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "Protocol of 'custom' type traffic filter. Must be one of: 'tcp', 'udp', 'icmp', 'icmp6' or 'any'" }, "source": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" property" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." } }, "description": "Source of 'custom' type traffic filter" }, "destination": { "type": "object", "properties": { "port": { "type": "string", "description": "E.g.: \"any\", \"0\" (also means \"any\"), \"8080\", \"1-1024\"" }, "cidr": { "type": "string", "description": "CIDR format address (e.g.\"192.168.10.1\", which is the same as \"192.168.10.1/32\"), or \"any\". Cannot be used in combination with the \"vlan\" or \"fqdn\" property" }, "network": { "type": "string", "description": "Meraki network ID. Currently only available under a template network, and the value should be ID of either same template network, or another template network currently. E.g.: \"L_12345678\"." }, "vlan": { "type": "integer", "description": "VLAN ID of the configured VLAN in the Meraki network. Cannot be used in combination with the \"cidr\" or \"fqdn\" property and is currently only available under a template network." }, "host": { "type": "integer", "description": "Host ID in the VLAN. Should not exceed the VLAN subnet capacity. Must be used along with the \"vlan\" property and is currently only available under a template network." }, "fqdn": { "type": "string", "description": "FQDN format address. Cannot be used in combination with the \"cidr\" or \"fqdn\" property and is currently only available in the \"destination\" object of the \"vpnTrafficUplinkPreference\" object. E.g.: \"www.google.com\"" } }, "description": "Destination of 'custom' type traffic filter" } }, "description": "Value of traffic filter" } }, "required": [ "type", "value" ] }, "description": "Traffic filters" }, "preferredUplink": { "type": "string", "description": "Preferred uplink for uplink preference rule. Must be one of: 'wan1', 'wan2', 'bestForVoIP', 'loadBalancing', 'defaultUplink' or 'cellular', or any other valid uplink (wanX, cellular) if it applies to the network" }, "failOverCriterion": { "type": "string", "enum": [ "poorPerformance", "uplinkDown" ], "description": "Fail over criterion for uplink preference rule. Must be one of: 'poorPerformance' or 'uplinkDown'" }, "performanceClass": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "builtin", "custom" ], "description": "Type of this performance class. Must be one of: 'builtin' or 'custom'" }, "builtinPerformanceClassName": { "type": "string", "enum": [ "VoIP" ], "description": "Name of builtin performance class. Must be present when performanceClass type is 'builtin' and value must be one of: 'VoIP'" }, "customPerformanceClassId": { "type": "string", "description": "ID of created custom performance class, must be present when performanceClass type is \"custom\"" } }, "required": [ "type" ], "description": "Performance class setting for uplink preference rule" } }, "required": [ "trafficFilters", "preferredUplink" ] }, "description": "Uplink preference rules for VPN traffic" } } }, "example": { "activeActiveAutoVpnEnabled": true, "defaultUplink": "wan1", "loadBalancingEnabled": true, "failoverAndFailback": { "immediate": { "enabled": true } }, "wanTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "custom", "value": { "protocol": "tcp", "source": { "port": "1-1024", "cidr": "192.168.1.0/24", "vlan": 10, "host": 254 }, "destination": { "port": "any", "cidr": "any", "applications": [ { "id": "meraki:layer7/application/3", "name": "DNS", "type": "major" } ] } } } ], "preferredUplink": "wan1" } ], "vpnTrafficUplinkPreferences": [ { "trafficFilters": [ { "type": "applicationCategory", "value": { "id": "meraki:layer7/category/1", "protocol": "tcp", "source": { "port": "any", "cidr": "192.168.1.0/24", "network": "L_23456789", "vlan": 20, "host": 200 }, "destination": { "port": "1-1024", "cidr": "any", "network": "L_12345678", "vlan": 10, "host": 254, "fqdn": "www.google.com" } } } ], "preferredUplink": "bestForVoIP", "failOverCriterion": "poorPerformance", "performanceClass": { "type": "custom", "builtinPerformanceClassName": "VoIP", "customPerformanceClassId": "123456" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update uplink selection settings for an MX network", "tags": [ "appliance", "configure", "trafficShaping", "uplinkSelection" ] } }, "/networks/{networkId}/appliance/trafficShaping/vpnExclusions": { "put": { "description": "Update VPN exclusion rules for an MX network.", "operationId": "updateNetworkApplianceTrafficShapingVpnExclusions", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "custom": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "dns", "icmp", "tcp", "udp" ], "description": "Protocol." }, "destination": { "type": "string", "description": "Destination address; hostname required for DNS, IPv4 otherwise." }, "port": { "type": "string", "description": "Destination port." } }, "required": [ "protocol" ] }, "description": "Custom VPN exclusion rules. Pass an empty array to clear existing rules." }, "majorApplications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application's Meraki ID." }, "name": { "type": "string", "enum": [ "AWS", "Box", "Office 365 Sharepoint", "Office 365 Suite", "Oracle", "SAP", "Salesforce", "Skype & Teams", "Slack", "Webex", "Webex Calling", "Webex Meetings", "Zoom" ], "description": "Application's name." } }, "required": [ "id" ] }, "description": "Major Application based VPN exclusion rules. Pass an empty array to clear existing rules." } }, "example": { "custom": [ { "protocol": "tcp", "destination": "192.168.3.0/24", "port": "8000" } ], "majorApplications": [ { "id": "meraki:vpnExclusion/application/2", "name": "Office 365 Sharepoint" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networkId": { "type": "string", "description": "ID of the network whose VPN exclusion rules are returned." }, "networkName": { "type": "string", "description": "Name of the network whose VPN exclusion rules are returned." }, "custom": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "dns", "icmp", "tcp", "udp" ], "description": "Protocol." }, "destination": { "type": "string", "description": "Destination address; hostname required for DNS, IPv4 otherwise." }, "port": { "type": "string", "description": "Destination port." } }, "required": [ "protocol", "destination", "port" ] }, "description": "Custom VPN exclusion rules." }, "majorApplications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application's Meraki ID." }, "name": { "type": "string", "enum": [ "AWS", "Box", "Office 365 Sharepoint", "Office 365 Suite", "Oracle", "SAP", "Salesforce", "Skype & Teams", "Slack", "Webex", "Webex Calling", "Webex Meetings", "Zoom" ], "description": "Application's name." } }, "required": [ "id", "name" ] }, "description": "Major Application based VPN exclusion rules." } }, "required": [ "networkId", "networkName", "custom", "majorApplications" ] }, "example": { "networkId": "N_24329156", "networkName": "Main Office", "custom": [ { "protocol": "tcp", "destination": "192.168.3.0/24", "port": "8000" } ], "majorApplications": [ { "id": "meraki:vpnExclusion/application/2", "name": "Office 365 Sharepoint" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update VPN exclusion rules for an MX network.", "tags": [ "appliance", "configure", "trafficShaping", "vpnExclusions" ] } }, "/networks/{networkId}/appliance/umbrella/account/connect": { "post": { "description": "Connect a Cisco Umbrella account to this network", "operationId": "connectNetworkApplianceUmbrellaAccount", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "api": { "type": "object", "properties": { "key": { "type": "string", "description": "API key for the Umbrella account" }, "secret": { "type": "string", "description": "API secret for the Umbrella account" } }, "description": "Umbrella API credentials" } }, "example": { "api": { "key": "str", "secret": "str" } }, "required": [ "api" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "umbrella": { "type": "object", "properties": { "organization": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella organization ID" } }, "description": "Organization details" } }, "description": "Umbrella configuration" } } }, "example": { "umbrella": { "organization": { "id": "8769012" } } } } } } }, "summary": "Connect a Cisco Umbrella account to this network", "tags": [ "appliance", "configure", "umbrella", "account" ] } }, "/networks/{networkId}/appliance/umbrella/account/disconnect": { "post": { "description": "Disconnect Umbrella account from this network", "operationId": "disconnectNetworkApplianceUmbrellaAccount", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Disconnect Umbrella account from this network", "tags": [ "appliance", "configure", "umbrella", "account" ] } }, "/networks/{networkId}/appliance/umbrella/domains/exclusions": { "put": { "description": "Specify one or more domain names to be excluded from being routed to Cisco Umbrella.", "operationId": "exclusionsNetworkApplianceUmbrellaDomains", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "domains": { "type": "array", "items": { "type": "string" }, "description": "Domain names to exclude from Umbrella DNS routing (e.g., 'example.com', 'corp.example.org'). Standard FQDNs only \u2014 wildcards are not supported. Values are lowercased before saving. Each call replaces the full exclusion list." } }, "example": { "domains": [ "example.com", "example.org" ] }, "required": [ "domains" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "domains": { "type": "array", "items": { "type": "string" }, "description": "Domain names currently excluded from Umbrella DNS routing" } } }, "example": { "domains": [ "example.com", "example.org" ] } } } } }, "summary": "Specify one or more domain names to be excluded from being routed to Cisco Umbrella.", "tags": [ "appliance", "configure", "umbrella", "domains" ] } }, "/networks/{networkId}/appliance/umbrella/policies/add": { "post": { "description": "Add one Cisco Umbrella DNS security policy to an MX network by policy ID. Idempotent \u2014 if the policy is already applied, the request succeeds and returns the current policy set unchanged.", "operationId": "addNetworkApplianceUmbrellaPolicies", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella policy ID" } }, "description": "Umbrella policy to add" } }, "example": { "policy": { "id": "13408726" } }, "required": [ "policy" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "MX Network ID" } }, "description": "The MX network to which these Umbrella policies are applied" }, "policies": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella policy ID" } } }, "description": "Umbrella policies applied to the network. The maximum number of policies is determined by Cisco Umbrella account limits." } } }, "example": { "network": { "id": "N_123456789" }, "policies": [ { "id": "13408726" } ] } } } } }, "summary": "Add one Cisco Umbrella DNS security policy to an MX network by policy ID", "tags": [ "appliance", "configure", "umbrella", "policies" ] } }, "/networks/{networkId}/appliance/umbrella/policies/remove": { "post": { "description": "Remove one Cisco Umbrella DNS security policy from an MX network by policy ID. Returns 204 No Content on success. Behavior when the policy is not currently applied depends on the Cisco Umbrella API response.", "operationId": "removeNetworkApplianceUmbrellaPolicies", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella policy ID" } }, "description": "Umbrella policy to remove" } }, "example": { "policy": { "id": "13408726" } }, "required": [ "policy" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "summary": "Remove one Cisco Umbrella DNS security policy from an MX network by policy ID", "tags": [ "appliance", "configure", "umbrella", "policies" ] } }, "/networks/{networkId}/appliance/umbrella/protection": { "put": { "description": "Enable or disable umbrella protection for an appliance network. When 'enabled' is false, 'umbrella.organization.id' and 'umbrella.origin.id' are null in the response.", "operationId": "protectionNetworkApplianceUmbrella", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable umbrella protection" } }, "example": { "enabled": true }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "umbrella": { "type": "object", "properties": { "organization": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella organization ID", "nullable": true } }, "description": "Organization details" }, "origin": { "type": "object", "properties": { "id": { "type": "string", "description": "Umbrella origin ID used for policy targeting and reporting", "nullable": true } }, "description": "The Umbrella origin representing this network's DNS routing entry in the Umbrella console" } }, "description": "Umbrella configuration. Organization and origin IDs are null when protection is disabled" }, "enabled": { "type": "boolean", "description": "Whether Umbrella protection is enabled" } } }, "example": { "umbrella": { "organization": { "id": "8706910" }, "origin": { "id": "606932410" } }, "enabled": true } } } } }, "summary": "Enable or disable umbrella protection for an appliance network", "tags": [ "appliance", "configure", "umbrella" ] } }, "/networks/{networkId}/appliance/uplinks/nat": { "put": { "description": "Update uplink NAT settings of the specified network", "operationId": "updateNetworkApplianceUplinksNat", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Interface name of the uplink" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether NAT is enabled on the uplink" } }, "required": [ "enabled" ], "description": "NAT settings of the uplink" } }, "required": [ "interface", "nat" ] }, "description": "Per-uplink NAT exception configuration on the network." } }, "example": { "uplinks": [ { "interface": "wan1", "nat": { "enabled": false } } ] }, "required": [ "uplinks" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Interface name of the uplink" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether NAT is enabled on the uplink" } }, "description": "NAT settings of the uplink" } } }, "description": "Per-uplink NAT exception configuration on the network." } } }, "example": { "uplinks": [ { "interface": "wan1", "nat": { "enabled": false } } ] } } } } }, "summary": "Update uplink NAT settings of the specified network", "tags": [ "appliance", "configure", "uplinks", "nat" ] } }, "/networks/{networkId}/appliance/uplinks/usageHistory": { "get": { "description": "Get the sent and received bytes for each uplink of a network.", "operationId": "getNetworkApplianceUplinksUsageHistory", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 30 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 10 minutes.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "resolution", "in": "query", "description": "The time resolution in seconds for returned data. The valid resolutions are: 60, 300, 600, 1800, 3600, 86400. The default is 60.", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "startTime": { "type": "string", "format": "date-time", "description": "Start time of interval" }, "endTime": { "type": "string", "format": "date-time", "description": "End time of interval" }, "byInterface": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Uplink interface" }, "sent": { "type": "integer", "description": "Amount of data sent in bytes" }, "received": { "type": "integer", "description": "Amount of data received in bytes" } } }, "description": "List of usage data for each interface" } } } }, "example": [ { "startTime": "2021-07-22T02:00:00Z", "endTime": "2021-07-22T03:00:00Z", "byInterface": [ { "interface": "wan1", "sent": 1562063, "received": 9528787 } ] } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Get the sent and received bytes for each uplink of a network.", "tags": [ "appliance", "monitor", "uplinks", "usageHistory" ] } }, "/networks/{networkId}/appliance/vlans": { "get": { "description": "List the VLANs for a Security Appliance network", "operationId": "getNetworkApplianceVlans", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The VLAN ID of the VLAN" }, "interfaceId": { "type": "string", "description": "The interface ID of the VLAN" }, "name": { "type": "string", "description": "The name of the VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "description": "The id of the desired group policy to apply to the VLAN" }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network.", "default": "same" }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The IPs of the DHCP servers that DHCP requests should be relayed to" }, "dhcpHandling": { "type": "string", "enum": [ "Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server" ], "description": "The appliance's handling of DHCP requests on this VLAN. One of: 'Run a DHCP server', 'Relay DHCP to another server' or 'Do not respond to DHCP requests'" }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The term of DHCP leases if the appliance is running a DHCP server on this VLAN. One of: '30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week'" }, "dhcpBootOptionsEnabled": { "type": "boolean", "description": "Use DHCP boot options specified in other properties" }, "dhcpBootNextServer": { "type": "string", "description": "DHCP boot option to direct boot clients to the server to load the boot file from" }, "dhcpBootFilename": { "type": "string", "description": "DHCP boot option for boot filename" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address of the assignment" }, "name": { "type": "string", "description": "Name of the IP assignment" } }, "description": "IP assignment information, keyed by MAC address of the device" }, "description": "The DHCP fixed IP assignments on the VLAN. This should be an object that contains mappings from MAC addresses to objects that themselves each contain \"ip\" and \"name\" string fields. See the sample request/response for more details." }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The first IP in the reserved range" }, "end": { "type": "string", "description": "The last IP in the reserved range" }, "comment": { "type": "string", "description": "A text comment for the reserved range" } } }, "description": "The DHCP reserved IP ranges on the VLAN" }, "dnsNameservers": { "type": "string", "description": "The DNS nameservers used for DHCP responses, either \"upstream_dns\", \"google_dns\", \"opendns\", or a newline seperated string of IP addresses or domain names" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for the DHCP option. This should be an integer between 2 and 254." }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type for the DHCP option. One of: 'text', 'ip', 'hex' or 'integer'" }, "value": { "type": "string", "description": "The value for the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "The list of DHCP options that will be included in DHCP responses. Each object in the list should have \"code\", \"type\", and \"value\" properties." }, "vpnNatSubnet": { "type": "string", "description": "The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. This is \"0\" for the default VRF." }, "name": { "type": "string", "description": "VRF name" } }, "description": "VRF configuration on the VLAN", "x-release-stage": "general_availability" } } } }, "example": [ { "id": "1234", "interfaceId": "1284392014819", "name": "My VLAN", "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "dhcpRelayServerIps": [ "192.168.1.0", "192.168.128.0" ], "dhcpHandling": "Run a DHCP server", "dhcpLeaseTime": "1 day", "dhcpBootOptionsEnabled": false, "dhcpBootNextServer": "1.2.3.4", "dhcpBootFilename": "sample.file", "fixedIpAssignments": { "00:11:22:33:44:55": { "ip": "1.2.3.4", "name": "My favorite IP" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "dnsNameservers": "google_dns", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "vpnNatSubnet": "192.168.1.0/24", "mandatoryDhcp": { "enabled": true }, "sgt": { "id": 1234 }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "vrf": { "id": "1000", "name": "VRF BLUE" } } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List the VLANs for a Security Appliance network", "tags": [ "appliance", "configure", "vlans" ] }, "post": { "description": "Add a VLAN", "operationId": "createNetworkApplianceVlan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The VLAN ID of the new VLAN (must be between 1 and 4094)" }, "name": { "type": "string", "description": "The name of the new VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "nullable": true, "description": "The id of the desired group policy to apply to the VLAN" }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network.", "default": "same" }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN." }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "disabled": { "type": "boolean", "description": "Disable the prefix assignment" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN", "nullable": true }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP", "nullable": true }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "required": [ "type" ], "description": "The origin of the prefix" } }, "required": [ "disabled" ] }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "dhcpHandling": { "type": "string", "enum": [ "Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server" ], "description": "The appliance's handling of DHCP requests on this VLAN. One of: 'Run a DHCP server', 'Relay DHCP to another server' or 'Do not respond to DHCP requests'" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The IPs (IPv4) of the DHCP servers that DHCP requests should be relayed to. CIDR/subnet notation and hostnames are not supported." }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The term of DHCP leases if the appliance is running a DHCP server on this VLAN. One of: '30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week'" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "dhcpBootOptionsEnabled": { "type": "boolean", "description": "Use DHCP boot options specified in other properties" }, "dhcpBootNextServer": { "type": "string", "description": "DHCP boot option to direct boot clients to the server to load the boot file from" }, "dhcpBootFilename": { "type": "string", "description": "DHCP boot option for boot filename" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for the DHCP option. This should be an integer between 2 and 254." }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type for the DHCP option. One of: 'text', 'ip', 'hex' or 'integer'" }, "value": { "type": "string", "description": "The value for the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "The list of DHCP options that will be included in DHCP responses. Each object in the list should have \"code\", \"type\", and \"value\" properties." }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. Use \"0\" for the default VRF.", "nullable": true } }, "x-release-stage": "general_availability", "nullable": true, "description": "VRF configuration on the VLAN." }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Interface name of the uplink" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether NAT is enabled on the uplink" } }, "required": [ "enabled" ], "description": "NAT settings of the uplink" } }, "required": [ "interface", "nat" ] }, "description": "Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions." } }, "example": { "id": "1234", "name": "My VLAN", "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "disabled": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "dhcpHandling": "Run a DHCP server", "dhcpRelayServerIps": [ "192.168.1.0", "192.168.128.0" ], "dhcpLeaseTime": "30 minutes", "mandatoryDhcp": { "enabled": true }, "dhcpBootOptionsEnabled": true, "dhcpBootNextServer": "1.2.3.4", "dhcpBootFilename": "sample.file", "dhcpOptions": [ { "code": "3", "type": "text", "value": "five" } ], "sgt": { "id": 1234 }, "vrf": { "id": "1000" }, "uplinks": [ { "interface": "wan1", "nat": { "enabled": true } } ] }, "required": [ "id", "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The VLAN ID of the VLAN" }, "interfaceId": { "type": "string", "description": "The interface ID of the VLAN" }, "name": { "type": "string", "description": "The name of the VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "description": "The id of the desired group policy to apply to the VLAN" }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network.", "default": "same" }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. This is \"0\" for the default VRF." }, "name": { "type": "string", "description": "VRF name" } }, "description": "VRF configuration on the VLAN", "x-release-stage": "general_availability" } } }, "example": { "id": "1234", "interfaceId": "1284392014819", "name": "My VLAN", "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "mandatoryDhcp": { "enabled": true }, "sgt": { "id": 1234 }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "vrf": { "id": "1000", "name": "VRF BLUE" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Add a VLAN", "tags": [ "appliance", "configure", "vlans" ] } }, "/networks/{networkId}/appliance/vlans/settings": { "get": { "description": "Returns the enabled status of VLANs for the network", "operationId": "getNetworkApplianceVlansSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "vlansEnabled": { "type": "boolean", "description": "Boolean indicating whether VLANs are enabled (true) or disabled (false) for the network" } } }, "example": { "vlansEnabled": true } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Returns the enabled status of VLANs for the network", "tags": [ "appliance", "configure", "vlans", "settings" ] }, "put": { "description": "Enable/Disable VLANs for the given network", "operationId": "updateNetworkApplianceVlansSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "vlansEnabled": { "type": "boolean", "description": "Boolean indicating whether to enable (true) or disable (false) VLANs for the network" } }, "example": { "vlansEnabled": true } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "vlansEnabled": { "type": "boolean", "description": "Boolean indicating whether VLANs are enabled (true) or disabled (false) for the network" } } }, "example": { "vlansEnabled": true } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Enable/Disable VLANs for the given network", "tags": [ "appliance", "configure", "vlans", "settings" ] } }, "/networks/{networkId}/appliance/vlans/{vlanId}": { "get": { "description": "Return a VLAN", "operationId": "getNetworkApplianceVlan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "vlanId", "in": "path", "description": "Vlan ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The VLAN ID of the VLAN" }, "interfaceId": { "type": "string", "description": "The interface ID of the VLAN" }, "name": { "type": "string", "description": "The name of the VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "description": "The id of the desired group policy to apply to the VLAN" }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network.", "default": "same" }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The IPs of the DHCP servers that DHCP requests should be relayed to" }, "dhcpHandling": { "type": "string", "enum": [ "Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server" ], "description": "The appliance's handling of DHCP requests on this VLAN. One of: 'Run a DHCP server', 'Relay DHCP to another server' or 'Do not respond to DHCP requests'" }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The term of DHCP leases if the appliance is running a DHCP server on this VLAN. One of: '30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week'" }, "dhcpBootOptionsEnabled": { "type": "boolean", "description": "Use DHCP boot options specified in other properties" }, "dhcpBootNextServer": { "type": "string", "description": "DHCP boot option to direct boot clients to the server to load the boot file from" }, "dhcpBootFilename": { "type": "string", "description": "DHCP boot option for boot filename" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address of the assignment" }, "name": { "type": "string", "description": "Name of the IP assignment" } }, "description": "IP assignment information, keyed by MAC address of the device" }, "description": "The DHCP fixed IP assignments on the VLAN. This should be an object that contains mappings from MAC addresses to objects that themselves each contain \"ip\" and \"name\" string fields. See the sample request/response for more details." }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The first IP in the reserved range" }, "end": { "type": "string", "description": "The last IP in the reserved range" }, "comment": { "type": "string", "description": "A text comment for the reserved range" } } }, "description": "The DHCP reserved IP ranges on the VLAN" }, "dnsNameservers": { "type": "string", "description": "The DNS nameservers used for DHCP responses, either \"upstream_dns\", \"google_dns\", \"opendns\", or a newline seperated string of IP addresses or domain names" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for the DHCP option. This should be an integer between 2 and 254." }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type for the DHCP option. One of: 'text', 'ip', 'hex' or 'integer'" }, "value": { "type": "string", "description": "The value for the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "The list of DHCP options that will be included in DHCP responses. Each object in the list should have \"code\", \"type\", and \"value\" properties." }, "vpnNatSubnet": { "type": "string", "description": "The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. This is \"0\" for the default VRF." }, "name": { "type": "string", "description": "VRF name" } }, "description": "VRF configuration on the VLAN", "x-release-stage": "general_availability" } } }, "example": { "id": "1234", "interfaceId": "1284392014819", "name": "My VLAN", "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "dhcpRelayServerIps": [ "192.168.1.0", "192.168.128.0" ], "dhcpHandling": "Run a DHCP server", "dhcpLeaseTime": "1 day", "dhcpBootOptionsEnabled": false, "dhcpBootNextServer": "1.2.3.4", "dhcpBootFilename": "sample.file", "fixedIpAssignments": { "00:11:22:33:44:55": { "ip": "1.2.3.4", "name": "My favorite IP" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "dnsNameservers": "google_dns", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "vpnNatSubnet": "192.168.1.0/24", "mandatoryDhcp": { "enabled": true }, "sgt": { "id": 1234 }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "vrf": { "id": "1000", "name": "VRF BLUE" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a VLAN", "tags": [ "appliance", "configure", "vlans" ] }, "put": { "description": "Update a VLAN", "operationId": "updateNetworkApplianceVlan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "vlanId", "in": "path", "description": "Vlan ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "nullable": true, "description": "The id of the desired group policy to apply to the VLAN" }, "vpnNatSubnet": { "type": "string", "description": "The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN" }, "dhcpHandling": { "type": "string", "enum": [ "Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server" ], "description": "The appliance's handling of DHCP requests on this VLAN. One of: 'Run a DHCP server', 'Relay DHCP to another server' or 'Do not respond to DHCP requests'" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The IPs (IPv4) of the DHCP servers that DHCP requests should be relayed to. CIDR/subnet notation and hostnames are not supported." }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The term of DHCP leases if the appliance is running a DHCP server on this VLAN. One of: '30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week'" }, "dhcpBootOptionsEnabled": { "type": "boolean", "description": "Use DHCP boot options specified in other properties" }, "dhcpBootNextServer": { "type": "string", "description": "DHCP boot option to direct boot clients to the server to load the boot file from" }, "dhcpBootFilename": { "type": "string", "description": "DHCP boot option for boot filename" }, "fixedIpAssignments": { "type": "object", "description": "The DHCP fixed IP assignments on the VLAN. This should be an object that contains mappings from MAC addresses to objects that themselves each contain \"ip\" and \"name\" string fields. See the sample request/response for more details." }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The first IP in the reserved range" }, "end": { "type": "string", "description": "The last IP in the reserved range" }, "comment": { "type": "string", "description": "A text comment for the reserved range" } }, "required": [ "start", "end", "comment" ] }, "description": "The DHCP reserved IP ranges on the VLAN" }, "dnsNameservers": { "type": "string", "description": "The DNS nameservers used for DHCP responses, either \"upstream_dns\", \"google_dns\", \"opendns\", or a newline seperated string of IP addresses or domain names" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for the DHCP option. This should be an integer between 2 and 254." }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type for the DHCP option. One of: 'text', 'ip', 'hex' or 'integer'" }, "value": { "type": "string", "description": "The value for the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "The list of DHCP options that will be included in DHCP responses. Each object in the list should have \"code\", \"type\", and \"value\" properties." }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network." }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN." }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN", "nullable": true }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP", "nullable": true }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "required": [ "type" ], "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. Use \"0\" for the default VRF.", "nullable": true } }, "x-release-stage": "general_availability", "nullable": true, "description": "VRF configuration on the VLAN." }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Interface name of the uplink" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether NAT is enabled on the uplink" } }, "required": [ "enabled" ], "description": "NAT settings of the uplink" } }, "required": [ "interface", "nat" ] }, "description": "Per-uplink NAT exception override configuration on the VLAN. Applicable only for networks that support NAT exceptions." } }, "example": { "name": "My VLAN", "applianceIp": "192.168.1.2", "subnet": "192.168.1.0/24", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", "name": "Some client name" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "dnsNameservers": "google_dns", "dhcpHandling": "Run a DHCP server", "dhcpLeaseTime": "1 day", "dhcpBootOptionsEnabled": false, "dhcpBootNextServer": "1.2.3.4", "dhcpBootFilename": "sample.file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "disabled": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "mandatoryDhcp": { "enabled": true }, "adaptivePolicyGroupId": "1234", "sgt": { "id": 1234 }, "vrf": { "id": "1000", "name": "VRF BLUE" }, "uplinks": [ { "interface": "wan1", "nat": { "enabled": true } } ], "dhcpRelayServerIps": [ "192.168.1.0", "192.168.128.0" ], "vpnNatSubnet": "192.168.1.0/24" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The VLAN ID of the VLAN" }, "interfaceId": { "type": "string", "description": "The interface ID of the VLAN" }, "name": { "type": "string", "description": "The name of the VLAN" }, "subnet": { "type": "string", "description": "The subnet of the VLAN" }, "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" }, "groupPolicyId": { "type": "string", "description": "The id of the desired group policy to apply to the VLAN" }, "templateVlanType": { "type": "string", "enum": [ "same", "unique" ], "description": "Type of subnetting of the VLAN. Applicable only for template network.", "default": "same" }, "cidr": { "type": "string", "description": "CIDR of the pool of subnets. Applicable only for template network. Each network bound to the template will automatically pick a subnet from this pool to build its own VLAN." }, "mask": { "type": "integer", "description": "Mask used for the subnet of all bound to the template networks. Applicable only for template network." }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The IPs of the DHCP servers that DHCP requests should be relayed to" }, "dhcpHandling": { "type": "string", "enum": [ "Do not respond to DHCP requests", "Relay DHCP to another server", "Run a DHCP server" ], "description": "The appliance's handling of DHCP requests on this VLAN. One of: 'Run a DHCP server', 'Relay DHCP to another server' or 'Do not respond to DHCP requests'" }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The term of DHCP leases if the appliance is running a DHCP server on this VLAN. One of: '30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week'" }, "dhcpBootOptionsEnabled": { "type": "boolean", "description": "Use DHCP boot options specified in other properties" }, "dhcpBootNextServer": { "type": "string", "description": "DHCP boot option to direct boot clients to the server to load the boot file from" }, "dhcpBootFilename": { "type": "string", "description": "DHCP boot option for boot filename" }, "fixedIpAssignments": { "type": "object", "additionalProperties": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address of the assignment" }, "name": { "type": "string", "description": "Name of the IP assignment" } }, "description": "IP assignment information, keyed by MAC address of the device" }, "description": "The DHCP fixed IP assignments on the VLAN. This should be an object that contains mappings from MAC addresses to objects that themselves each contain \"ip\" and \"name\" string fields. See the sample request/response for more details." }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The first IP in the reserved range" }, "end": { "type": "string", "description": "The last IP in the reserved range" }, "comment": { "type": "string", "description": "A text comment for the reserved range" } } }, "description": "The DHCP reserved IP ranges on the VLAN" }, "dnsNameservers": { "type": "string", "description": "The DNS nameservers used for DHCP responses, either \"upstream_dns\", \"google_dns\", \"opendns\", or a newline seperated string of IP addresses or domain names" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for the DHCP option. This should be an integer between 2 and 254." }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type for the DHCP option. One of: 'text', 'ip', 'hex' or 'integer'" }, "value": { "type": "string", "description": "The value for the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "The list of DHCP options that will be included in DHCP responses. Each object in the list should have \"code\", \"type\", and \"value\" properties." }, "vpnNatSubnet": { "type": "string", "description": "The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN" }, "mandatoryDhcp": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable Mandatory DHCP on VLAN." } }, "description": "Mandatory DHCP will enforce that clients connecting to this VLAN must use the IP address assigned by the DHCP server. Clients who use a static IP address won't be able to associate. Only available on firmware versions 17.0 and above" }, "sgt": { "type": "object", "properties": { "id": { "type": "integer", "description": "Adaptive policy group ID this VLAN is assigned to.", "nullable": true } }, "description": "Security Group Tag settings for the VLAN." }, "ipv6": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable IPv6 on VLAN" }, "prefixAssignments": { "type": "array", "items": { "type": "object", "properties": { "autonomous": { "type": "boolean", "description": "Auto assign a /64 prefix from the origin to the VLAN" }, "staticPrefix": { "type": "string", "description": "Manual configuration of a /64 prefix on the VLAN" }, "staticApplianceIp6": { "type": "string", "description": "Manual configuration of the IPv6 Appliance IP" }, "origin": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "independent", "internet" ], "description": "Type of the origin" }, "interfaces": { "type": "array", "items": { "type": "string" }, "description": "Interfaces associated with the prefix" } }, "description": "The origin of the prefix" } } }, "description": "Prefix assignments on the VLAN" } }, "description": "IPv6 configuration on the VLAN" }, "vrf": { "type": "object", "properties": { "id": { "type": "string", "description": "VRF ID. This is \"0\" for the default VRF." }, "name": { "type": "string", "description": "VRF name" } }, "description": "VRF configuration on the VLAN", "x-release-stage": "general_availability" } } }, "example": { "id": "1234", "interfaceId": "1284392014819", "name": "My VLAN", "subnet": "192.168.1.0/24", "applianceIp": "192.168.1.2", "groupPolicyId": "101", "templateVlanType": "same", "cidr": "192.168.1.0/24", "mask": 28, "dhcpRelayServerIps": [ "192.168.1.0", "192.168.128.0" ], "dhcpHandling": "Run a DHCP server", "dhcpLeaseTime": "1 day", "dhcpBootOptionsEnabled": false, "dhcpBootNextServer": "1.2.3.4", "dhcpBootFilename": "sample.file", "fixedIpAssignments": { "00:11:22:33:44:55": { "ip": "1.2.3.4", "name": "My favorite IP" } }, "reservedIpRanges": [ { "start": "192.168.1.0", "end": "192.168.1.1", "comment": "A reserved IP range" } ], "dnsNameservers": "google_dns", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "vpnNatSubnet": "192.168.1.0/24", "mandatoryDhcp": { "enabled": true }, "sgt": { "id": 1234 }, "ipv6": { "enabled": true, "prefixAssignments": [ { "autonomous": false, "staticPrefix": "2001:db8:3c4d:15::/64", "staticApplianceIp6": "2001:db8:3c4d:15::1", "origin": { "type": "internet", "interfaces": [ "wan0" ] } } ] }, "vrf": { "id": "1000", "name": "VRF BLUE" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a VLAN", "tags": [ "appliance", "configure", "vlans" ] }, "delete": { "description": "Delete a VLAN from a network", "operationId": "deleteNetworkApplianceVlan", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "vlanId", "in": "path", "description": "Vlan ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Delete a VLAN from a network", "tags": [ "appliance", "configure", "vlans" ] } }, "/networks/{networkId}/appliance/vpn/bgp": { "get": { "description": "Return a Hub BGP Configuration", "operationId": "getNetworkApplianceVpnBgp", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether BGP is enabled on the appliance" }, "asNumber": { "type": "integer", "description": "Organization-specific number of the Autonomous System to which the appliance belongs" }, "ibgpHoldTimer": { "type": "integer", "description": "The iBGP hold time in seconds" }, "routerId": { "type": "string", "description": "The router ID of the appliance" }, "neighbors": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IPv4 address of the neighbor" }, "ipv6": { "type": "object", "properties": { "address": { "type": "string", "description": "The IPv6 address of the neighbor" } }, "description": "Information regarding IPv6 address of the neighbor" }, "remoteAsNumber": { "type": "integer", "description": "Remote AS number of the neighbor" }, "receiveLimit": { "type": "integer", "description": "The maximum number of routes that the appliance can receive from the neighbor" }, "allowTransit": { "type": "boolean", "description": "Whether the appliance will advertise routes learned from other Autonomous Systems" }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold time in seconds for the neighbor" }, "ebgpMultihop": { "type": "integer", "description": "The number of hops the appliance must traverse to establish a peering relationship with the neighbor" }, "sourceInterface": { "type": "string", "description": "The output interface the appliance uses to establish a peering relationship with the neighbor" }, "nextHopIp": { "type": "string", "description": "The IPv4 address of the neighbor that will establish a TCP session with the appliance" }, "ttlSecurity": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether BGP TTL security is enabled" } }, "description": "Settings for BGP TTL security to protect BGP peering sessions from forged IP attacks" }, "authentication": { "type": "object", "properties": { "password": { "type": "string", "description": "Password to configure MD5 authentication between BGP peers" } }, "description": "Authentication settings between BGP peers" }, "multiExitDiscriminator": { "type": "integer", "description": "Multi-exit Discriminator (MED) metric associated with routes received from the neighbor" }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Values to prepend to the AS_PATH BGP Attribute associated with routes received from the neighbor" }, "weight": { "type": "integer", "description": "Local weight for routes received from the neighbor" }, "filterIn": { "type": "array", "items": { "type": "string" }, "description": "Filters routes received from an eBGP neighbor. Each entry must be an IPv4 CIDR string (e.g., '10.0.0.0/8' or '10.0.0.5/32')." }, "communityOut": { "type": "array", "items": { "type": "string" }, "description": "List of BGP communities tagged to the routes advertised to an eBGP neighbor." } } }, "description": "List of eBGP neighbor configurations" } } }, "example": { "enabled": true, "asNumber": 64515, "ibgpHoldTimer": 120, "routerId": "10.15.10.2", "neighbors": [ { "ip": "10.10.10.22", "ipv6": { "address": "2002::1234:abcd:ffff:c0a8:101" }, "remoteAsNumber": 64343, "receiveLimit": 120, "allowTransit": true, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceInterface": "wan1", "nextHopIp": "1.2.3.4", "ttlSecurity": { "enabled": false }, "authentication": { "password": "abc123" }, "multiExitDiscriminator": 2, "pathPrepend": [ 1, 2 ], "weight": 10, "filterIn": [ "10.0.0.0/8", "172.16.0.0/12" ], "communityOut": [ "64515:100", "NO_EXPORT" ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return a Hub BGP Configuration", "tags": [ "appliance", "configure", "vpn", "bgp" ] }, "put": { "description": "Update a Hub BGP Configuration", "operationId": "updateNetworkApplianceVpnBgp", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable the BGP configuration. When BGP is enabled, the asNumber (ASN) will be autopopulated with the preconfigured ASN at other Hubs or a default value if there is no ASN configured." }, "asNumber": { "type": "integer", "description": "An Autonomous System Number (ASN) is required if you are to run BGP and peer with another BGP Speaker outside of the Auto VPN domain. This ASN will be applied to the entire Auto VPN domain and is only configurable for Auto VPN BGP networks. The entire 4-byte ASN range is supported. So, the ASN must be an integer between 1 and 4294967295. When absent, this field is not updated. If no value exists then it defaults to 64512." }, "ibgpHoldTimer": { "type": "integer", "description": "The iBGP holdtimer in seconds. The iBGP holdtimer must be an integer between 12 and 240. When absent, this field is not updated. If no value exists then it defaults to 240." }, "routerId": { "type": "string", "nullable": true, "description": "The router ID of the appliance" }, "neighbors": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IPv4 address of the neighbor" }, "ipv6": { "type": "object", "properties": { "address": { "type": "string", "description": "The IPv6 address of the neighbor." } }, "required": [ "address" ], "description": "Information regarding IPv6 address of the neighbor, Required if `ip` is not present." }, "remoteAsNumber": { "type": "integer", "description": "Remote ASN of the neighbor. The remote ASN must be an integer between 1 and 4294967295." }, "receiveLimit": { "type": "integer", "description": "The receive limit is the maximum number of routes that can be received from any BGP peer. The receive limit must be an integer between 0 and 2147483647. When absent, it defaults to 0." }, "allowTransit": { "type": "boolean", "description": "When this feature is on, the Meraki device will advertise routes learned from other Autonomous Systems, thereby allowing traffic between Autonomous Systems to transit this AS. When absent, it defaults to false." }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold timer in seconds for each neighbor. The eBGP hold timer must be an integer between 12 and 240." }, "ebgpMultihop": { "type": "integer", "description": "Configure this if the neighbor is not adjacent. The eBGP multi-hop must be an integer between 1 and 255." }, "sourceInterface": { "type": "string", "description": "The output interface for peering with the remote BGP peer. Valid values are: 'wan{NUMBER}' (e.g. 'wan3') or 'vlan{VLAN ID}' (e.g. 'vlan123') for MX; 'l3lan{ID}' (e.g. 'l3lan123') for Secure Router L3 interfaces." }, "nextHopIp": { "type": "string", "description": "The IPv4 address of the remote BGP peer that will establish a TCP session with the local MX." }, "ttlSecurity": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable BGP TTL security." } }, "description": "Settings for BGP TTL security to protect BGP peering sessions from forged IP attacks." }, "authentication": { "type": "object", "properties": { "password": { "type": "string", "description": "Password to configure MD5 authentication between BGP peers." } }, "description": "Authentication settings between BGP peers." }, "multiExitDiscriminator": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Prepends the AS_PATH BGP Attribute associated with routes received from the remote peer. Configurable value of ASNs to prepend. Length of the array may not exceed 10, and each ASN in the array must be an integer between 1 and 4294967295. AS_PATH is 4th in the decision tree when identical routes from multiple peers exist." }, "weight": { "type": "integer", "description": "Sets the local weight for routes received from the remote peer. Routes from peers with higher weights will be preferred. Must be an integer between 0 and 49." }, "filterIn": { "type": "array", "items": { "type": "string" }, "description": "Filters routes received from an eBGP neighbor. Each entry must be an IPv4 CIDR string (e.g., '10.0.0.0/8' or '10.0.0.5/32')." }, "communityOut": { "type": "array", "items": { "type": "string" }, "description": "List of BGP communities tagged to the routes advertised to an eBGP neighbor." } }, "required": [ "remoteAsNumber", "ebgpHoldTimer", "ebgpMultihop" ] }, "description": "List of BGP neighbors. This list replaces the existing set of neighbors. When absent, this field is not updated." } }, "example": { "enabled": true, "asNumber": 64515, "ibgpHoldTimer": 120, "routerId": "10.15.10.2", "neighbors": [ { "ip": "10.10.10.22", "ipv6": { "address": "2002::1234:abcd:ffff:c0a8:101" }, "remoteAsNumber": 64343, "receiveLimit": 120, "allowTransit": true, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceInterface": "wan1", "nextHopIp": "1.2.3.4", "ttlSecurity": { "enabled": false }, "authentication": { "password": "abc123" }, "multiExitDiscriminator": 2, "pathPrepend": [ 1, 2 ], "weight": 10, "filterIn": [ "10.0.0.0/8", "172.16.0.0/12" ], "communityOut": [ "64515:100", "NO_EXPORT" ] } ] }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether BGP is enabled on the appliance" }, "asNumber": { "type": "integer", "description": "Organization-specific number of the Autonomous System to which the appliance belongs" }, "ibgpHoldTimer": { "type": "integer", "description": "The iBGP hold time in seconds" }, "routerId": { "type": "string", "description": "The router ID of the appliance" }, "neighbors": { "type": "array", "items": { "type": "object", "properties": { "ip": { "type": "string", "description": "The IPv4 address of the neighbor" }, "ipv6": { "type": "object", "properties": { "address": { "type": "string", "description": "The IPv6 address of the neighbor" } }, "description": "Information regarding IPv6 address of the neighbor" }, "remoteAsNumber": { "type": "integer", "description": "Remote AS number of the neighbor" }, "receiveLimit": { "type": "integer", "description": "The maximum number of routes that the appliance can receive from the neighbor" }, "allowTransit": { "type": "boolean", "description": "Whether the appliance will advertise routes learned from other Autonomous Systems" }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold time in seconds for the neighbor" }, "ebgpMultihop": { "type": "integer", "description": "The number of hops the appliance must traverse to establish a peering relationship with the neighbor" }, "sourceInterface": { "type": "string", "description": "The output interface the appliance uses to establish a peering relationship with the neighbor" }, "nextHopIp": { "type": "string", "description": "The IPv4 address of the neighbor that will establish a TCP session with the appliance" }, "ttlSecurity": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether BGP TTL security is enabled" } }, "description": "Settings for BGP TTL security to protect BGP peering sessions from forged IP attacks" }, "authentication": { "type": "object", "properties": { "password": { "type": "string", "description": "Password to configure MD5 authentication between BGP peers" } }, "description": "Authentication settings between BGP peers" }, "multiExitDiscriminator": { "type": "integer", "description": "Multi-exit Discriminator (MED) metric associated with routes received from the neighbor" }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Values to prepend to the AS_PATH BGP Attribute associated with routes received from the neighbor" }, "weight": { "type": "integer", "description": "Local weight for routes received from the neighbor" }, "filterIn": { "type": "array", "items": { "type": "string" }, "description": "Filters routes received from an eBGP neighbor. Each entry must be an IPv4 CIDR string (e.g., '10.0.0.0/8' or '10.0.0.5/32')." }, "communityOut": { "type": "array", "items": { "type": "string" }, "description": "List of BGP communities tagged to the routes advertised to an eBGP neighbor." } } }, "description": "List of eBGP neighbor configurations" } } }, "example": { "enabled": true, "asNumber": 64515, "ibgpHoldTimer": 120, "routerId": "10.15.10.2", "neighbors": [ { "ip": "10.10.10.22", "ipv6": { "address": "2002::1234:abcd:ffff:c0a8:101" }, "remoteAsNumber": 64343, "receiveLimit": 120, "allowTransit": true, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceInterface": "wan1", "nextHopIp": "1.2.3.4", "ttlSecurity": { "enabled": false }, "authentication": { "password": "abc123" }, "multiExitDiscriminator": 2, "pathPrepend": [ 1, 2 ], "weight": 10, "filterIn": [ "10.0.0.0/8", "172.16.0.0/12" ], "communityOut": [ "64515:100", "NO_EXPORT" ] } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a Hub BGP Configuration", "tags": [ "appliance", "configure", "vpn", "bgp" ] } }, "/networks/{networkId}/appliance/vpn/siteToSiteVpn": { "get": { "description": "Return the site-to-site VPN settings of a network. Only valid for MX networks.", "operationId": "getNetworkApplianceVpnSiteToSiteVpn", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "The site-to-site VPN mode." }, "hubs": { "type": "array", "items": { "type": "object", "properties": { "hubId": { "type": "string", "description": "The network ID of the hub." }, "useDefaultRoute": { "type": "boolean", "description": "Indicates whether default route traffic should be sent to this hub." } } }, "description": "The list of VPN hubs, in order of preference." }, "subnets": { "type": "array", "items": { "type": "object", "properties": { "localSubnet": { "type": "string", "description": "The CIDR notation subnet used within the VPN" }, "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not VPN subnet translation is enabled for the subnet" }, "remoteSubnet": { "type": "string", "description": "The translated subnet to be used in the VPN" } }, "description": "Configuration of NAT for the subnet" } } }, "description": "The list of subnets and their VPN presence." }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic to this VPN peer." } }, "description": "Security Group Tag settings for the VPN peer." }, "subnet": { "type": "object", "properties": { "nat": { "type": "object", "properties": { "isAllowed": { "type": "boolean", "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." } }, "description": "Configuration of NAT for subnets" } }, "description": "Configuration of subnet features" }, "hostTranslations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the NAT host." }, "local": { "type": "object", "properties": { "address": { "type": "string", "description": "The local IP address of the translated host." } }, "description": "Configuration of the local address of the translated host." }, "remote": { "type": "object", "properties": { "address": { "type": "string", "description": "The remote IP address of the translated host." } }, "description": "Configuration of the remote address of the translated host." } } }, "description": "The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2" } } }, "example": { "mode": "spoke", "hubs": [ { "hubId": "N_4901849", "useDefaultRoute": true } ], "subnets": [ { "localSubnet": "192.168.1.0/24", "useVpn": true, "nat": { "enabled": true, "remoteSubnet": "192.168.2.0/24" } } ], "sgt": { "enabled": true }, "subnet": { "nat": { "isAllowed": true } }, "hostTranslations": [ { "name": "Host 1", "local": { "address": "192.168.1.10" }, "remote": { "address": "72.168.2.10" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the site-to-site VPN settings of a network", "tags": [ "appliance", "configure", "vpn", "siteToSiteVpn" ] }, "put": { "description": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", "operationId": "updateNetworkApplianceVpnSiteToSiteVpn", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "hub", "none", "spoke" ], "description": "The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'" }, "hubs": { "type": "array", "items": { "type": "object", "properties": { "hubId": { "type": "string", "description": "The network ID of the hub." }, "useDefaultRoute": { "type": "boolean", "description": "Only valid in 'spoke' mode. Indicates whether default route traffic should be sent to this hub." } }, "required": [ "hubId" ] }, "description": "The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required." }, "subnets": { "type": "array", "items": { "type": "object", "properties": { "localSubnet": { "type": "string", "description": "The CIDR notation subnet used within the VPN" }, "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not VPN subnet translation is enabled for the subnet" }, "remoteSubnet": { "type": "string", "description": "The translated subnet to be used in the VPN" } }, "description": "Configuration of NAT for the subnet" } }, "required": [ "localSubnet" ] }, "description": "The list of subnets and their VPN presence." }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic to this VPN peer." } }, "description": "Security Group Tag settings for the VPN peer." }, "subnet": { "type": "object", "properties": { "nat": { "type": "object", "properties": { "isAllowed": { "type": "boolean", "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." } }, "description": "Configuration of NAT for subnets" } }, "description": "Configuration of subnet features" }, "hostTranslations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the translated host." }, "local": { "type": "object", "properties": { "address": { "type": "string", "description": "The local IP address of the translated host." } }, "description": "Configuration of the local address of the translated host." }, "remote": { "type": "object", "properties": { "address": { "type": "string", "description": "The remote IP address of the translated host." } }, "description": "Configuration of the remote address of the translated host." } } }, "description": "The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2" } }, "example": { "mode": "spoke", "hubs": [ { "hubId": "N_4901849", "useDefaultRoute": true } ], "subnets": [ { "localSubnet": "192.168.1.0/24", "useVpn": true, "nat": { "enabled": true, "remoteSubnet": "192.168.2.0/24" } } ], "sgt": { "enabled": true }, "subnet": { "nat": { "isAllowed": true } }, "hostTranslations": [ { "name": "Host 1", "local": { "address": "192.168.1.10" }, "remote": { "address": "72.168.2.10" } } ] }, "required": [ "mode" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mode": { "type": "string", "description": "The site-to-site VPN mode." }, "hubs": { "type": "array", "items": { "type": "object", "properties": { "hubId": { "type": "string", "description": "The network ID of the hub." }, "useDefaultRoute": { "type": "boolean", "description": "Indicates whether default route traffic should be sent to this hub." } } }, "description": "The list of VPN hubs, in order of preference." }, "subnets": { "type": "array", "items": { "type": "object", "properties": { "localSubnet": { "type": "string", "description": "The CIDR notation subnet used within the VPN" }, "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not VPN subnet translation is enabled for the subnet" }, "remoteSubnet": { "type": "string", "description": "The translated subnet to be used in the VPN" } }, "description": "Configuration of NAT for the subnet" } } }, "description": "The list of subnets and their VPN presence." }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not Peer SGT is enabled for traffic to this VPN peer." } }, "description": "Security Group Tag settings for the VPN peer." }, "subnet": { "type": "object", "properties": { "nat": { "type": "object", "properties": { "isAllowed": { "type": "boolean", "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." } }, "description": "Configuration of NAT for subnets" } }, "description": "Configuration of subnet features" }, "hostTranslations": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the NAT host." }, "local": { "type": "object", "properties": { "address": { "type": "string", "description": "The local IP address of the translated host." } }, "description": "Configuration of the local address of the translated host." }, "remote": { "type": "object", "properties": { "address": { "type": "string", "description": "The remote IP address of the translated host." } }, "description": "Configuration of the remote address of the translated host." } } }, "description": "The list of VPN host translations. Host translations are supported starting from MX firmware version 26.1.2" } } }, "example": { "mode": "spoke", "hubs": [ { "hubId": "N_4901849", "useDefaultRoute": true } ], "subnets": [ { "localSubnet": "192.168.1.0/24", "useVpn": true, "nat": { "enabled": true, "remoteSubnet": "192.168.2.0/24" } } ], "sgt": { "enabled": true }, "subnet": { "nat": { "isAllowed": true } }, "hostTranslations": [ { "name": "Host 1", "local": { "address": "192.168.1.10" }, "remote": { "address": "72.168.2.10" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the site-to-site VPN settings of a network", "tags": [ "appliance", "configure", "vpn", "siteToSiteVpn" ] } }, "/networks/{networkId}/appliance/warmSpare": { "get": { "description": "Return MX warm spare settings", "operationId": "getNetworkApplianceWarmSpare", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Is the warm spare enabled" }, "primarySerial": { "type": "string", "description": "Serial number of the primary appliance" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare appliance" }, "uplinkMode": { "type": "string", "description": "Uplink mode, either virtual or public" }, "wan1": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 1" }, "subnet": { "type": "string", "description": "Subnet used for WAN 1" } }, "description": "WAN 1 IP and subnet" }, "wan2": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 2" }, "subnet": { "type": "string", "description": "Subnet used for WAN 2" } }, "description": "WAN 2 IP and subnet" } } }, "example": { "enabled": true, "primarySerial": "Q234-ABCD-5678", "spareSerial": "Q234-ABCD-5678", "uplinkMode": "virtual", "wan1": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" }, "wan2": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return MX warm spare settings", "tags": [ "appliance", "configure", "warmSpare" ] }, "put": { "description": "Update MX warm spare settings", "operationId": "updateNetworkApplianceWarmSpare", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable warm spare" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare appliance" }, "uplinkMode": { "type": "string", "description": "Uplink mode, either virtual or public" }, "virtualIp1": { "type": "string", "description": "The WAN 1 shared IP" }, "virtualIp2": { "type": "string", "description": "The WAN 2 shared IP" } }, "example": { "enabled": true, "spareSerial": "Q234-ABCD-5678", "uplinkMode": "virtual", "virtualIp1": "1.2.3.4", "virtualIp2": "1.2.3.4" }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Is the warm spare enabled" }, "primarySerial": { "type": "string", "description": "Serial number of the primary appliance" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare appliance" }, "uplinkMode": { "type": "string", "description": "Uplink mode, either virtual or public" }, "wan1": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 1" }, "subnet": { "type": "string", "description": "Subnet used for WAN 1" } }, "description": "WAN 1 IP and subnet" }, "wan2": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 2" }, "subnet": { "type": "string", "description": "Subnet used for WAN 2" } }, "description": "WAN 2 IP and subnet" } } }, "example": { "enabled": true, "primarySerial": "Q234-ABCD-5678", "spareSerial": "Q234-ABCD-5678", "uplinkMode": "virtual", "wan1": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" }, "wan2": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update MX warm spare settings", "tags": [ "appliance", "configure", "warmSpare" ] } }, "/networks/{networkId}/appliance/warmSpare/swap": { "post": { "description": "Swap MX primary and warm spare appliances", "operationId": "swapNetworkApplianceWarmSpare", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Is the warm spare enabled" }, "primarySerial": { "type": "string", "description": "Serial number of the primary appliance" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare appliance" }, "uplinkMode": { "type": "string", "description": "Uplink mode, either virtual or public" }, "wan1": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 1" }, "subnet": { "type": "string", "description": "Subnet used for WAN 1" } }, "description": "WAN 1 IP and subnet" }, "wan2": { "type": "object", "properties": { "ip": { "type": "string", "description": "IP address used for WAN 2" }, "subnet": { "type": "string", "description": "Subnet used for WAN 2" } }, "description": "WAN 2 IP and subnet" } } }, "example": { "enabled": true, "primarySerial": "Q234-ABCD-5678", "spareSerial": "Q234-ABCD-5678", "uplinkMode": "virtual", "wan1": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" }, "wan2": { "ip": "1.2.3.4", "subnet": "192.168.1.0/24" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Swap MX primary and warm spare appliances", "tags": [ "appliance", "configure", "warmSpare" ] } }, "/organizations/{organizationId}/appliance/devices/interfaces/l3": { "get": { "description": "List L3 interfaces across networks for the organization", "operationId": "getOrganizationApplianceDevicesInterfacesL3", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkIds", "in": "query", "description": "Optional Network IDs to filter results", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address" }, "subnet": { "type": "string", "description": "IPv4 subnet in CIDR notation" } }, "description": "IPv4 configuration" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID" } }, "description": "Network" }, "port": { "type": "object", "properties": { "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Read-only full interface name for the port", "nullable": true }, "slot": { "type": "integer", "description": "Slot number for the port", "nullable": true }, "subslot": { "type": "integer", "description": "Subslot number for the port", "nullable": true }, "number": { "type": "integer", "description": "Leaf port number for the port", "nullable": true } }, "description": "Structured interface identifier for the port" } }, "description": "Port configuration" } } }, "description": "L3 interfaces" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of interfaces matching the query" }, "remaining": { "type": "integer", "description": "Remaining interfaces beyond this page" } }, "description": "Item counts" } }, "description": "Counts related to pagination" } }, "description": "Pagination metadata" } } }, "example": { "items": [ { "interfaceId": "1234", "ipv4": { "address": "192.168.1.2", "subnet": "192.168.1.0/24" }, "network": { "id": "L_123456" }, "port": { "interface": { "name": "GigabitEthernet0/0/1", "slot": 0, "subslot": 0, "number": 1 } } } ], "meta": { "counts": { "items": { "total": 10, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List L3 interfaces across networks for the organization", "tags": [ "appliance", "configure", "devices", "interfaces", "l3" ] } }, "/organizations/{organizationId}/appliance/devices/interfaces/ports/byDevice": { "get": { "description": "Returns port configurations for appliances in a given organization", "operationId": "getOrganizationApplianceDevicesInterfacesPortsByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "Parameter to filter the results by device serials", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "interfaces", "in": "query", "description": "Parameter to filter the results by specific interfaces", "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The interface name of the port" }, "slot": { "type": "integer", "description": "The slot of the port", "nullable": true }, "subslot": { "type": "integer", "description": "The subslot of the port", "nullable": true }, "number": { "type": "integer", "description": "The number of the port" } } } } }, { "name": "numbers", "in": "query", "description": "Parameter to filter the results by specific ports", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Appliance serial" }, "ports": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "string", "description": "A port's identifier as labeled on the device" }, "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "The full interface identifier for this port" }, "slot": { "type": "integer", "description": "The slot for this port", "nullable": true }, "subslot": { "type": "integer", "description": "The subslot for this port", "nullable": true }, "number": { "type": "integer", "description": "The leaf interface number for this port" } }, "description": "The structured interface identifier for this port" }, "enabled": { "type": "boolean", "description": "Indicates whether the port is enabled" }, "name": { "type": "string", "description": "The name of the interface the port is mapped to" }, "personality": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "lan", "wan" ], "description": "The type of interface, 'wan' or 'lan', the port is configured as" }, "isFlexible": { "type": "boolean", "description": "Indicates whether the port interface type can convert between WAN and LAN" }, "layer": { "type": "object", "properties": { "mode": { "type": "integer", "enum": [ 2, 3 ], "description": "The layer at which the port operates" }, "isFlexible": { "type": "boolean", "description": "Whether the layer mode is mutable" } }, "description": "Describes the port's layer configurability" } }, "description": "Describes the port's configurability" }, "uplink": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "cellular", "ethernet" ], "description": "Describes the uplink device" }, "primary": { "type": "boolean", "description": "Indicates whether the uplink has the highest priority among the device's WAN ports" } }, "description": "The port's settings when in WAN mode" }, "downlink": { "type": "object", "properties": { "mode": { "type": "string", "description": "Indicates whether the port is in 'trunk' or 'access' mode" }, "sgt": { "type": "object", "properties": { "id": { "type": "string", "description": "Adaptive policy group ID that all traffic originating from this port is assigned to", "nullable": true } }, "description": "Security Group Tag settings for this port" }, "access": { "type": "object", "properties": { "vlan": { "type": "string", "description": "The VLAN for which this port will accept and pass traffic in 'access' mode. All untagged traffic will automatically be treated as if it belonged to this VLAN" }, "policy": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "802.1X", "MAC RADIUS", "hybrid", "open" ], "description": "The access policy that will be enforced by the 'access' VLAN", "nullable": true } }, "description": "The access policy settings for this port" } }, "description": "The port's settings when in 'access' mode" }, "trunk": { "type": "object", "properties": { "nativeVlan": { "type": "string", "description": "The Native VLAN for the port. All untagged traffic that comes in on this port will be treated as if it belonged to this VLAN. This can also be set to 0 to drop untagged traffic." }, "allowedVlans": { "type": "array", "items": { "type": "string" }, "description": "The VLANs for which this port will accept and pass traffic in 'trunk' mode. This must include the Native VLAN if one is set" }, "sgt": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the trunk port is Peer SGT capable" } }, "description": "Security Group Tag settings for this trunk port" } }, "description": "The port's settings when in 'trunk' mode" } }, "description": "The port's VLAN settings when in LAN mode" } } }, "description": "Port configurations" } } }, "description": "Port configurations by appliance" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "ports": [ { "number": "1", "interface": { "name": "GigabitEthernet1/2/3", "slot": 1, "subslot": 2, "number": 3 }, "enabled": true, "name": "wan1", "personality": { "mode": "wan", "isFlexible": false, "layer": { "mode": 3, "isFlexible": false } }, "uplink": { "type": "ethernet", "primary": true }, "downlink": { "mode": "access", "sgt": { "id": "1234" }, "access": { "vlan": "1", "policy": { "type": "802.1X" } }, "trunk": { "nativeVlan": "2", "allowedVlans": [ "2", "3", "4", "5" ], "sgt": { "enabled": false } } } } ] } ] } } } } }, "summary": "Returns port configurations for appliances in a given organization", "tags": [ "appliance", "configure", "devices", "interfaces", "ports", "byDevice" ] } }, "/organizations/{organizationId}/appliance/devices/ports/transceivers/readings/history/byDevice": { "get": { "description": "Return time-series digital optical monitoring (DOM) readings for ports on each DOM-enabled Catalyst appliance in an organization.", "operationId": "getOrganizationApplianceDevicesPortsTransceiversReadingsHistoryByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 10. Default is 5.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 30 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 30 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 30 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.", "schema": { "type": "number", "format": "float", "maximum": 2592000 } }, { "name": "interval", "in": "query", "description": "The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 1200. Interval is calculated if time params are provided.", "schema": { "type": "integer" } }, { "name": "networkIds", "in": "query", "description": "Networks for which information should be gathered.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter usage by appliance serial.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portIds", "in": "query", "description": "Optional parameter to filter usage by port ID.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Unique serial number for the Catalyst appliance" }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "Unique identifier for the port" }, "interfaceName": { "type": "string", "description": "Interface name for the port (e.g. FiveGigabitEthernet0/0/9)" }, "indices": { "type": "object", "properties": { "slot": { "type": "integer", "description": "The slot number for the port" }, "subslot": { "type": "integer", "description": "The subslot number for the port" }, "port": { "type": "integer", "description": "The port number for the port" } }, "description": "Unique identifier location information for the port" }, "readings": { "type": "array", "items": { "type": "object", "properties": { "startTs": { "type": "string", "format": "date-time", "description": "Timestamp for the beginning of the bandwidth usage snapshot, exclusive." }, "endTs": { "type": "string", "format": "date-time", "description": "Timestamp for the end of the bandwidth usage snapshot, inclusive." }, "sfpProductId": { "type": "string", "description": "The product ID for the Small Form Factor Pluggable (SFP) currently inserted into the given port" }, "byMetric": { "type": "object", "properties": { "power": { "type": "object", "properties": { "transmit": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum value for power transmitted by the port over the interval, in dBm" }, "maximum": { "type": "number", "format": "float", "description": "The maximum value for power transmitted by the port over the interval, in dBm" }, "median": { "type": "number", "format": "float", "description": "The median value for power transmitted by the port over the interval, in dBm" } }, "description": "Information about the power transmitted by the port" }, "receive": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum value for power received by the port over the interval, in dBm" }, "maximum": { "type": "number", "format": "float", "description": "The maximum value for power received by the port over the interval, in dBm" }, "median": { "type": "number", "format": "float", "description": "The median value for power received by the port over the interval, in dBm" } }, "description": "Information about the power received by the port" } }, "description": "Information about the power transmitted and received by the port" }, "temperature": { "type": "object", "properties": { "fahrenheit": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum temperature of the port over the interval, in fahrenheit" }, "maximum": { "type": "number", "format": "float", "description": "The maximum temperature of the port over the interval, in fahrenheit" }, "median": { "type": "number", "format": "float", "description": "The median temperature of the port over the interval, in fahrenheit" } }, "description": "Information about the temperature of the port in fahrenheit" }, "celsius": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum temperature of the port over the interval, in celsius" }, "maximum": { "type": "number", "format": "float", "description": "The maximum temperature of the port over the interval, in celsius" }, "median": { "type": "number", "format": "float", "description": "The median temperature of the port over the interval, in celsius" } }, "description": "Information about the temperature of the port in celsius" } }, "description": "Information about the temperature of the port" }, "supplyVoltage": { "type": "object", "properties": { "level": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum supply voltage for the port over the interval, in volts" }, "maximum": { "type": "number", "format": "float", "description": "The maximum supply voltage for the port over the interval, in volts" }, "median": { "type": "number", "format": "float", "description": "The median supply voltage for the port over the interval, in volts" } }, "description": "Information about the supply voltage level of the port, in volts" } }, "description": "Information about the supply voltage of the port" }, "laserBiasCurrent": { "type": "object", "properties": { "draw": { "type": "object", "properties": { "minimum": { "type": "number", "format": "float", "description": "The minimum laser bias current for the port over the interval, in mA" }, "maximum": { "type": "number", "format": "float", "description": "The maximum laser bias current for the port over the interval, in mA" }, "median": { "type": "number", "format": "float", "description": "The median laser bias current for the port over the interval, in mA" } }, "description": "Information about the laser bias current draw of the port, in mA" } }, "description": "Information about the laser bias current of the port" } }, "description": "All reading data, grouped by the reading metric" } } }, "description": "The digital optical monitoring readings for the individual port, with the most recent snapshot first" } } }, "description": "Ports associated with the given appliance" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The network ID" }, "name": { "type": "string", "description": "The name of the network" } }, "description": "Information regarding the network the appliance belongs to" } } }, "description": "The top-level propery containing all digital optical monitorting data." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of serials." }, "remaining": { "type": "integer", "description": "The number of serials remaining based on current pagination location within the dataset." } }, "description": "The count metadata." } }, "description": "Count metadata related to this result set." }, "units": { "type": "object", "properties": { "power": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the unit for transmit and receive power values" }, "symbol": { "type": "string", "description": "The symbol of the unit for transmit and receive power values" } }, "description": "The units for the transmit and receive power values" }, "supplyVoltage": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the unit for supply voltage values" }, "symbol": { "type": "string", "description": "The symbol of the unit for supply voltage values" } }, "description": "The units for the supply voltage values" }, "laserBiasCurrent": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the unit for laser bias current values" }, "symbol": { "type": "string", "description": "The symbol of the unit for laser bias current values" } }, "description": "The units for the laser bias current values" } }, "description": "Information about which units each reading is provided in" } }, "description": "Other metadata related to this result set." } } }, "example": { "items": [ { "serial": "Q234-ABCD-0001", "ports": [ { "portId": "1", "interfaceName": "FiveGigabitEthernet0/0/1", "indices": { "slot": 0, "subslot": 0, "port": 1 }, "readings": [ { "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "sfpProductId": "PRODUCT1", "byMetric": { "power": { "transmit": { "minimum": 4.0, "maximum": 5.0, "median": 4.5 }, "receive": { "minimum": 4.0, "maximum": 5.0, "median": 4.5 } }, "temperature": { "fahrenheit": { "minimum": 30.0, "maximum": 33.0, "median": 32.0 }, "celsius": { "minimum": -1.1, "maximum": 0.6, "median": 0.0 } }, "supplyVoltage": { "level": { "minimum": 3.0, "maximum": 3.33, "median": 3.11 } }, "laserBiasCurrent": { "draw": { "minimum": 5.0, "maximum": 7.0, "median": 5.5 } } } } ] } ], "network": { "id": "N_12345678", "name": "San Francisco Office" } } ], "meta": { "counts": { "items": { "total": 4, "remaining": 2 } }, "units": { "power": { "name": "decibel milliwatts", "symbol": "dBm" }, "supplyVoltage": { "name": "volts", "symbol": "V" }, "laserBiasCurrent": { "name": "milliamps", "symbol": "mA" } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return time-series digital optical monitoring (DOM) readings for ports on each DOM-enabled Catalyst appliance in an organization.", "tags": [ "appliance", "monitor", "devices", "ports", "transceivers", "readings", "history", "byDevice" ] } }, "/organizations/{organizationId}/appliance/devices/redundancy/byNetwork": { "get": { "description": "Return MX warm spare settings", "operationId": "getOrganizationApplianceDevicesRedundancyByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 5 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Dashboard network ID" }, "name": { "type": "string", "description": "Dashboard network name" }, "enabled": { "type": "boolean", "description": "Is warm spare enabled" }, "mode": { "type": "string", "enum": [ "active-active", "active-passive", "disabled" ], "description": "HA mode (disabled|active-passive|active-active)" }, "designations": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Appliance serial" }, "priority": { "type": "integer", "description": "Role priority (1=primary)" } } }, "description": "Ordered HA roles (1=primary, 2=spare)" }, "uplink": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "public", "virtual" ], "description": "Uplink mode (public|virtual)" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1|wan2|wanN)" }, "addresses": { "type": "array", "items": { "type": "object", "properties": { "address": { "type": "string", "description": "VIP address" }, "subnet": { "type": "string", "description": "VIP subnet (optional in PUT)" } } }, "description": "Addresses for this interface" } } }, "description": "List of WAN interfaces" }, "sharing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable uplink sharing" }, "vlanId": { "type": "string", "description": "Uplink sharing VLAN ID", "nullable": true }, "byInterface": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name (wan1, wan2, ...)" }, "parent": { "type": "string", "description": "Parent appliance role (primary|secondary)" } } }, "description": "Per-interface sharing configuration" } }, "description": "HA uplink sharing properties" }, "loadBalancing": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable load balancing" }, "vlanSelection": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "auto", "device" ], "description": "Selection mode (auto|device)" }, "byDevice": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial" }, "vlanIds": { "type": "array", "items": { "type": "integer" }, "description": "VLAN IDs for this device" } } }, "description": "Per-device VLAN selection" } }, "description": "VLAN selection strategy" } }, "description": "Load balancing configuration" } }, "description": "Uplink configuration" } } }, "example": { "networkId": "L_12345", "name": "some_locale", "enabled": true, "mode": "active-active", "designations": [ { "serial": "Q234-ABCD-5678", "priority": 1 } ], "uplink": { "mode": "virtual", "interfaces": [ { "name": "wan1", "addresses": [ { "address": "1.2.3.4", "subnet": "192.168.1.0/24" } ] } ], "sharing": { "enabled": true, "vlanId": "100", "byInterface": [ { "name": "wan1", "parent": "primary" } ] }, "loadBalancing": { "enabled": true, "vlanSelection": { "mode": "auto", "byDevice": [ { "serial": "Q234-ABCD-5678", "vlanIds": [ 1, 2 ] } ] } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return MX warm spare settings", "tags": [ "appliance", "configure", "devices", "redundancy", "byNetwork" ] } }, "/organizations/{organizationId}/appliance/dns/local/profiles": { "get": { "description": "Fetch the local DNS profiles used in the organization", "operationId": "getOrganizationApplianceDnsLocalProfiles", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by profile IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" } } } }, "example": [ { "profileId": "123456", "name": "Default profile" } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Fetch the local DNS profiles used in the organization", "tags": [ "appliance", "configure", "dns", "local", "profiles" ] }, "post": { "description": "Create a new local DNS profile", "operationId": "createOrganizationApplianceDnsLocalProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of profile" } }, "example": { "name": "Default profile" }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" } } }, "example": { "profileId": "123456", "name": "Default profile" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Create a new local DNS profile", "tags": [ "appliance", "configure", "dns", "local", "profiles" ] } }, "/organizations/{organizationId}/appliance/dns/local/profiles/assignments": { "get": { "description": "Fetch the local DNS profile assignments in the organization", "operationId": "getOrganizationApplianceDnsLocalProfilesAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by profile IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by network IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of local DNS profile assignment" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ], "meta": { "counts": { "items": { "total": 10, "remaining": 0 } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Fetch the local DNS profile assignments in the organization", "tags": [ "appliance", "configure", "dns", "local", "profiles", "assignments" ] } }, "/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkCreate": { "post": { "description": "Assign the local DNS profile to networks in the organization", "operationId": "bulkOrganizationApplianceDnsLocalProfilesAssignmentsCreate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List containing the network ID and Profile ID" } }, "example": { "items": [ { "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of local DNS profile assignment" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Assign the local DNS profile to networks in the organization", "tags": [ "appliance", "configure", "dns", "local", "profiles", "assignments" ] } }, "/organizations/{organizationId}/appliance/dns/local/profiles/assignments/bulkDelete": { "post": { "description": "Unassign the local DNS profile to networks in the organization", "operationId": "createOrganizationApplianceDnsLocalProfilesAssignmentsBulkDelete", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" } } }, "description": "List containing the assignment ID" } }, "example": { "items": [ { "assignmentId": "123456" } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of local DNS profile assignment" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Unassign the local DNS profile to networks in the organization", "tags": [ "appliance", "configure", "dns", "local", "profiles", "assignments", "bulkDelete" ] } }, "/organizations/{organizationId}/appliance/dns/local/profiles/{profileId}": { "put": { "description": "Update a local DNS profile", "operationId": "updateOrganizationApplianceDnsLocalProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of profile" } }, "example": { "name": "Default profile" }, "required": [ "name" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" } } }, "example": { "profileId": "123456", "name": "Default profile" } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a local DNS profile", "tags": [ "appliance", "configure", "dns", "local", "profiles" ] }, "delete": { "description": "Deletes a local DNS profile", "operationId": "deleteOrganizationApplianceDnsLocalProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Deletes a local DNS profile", "tags": [ "appliance", "configure", "dns", "local", "profiles" ] } }, "/organizations/{organizationId}/appliance/dns/local/records": { "get": { "description": "Fetch the DNS records used in local DNS profiles", "operationId": "getOrganizationApplianceDnsLocalRecords", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by profile IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "recordId": { "type": "string", "description": "Record ID" }, "hostname": { "type": "string", "description": "Hostname for the DNS record" }, "address": { "type": "string", "description": "IP for the DNS record" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "Profile ID" } }, "description": "The profile the DNS record is associated with" } } } }, "example": [ { "recordId": "12345", "hostname": "www.test.com", "address": "10.1.1.0", "profile": { "id": "1" } } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Fetch the DNS records used in local DNS profiles", "tags": [ "appliance", "configure", "dns", "local", "records" ] }, "post": { "description": "Create a new local DNS record", "operationId": "createOrganizationApplianceDnsLocalRecord", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "hostname": { "type": "string", "description": "Hostname for the DNS record" }, "address": { "type": "string", "description": "IP for the DNS record" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "Profile ID" } }, "description": "The profile the DNS record is associated with" } }, "example": { "hostname": "www.test.com", "address": "10.1.1.0", "profile": { "id": "1" } }, "required": [ "hostname", "address", "profile" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "recordId": { "type": "string", "description": "Record ID" }, "hostname": { "type": "string", "description": "Hostname for the DNS record" }, "address": { "type": "string", "description": "IP for the DNS record" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "Profile ID" } }, "description": "The profile the DNS record is associated with" } } } }, "example": [ { "recordId": "12345", "hostname": "www.test.com", "address": "10.1.1.0", "profile": { "id": "1" } } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Create a new local DNS record", "tags": [ "appliance", "configure", "dns", "local", "records" ] } }, "/organizations/{organizationId}/appliance/dns/local/records/{recordId}": { "put": { "description": "Updates a local DNS record", "operationId": "updateOrganizationApplianceDnsLocalRecord", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "recordId", "in": "path", "description": "Record ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "hostname": { "type": "string", "description": "Hostname for the DNS record" }, "address": { "type": "string", "description": "IP for the DNS record" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "Profile ID" } }, "description": "The profile the DNS record is associated with" } }, "example": { "hostname": "www.test.com", "address": "10.1.1.0", "profile": { "id": "1" } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "recordId": { "type": "string", "description": "Record ID" }, "hostname": { "type": "string", "description": "Hostname for the DNS record" }, "address": { "type": "string", "description": "IP for the DNS record" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "Profile ID" } }, "description": "The profile the DNS record is associated with" } } }, "example": { "recordId": "12345", "hostname": "www.test.com", "address": "10.1.1.0", "profile": { "id": "1" } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Updates a local DNS record", "tags": [ "appliance", "configure", "dns", "local", "records" ] }, "delete": { "description": "Deletes a local DNS record", "operationId": "deleteOrganizationApplianceDnsLocalRecord", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "recordId", "in": "path", "description": "Record ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Deletes a local DNS record", "tags": [ "appliance", "configure", "dns", "local", "records" ] } }, "/organizations/{organizationId}/appliance/dns/split/profiles": { "get": { "description": "Fetch the split DNS profiles used in the organization", "operationId": "getOrganizationApplianceDnsSplitProfiles", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by profile IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" }, "hostnames": { "type": "array", "items": { "type": "string" }, "description": "The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "The nameserver address(es) to use for redirection. A maximum of one address is supported." } }, "description": "Contains the nameserver information for redirection." } } } }, "example": [ { "profileId": "123456", "name": "Default profile", "hostnames": [ "*.test1.com", "*.test2.com" ], "nameservers": { "addresses": [ "12.1.10.1" ] } } ] } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Fetch the split DNS profiles used in the organization", "tags": [ "appliance", "configure", "dns", "split", "profiles" ] }, "post": { "description": "Create a new split DNS profile", "operationId": "createOrganizationApplianceDnsSplitProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of profile" }, "hostnames": { "type": "array", "items": { "type": "string" }, "description": "The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "The nameserver address(es) to use for redirection. A maximum of one address is supported." } }, "description": "Contains the nameserver information for redirection." } }, "example": { "name": "Default profile", "hostnames": [ "*.test1.com", "*.test2.com" ], "nameservers": { "addresses": [ "12.1.10.1" ] } }, "required": [ "name", "hostnames", "nameservers" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" }, "hostnames": { "type": "array", "items": { "type": "string" }, "description": "The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "The nameserver address(es) to use for redirection. A maximum of one address is supported." } }, "description": "Contains the nameserver information for redirection." } } }, "example": { "profileId": "123456", "name": "Default profile", "hostnames": [ "*.test1.com", "*.test2.com" ], "nameservers": { "addresses": [ "12.1.10.1" ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Create a new split DNS profile", "tags": [ "appliance", "configure", "dns", "split", "profiles" ] } }, "/organizations/{organizationId}/appliance/dns/split/profiles/assignments": { "get": { "description": "Fetch the split DNS profile assignments in the organization", "operationId": "getOrganizationApplianceDnsSplitProfilesAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by profile IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by network IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of split DNS profile assignment" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ], "meta": { "counts": { "items": { "total": 10, "remaining": 0 } } } } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Fetch the split DNS profile assignments in the organization", "tags": [ "appliance", "configure", "dns", "split", "profiles", "assignments" ] } }, "/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkCreate": { "post": { "description": "Assign the split DNS profile to networks in the organization", "operationId": "createOrganizationApplianceDnsSplitProfilesAssignmentsBulkCreate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List containing the network ID and Profile ID" } }, "example": { "items": [ { "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of split DNS profile assignment" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Assign the split DNS profile to networks in the organization", "tags": [ "appliance", "configure", "dns", "split", "profiles", "assignments", "bulkCreate" ] } }, "/organizations/{organizationId}/appliance/dns/split/profiles/assignments/bulkDelete": { "post": { "description": "Unassign the split DNS profile to networks in the organization", "operationId": "createOrganizationApplianceDnsSplitProfilesAssignmentsBulkDelete", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" } } }, "description": "List containing the assignment ID" } }, "example": { "items": [ { "assignmentId": "123456" } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network" } }, "description": "The network attached to the profile" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile" } }, "description": "The profile the network is attached to" } } }, "description": "List of split DNS profile assignment" } } }, "example": { "items": [ { "assignmentId": "123456", "network": { "id": "N_123456" }, "profile": { "id": "1234" } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Unassign the split DNS profile to networks in the organization", "tags": [ "appliance", "configure", "dns", "split", "profiles", "assignments", "bulkDelete" ] } }, "/organizations/{organizationId}/appliance/dns/split/profiles/{profileId}": { "put": { "description": "Update a split DNS profile", "operationId": "updateOrganizationApplianceDnsSplitProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of profile" }, "hostnames": { "type": "array", "items": { "type": "string" }, "description": "The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "The nameserver address(es) to use for redirection. A maximum of one address is supported." } }, "description": "Contains the nameserver information for redirection." } }, "example": { "name": "Default profile", "hostnames": [ "*.test1.com", "*.test2.com" ], "nameservers": { "addresses": [ "12.1.10.1" ] } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "Profile ID" }, "name": { "type": "string", "description": "Name of profile" }, "hostnames": { "type": "array", "items": { "type": "string" }, "description": "The hostname patterns to match for redirection. For more information on Split DNS hostname pattern formatting, please consult the Split DNS KB." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "The nameserver address(es) to use for redirection. A maximum of one address is supported." } }, "description": "Contains the nameserver information for redirection." } } }, "example": { "profileId": "123456", "name": "Default profile", "hostnames": [ "*.test1.com", "*.test2.com" ], "nameservers": { "addresses": [ "12.1.10.1" ] } } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update a split DNS profile", "tags": [ "appliance", "configure", "dns", "split", "profiles" ] }, "delete": { "description": "Deletes a split DNS profile", "operationId": "deleteOrganizationApplianceDnsSplitProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Deletes a split DNS profile", "tags": [ "appliance", "configure", "dns", "split", "profiles" ] } }, "/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork": { "get": { "description": "List Static Multicasting forwarding settings for MX networks", "operationId": "getOrganizationApplianceFirewallMulticastForwardingByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by network IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network whose multicast forwarding settings are returned." }, "name": { "type": "string", "description": "Name of the network whose multicast forwarding settings are returned." } }, "required": [ "id", "name" ], "description": "Network details" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "description": { "type": "string", "description": "Forwarding rule description." }, "address": { "type": "string", "description": "IP address" }, "vlanIds": { "type": "array", "items": { "type": "string" }, "description": "List of VLAN IDs" } }, "required": [ "description", "address", "vlanIds" ] }, "description": "Static multicast forwarding rules." } }, "required": [ "network", "rules" ] }, "description": "List of networks with multicast static forwarding rules" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "network": { "id": "N_24329156", "name": "Main Office" }, "rules": [ { "description": "test", "address": "224.0.0.1", "vlanIds": [ "1" ] } ] } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "List Static Multicasting forwarding settings for MX networks", "tags": [ "appliance", "configure", "firewall", "multicastForwarding", "byNetwork" ] } }, "/organizations/{organizationId}/appliance/interfaces/packets/overviews/byDevice": { "get": { "description": "Returns packet counter overviews for all interfaces on Secure Routers in the organization, including totals and average rates by packet type over the requested timespan.", "operationId": "getOrganizationApplianceInterfacesPacketsOverviewsByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 14 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 14 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 14 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 1209600 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter Secure Routers in the provided networks", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter Secure Routers by their serial numbers", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The network ID" } }, "description": "Information about the network the device belongs to" }, "serial": { "type": "string", "description": "Unique serial number for the device" }, "interfaces": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Full interface name for this interface" }, "slot": { "type": "integer", "description": "Optional slot number for this interface, if applicable.", "nullable": true }, "subslot": { "type": "integer", "description": "Optional subslot number for this interface, if applicable.", "nullable": true }, "number": { "type": "integer", "description": "Leaf interface number for this interface" }, "byType": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "CRC errors", "broadcast", "broadcast unicast multicast", "collisions", "fragments", "jabbers", "multicast", "oversize", "undersize", "unicast" ], "description": "Packet type. 3 packet types exist: broadcast, unicast, and multicast. \"broadcast unicast multicast\" is the sum of all 3 packet types. Other values denote error or size conditions." }, "total": { "type": "integer", "description": "The total count of sent and received packets during the timespan." }, "sent": { "type": "integer", "description": "The total count of packets sent during the timespan." }, "recv": { "type": "integer", "description": "The total count of packets received during the timespan." }, "rates": { "type": "object", "properties": { "average": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "The rate of all packets sent and received during the timespan." }, "sent": { "type": "number", "format": "float", "description": "The rate of packets sent during the timespan." }, "recv": { "type": "number", "format": "float", "description": "The rate of packets received during the timespan." } }, "description": "Average rates during the timespan." } }, "description": "Packets per second rates during the timespan." } } }, "description": "Packet counter overviews for this interface, grouped by packet type, with counts and average rates over the requested timespan. Note: results may be approximate because packet counter aggregated records may not align exactly with the requested timespan. Recent/current data may be incomplete because aggregated data is refreshed periodically, which can introduce latency." } } }, "description": "The interfaces associated with the given device" } } }, "description": "Packet counter overviews per Secure Router" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices matching the query" }, "remaining": { "type": "integer", "description": "Remaining number of devices beyond this page" } }, "description": "Counts related to the devices" } }, "description": "Counts related to the results" } }, "description": "Metadata about the results" } } }, "example": { "items": [ { "network": { "id": "N_24329156" }, "serial": "Q234-ABCD-5678", "interfaces": [ { "name": "GigabitEthernet0/0/4", "slot": 0, "subslot": 0, "number": 4, "byType": [ { "type": "broadcast unicast multicast", "total": 8709, "sent": 4901, "recv": 3808, "rates": { "average": { "total": 72.57, "sent": 40.84, "recv": 31.73 } } } ] } ] } ], "meta": { "counts": { "items": { "total": 10, "remaining": 9 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Returns packet counter overviews for all interfaces on Secure Routers in the organization, including totals and average rates by packet type over the requested timespan.", "tags": [ "appliance", "monitor", "interfaces", "packets", "overviews", "byDevice" ] } }, "/organizations/{organizationId}/appliance/routing/vrfs/settings": { "get": { "description": "Return the VRF setting for an organization.", "operationId": "getOrganizationApplianceRoutingVrfsSettings", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether VRFs are enabled for the organization's appliance configuration." } } }, "example": { "enabled": false } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the VRF setting for an organization.", "tags": [ "appliance", "configure", "routing", "vrfs", "settings" ] }, "put": { "description": "Update the VRF setting for an organization.", "operationId": "updateOrganizationApplianceRoutingVrfsSettings", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean indicating whether VRFs are enabled for the organization." } }, "example": { "enabled": false }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether VRFs are enabled for the organization's appliance configuration." } } }, "example": { "enabled": false } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the VRF setting for an organization.", "tags": [ "appliance", "configure", "routing", "vrfs", "settings" ] } }, "/organizations/{organizationId}/appliance/security/events": { "get": { "description": "List the security events for an organization", "operationId": "getOrganizationApplianceSecurityEvents", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. Data is gathered after the specified t0 value. The maximum lookback period is 365 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 365 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 365 days. The default is 31 days.", "schema": { "type": "number", "format": "float", "maximum": 31536000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of security events based on event detection time. Order options are 'ascending' or 'descending'. Default is ascending order.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "example": [ { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "File Scanned", "clientName": "COMPUTER-M-V78J", "clientMac": "10:dd:b1:eb:88:f8", "clientIp": "192.168.128.2", "srcIp": "192.168.128.2", "destIp": "119.192.233.48", "protocol": "http", "uri": "http://www.favorite-icons.com/program/FavoriteIconsUninstall.exe", "canonicalName": "PUA.Win.Dropper.Kraddare::1201", "destinationPort": 80, "fileHash": "3ec1b9a95fe62aa25fc959643a0f227b76d253094681934daaf628d3574b3463", "fileType": "MS_EXE", "fileSizeBytes": 193688, "disposition": "Malicious", "action": "Blocked" }, { "ts": "2018-02-11T00:00:00.090210Z", "eventType": "IDS Alert", "deviceMac": "00:18:0a:01:02:03", "clientMac": "A1:B2:C3:D4:E5:F6", "srcIp": "1.2.3.4:34195", "destIp": "10.20.30.40:80", "protocol": "tcp/ip", "priority": "2", "classification": "4", "blocked": true, "message": "SERVER-WEBAPP JBoss JMX console access attempt", "signature": "1:21516:9", "sigSource": "", "ruleId": "meraki:intrusion/snort/GID/1/SID/26267" } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "List the security events for an organization", "tags": [ "appliance", "monitor", "security", "events" ] } }, "/organizations/{organizationId}/appliance/security/intrusion": { "get": { "description": "Returns all supported intrusion settings for an organization", "operationId": "getOrganizationApplianceSecurityIntrusion", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedRules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "A rule identifier of the format meraki:intrusion/snort/GID//SID/. gid and sid can be obtained from either https://www.snort.org/rule-docs or as ruleIds from the security events in /organization/[orgId]/securityEvents" }, "message": { "type": "string", "description": "Message is optional and is ignored on a PUT call. It is allowed in order for PUT to be compatible with GET", "nullable": true } } }, "description": "Sets a list of specific SNORT signatures to allow" } } }, "example": { "allowedRules": [ { "ruleId": "meraki:intrusion/snort/GID/01/SID/688", "message": "SQL sa login failed" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Returns all supported intrusion settings for an organization", "tags": [ "appliance", "configure", "security", "intrusion" ] }, "put": { "description": "Sets supported intrusion settings for an organization", "operationId": "updateOrganizationApplianceSecurityIntrusion", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedRules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "A rule identifier of the format meraki:intrusion/snort/GID//SID/. gid and sid can be obtained from either https://www.snort.org/rule-docs or as ruleIds from the security events in /organization/[orgId]/securityEvents" }, "message": { "type": "string", "description": "Message is optional and is ignored on a PUT call. It is allowed in order for PUT to be compatible with GET", "nullable": true } }, "required": [ "ruleId" ] }, "description": "Sets a list of specific SNORT signatures to allow" } }, "example": { "allowedRules": [ { "ruleId": "meraki:intrusion/snort/GID/01/SID/688", "message": "SQL sa login failed" } ] }, "required": [ "allowedRules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "allowedRules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "A rule identifier of the format meraki:intrusion/snort/GID//SID/. gid and sid can be obtained from either https://www.snort.org/rule-docs or as ruleIds from the security events in /organization/[orgId]/securityEvents" }, "message": { "type": "string", "description": "Message is optional and is ignored on a PUT call. It is allowed in order for PUT to be compatible with GET", "nullable": true } } }, "description": "Sets a list of specific SNORT signatures to allow" } } }, "example": { "allowedRules": [ { "ruleId": "meraki:intrusion/snort/GID/01/SID/688", "message": "SQL sa login failed" } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Sets supported intrusion settings for an organization", "tags": [ "appliance", "configure", "security", "intrusion" ] } }, "/organizations/{organizationId}/appliance/trafficShaping/vpnExclusions/byNetwork": { "get": { "description": "Display VPN exclusion rules for MX networks.", "operationId": "getOrganizationApplianceTrafficShapingVpnExclusionsByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by network IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "ID of the network whose VPN exclusion rules are returned." }, "networkName": { "type": "string", "description": "Name of the network whose VPN exclusion rules are returned." }, "custom": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "any", "dns", "icmp", "tcp", "udp" ], "description": "Protocol." }, "destination": { "type": "string", "description": "Destination address; hostname required for DNS, IPv4 otherwise." }, "port": { "type": "string", "description": "Destination port." } }, "required": [ "protocol", "destination", "port" ] }, "description": "Custom VPN exclusion rules." }, "majorApplications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application's Meraki ID." }, "name": { "type": "string", "enum": [ "AWS", "Box", "Office 365 Sharepoint", "Office 365 Suite", "Oracle", "SAP", "Salesforce", "Skype & Teams", "Slack", "Webex", "Webex Calling", "Webex Meetings", "Zoom" ], "description": "Application's name." } }, "required": [ "id", "name" ] }, "description": "Major Application based VPN exclusion rules." } }, "required": [ "networkId", "networkName", "custom", "majorApplications" ] }, "description": "VPN exclusion rules by network" } } }, "example": { "items": [ { "networkId": "N_24329156", "networkName": "Main Office", "custom": [ { "protocol": "tcp", "destination": "192.168.3.0/24", "port": "8000" } ], "majorApplications": [ { "id": "meraki:vpnExclusion/application/2", "name": "Office 365 Sharepoint" } ] } ] } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Display VPN exclusion rules for MX networks.", "tags": [ "appliance", "configure", "trafficShaping", "vpnExclusions", "byNetwork" ] } }, "/organizations/{organizationId}/appliance/uplink/statuses": { "get": { "description": "List the uplink status of every Meraki MX and Z series appliances in the organization", "operationId": "getOrganizationApplianceUplinkStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "A list of network IDs. The returned devices will be filtered to only include these networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "A list of serial numbers. The returned devices will be filtered to only include these serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "iccids", "in": "query", "description": "A list of ICCIDs. The returned devices will be filtered to only include these ICCIDs.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network identifier" }, "serial": { "type": "string", "description": "The uplink serial" }, "model": { "type": "string", "description": "The uplink model" }, "lastReportedAt": { "type": "string", "format": "date-time", "description": "Last reported time for the device" }, "highAvailability": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether High Availability is enabled for the device. For devices that do not support HA, this will be 'false'" }, "role": { "type": "string", "description": "The HA role of the device on the network. For devices that do not support HA, this will be 'primary'" } }, "description": "Device High Availability Capabilities" }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "enum": [ "cellular", "wan1", "wan2", "wan3" ], "description": "Uplink interface" }, "status": { "type": "string", "enum": [ "active", "connecting", "failed", "not connected", "ready" ], "description": "Uplink status" }, "ip": { "type": "string", "description": "Uplink IP" }, "gateway": { "type": "string", "description": "Gateway IP" }, "publicIp": { "type": "string", "description": "Public IP" }, "primaryDns": { "type": "string", "description": "Primary DNS IP" }, "secondaryDns": { "type": "string", "description": "Secondary DNS IP" }, "ipAssignedBy": { "type": "string", "description": "The way in which the IP is assigned" } } }, "description": "Uplinks" } } } }, "example": [ { "networkId": "N_24329156", "serial": "Q234-ABCD-5678", "model": "MX68C", "lastReportedAt": "2018-02-11T00:00:00Z", "highAvailability": { "enabled": true, "role": "primary" }, "uplinks": [ { "interface": "wan1", "status": "active", "ip": "1.2.3.4", "gateway": "1.2.3.5", "publicIp": "123.123.123.1", "primaryDns": "8.8.8.8", "secondaryDns": "8.8.4.4", "ipAssignedBy": "static" } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "List the uplink status of every Meraki MX and Z series appliances in the organization", "tags": [ "appliance", "monitor", "uplinks", "statuses" ] } }, "/organizations/{organizationId}/appliance/uplinks/nat/byNetwork": { "get": { "description": "Fetch uplink NAT settings of each network in the organization", "operationId": "getOrganizationApplianceUplinksNatByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by the included set of network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "interfaces", "in": "query", "description": "Optional parameter to filter the results by the included set of interfaces", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Interface name of the uplink" }, "nat": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether NAT is enabled on the uplink" } }, "description": "NAT settings of the uplink" } } }, "description": "Per-uplink NAT exception configuration on the network." } } } }, "example": [ { "networkId": "N_123456", "uplinks": [ { "interface": "wan1", "nat": { "enabled": false } } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "Fetch uplink NAT settings of each network in the organization", "tags": [ "appliance", "configure", "uplinks", "nat", "byNetwork" ] } }, "/organizations/{organizationId}/appliance/uplinks/statuses/overview": { "get": { "description": "Returns an overview of uplink statuses", "operationId": "getOrganizationApplianceUplinksStatusesOverview", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkIds", "in": "query", "description": "A list of network IDs. The returned devices will be filtered to only include these networks.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "byStatus": { "type": "object", "properties": { "active": { "type": "integer", "description": "number of uplinks that are active and working" }, "ready": { "type": "integer", "description": "number of uplinks that are working but on standby" }, "failed": { "type": "integer", "description": "number of uplinks that were working but have failed" }, "connecting": { "type": "integer", "description": "number of uplinks currently connecting" }, "notConnected": { "type": "integer", "description": "number of uplinks currently where nothing is plugged in" } }, "description": "byStatus" } }, "description": "counts" } } }, "example": { "counts": { "byStatus": { "active": 5, "ready": 5, "failed": 4, "connecting": 2, "notConnected": 1 } } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Returns an overview of uplink statuses", "tags": [ "appliance", "monitor", "uplinks", "statuses", "overview" ] } }, "/organizations/{organizationId}/appliance/uplinks/usage/byNetwork": { "get": { "description": "Get the sent and received bytes for each uplink of all MX and Z networks within an organization. If more than one device was active during the specified timespan, then the sent and received bytes will be aggregated by interface.", "operationId": "getOrganizationApplianceUplinksUsageByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 30 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 14 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 14 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 1209600 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network identifier" }, "name": { "type": "string", "description": "Network name" }, "byUplink": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Uplink serial" }, "interface": { "type": "string", "description": "Uplink name" }, "sent": { "type": "integer", "description": "Bytes sent" }, "received": { "type": "integer", "description": "Bytes received" } } }, "description": "Uplink usage" } } } }, "example": [ { "networkId": "N_24329156", "name": "Main Office", "byUplink": [ { "serial": "Q234-ABCD-5678", "interface": "wan1", "sent": 200, "received": 400 } ] } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Get the sent and received bytes for each uplink of all MX and Z networks within an organization", "tags": [ "appliance", "monitor", "uplinks", "usage", "byNetwork" ] } }, "/organizations/{organizationId}/appliance/vpn/siteToSite/ipsec/peers/slas": { "get": { "description": "Get the list of available IPsec SLA policies for an organization", "operationId": "getOrganizationApplianceVpnSiteToSiteIpsecPeersSlas", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "SLA policy ID" }, "name": { "type": "string", "description": "SLA policy name" }, "uri": { "type": "string", "description": "Endpoint for testing SLA" }, "ipsec": { "type": "object", "properties": { "peerIds": { "type": "array", "items": { "type": "string" }, "description": "Array of IPsec peer IDs" } }, "description": "IPsec configuration data" } } }, "description": "List of the IPSec SLA policies for an organization" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "id": "12345", "name": "sla policy", "uri": "http://checkthisendpoint.com", "ipsec": { "peerIds": [ "1010", "1011" ] } } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } } } }, "summary": "Get the list of available IPsec SLA policies for an organization", "tags": [ "appliance", "configure", "vpn", "siteToSite", "ipsec", "peers", "slas" ] }, "put": { "description": "Update the IPsec SLA policies for an organization", "operationId": "updateOrganizationApplianceVpnSiteToSiteIpsecPeersSlas", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "SLA policy name" }, "uri": { "type": "string", "description": "Endpoint for testing SLA" } } }, "description": "List of IPsec SLA policies" } }, "example": { "items": [ { "name": "sla policy", "uri": "http://checkthisendpoint.com" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "SLA policy ID" }, "name": { "type": "string", "description": "SLA policy name" }, "uri": { "type": "string", "description": "Endpoint for testing SLA" }, "ipsec": { "type": "object", "properties": { "peerIds": { "type": "array", "items": { "type": "string" }, "description": "Array of IPsec peer IDs" } }, "description": "IPsec configuration data" } } }, "description": "List of the IPsec SLA policies for an organization" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "id": "12345", "name": "sla policy", "uri": "http://checkthisendpoint.com", "ipsec": { "peerIds": [ "1010", "1011" ] } } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } } } }, "summary": "Update the IPsec SLA policies for an organization", "tags": [ "appliance", "configure", "vpn", "siteToSite", "ipsec", "peers", "slas" ] } }, "/organizations/{organizationId}/appliance/vpn/stats": { "get": { "description": "Show VPN history stat for networks in an organization", "operationId": "getOrganizationApplianceVpnStats", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 300. Default is 300.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "networkName": { "type": "string", "description": "Network name" }, "merakiVpnPeers": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID of the VPN peer" }, "networkName": { "type": "string", "description": "Network name of the VPN peer" }, "usageSummary": { "type": "object", "properties": { "receivedInKilobytes": { "type": "integer", "description": "The amount of data received (in kilobytes)" }, "sentInKilobytes": { "type": "integer", "description": "The amount of data sent (in kilobytes)" } }, "description": "Usage summary" }, "latencySummaries": { "type": "array", "items": { "type": "object", "properties": { "senderUplink": { "type": "string", "description": "Sender uplink interface" }, "receiverUplink": { "type": "string", "description": "Receiver uplink interface" }, "avgLatencyMs": { "type": "integer", "description": "Average latency in milliseconds" }, "minLatencyMs": { "type": "integer", "description": "Minimum latency in milliseconds" }, "maxLatencyMs": { "type": "integer", "description": "Maximum latency in milliseconds" } } }, "description": "List of latency summaries" }, "lossPercentageSummaries": { "type": "array", "items": { "type": "object", "properties": { "senderUplink": { "type": "string", "description": "Sender uplink interface" }, "receiverUplink": { "type": "string", "description": "Receiver uplink interface" }, "avgLossPercentage": { "type": "number", "format": "float", "description": "Average loss percentage" }, "minLossPercentage": { "type": "number", "format": "float", "description": "Minimum loss percentage" }, "maxLossPercentage": { "type": "number", "format": "float", "description": "Maximum loss percentage" } } }, "description": "List of loss percentage summaries" }, "jitterSummaries": { "type": "array", "items": { "type": "object", "properties": { "senderUplink": { "type": "string", "description": "Sender uplink interface" }, "receiverUplink": { "type": "string", "description": "Receiver uplink interface" }, "avgJitter": { "type": "number", "format": "float", "description": "Average jitter" }, "minJitter": { "type": "number", "format": "float", "description": "Minimum jitter" }, "maxJitter": { "type": "number", "format": "float", "description": "Maximum jitter" } } }, "description": "List of jitter summaries" }, "mosSummaries": { "type": "array", "items": { "type": "object", "properties": { "senderUplink": { "type": "string", "description": "Sender uplink interface" }, "receiverUplink": { "type": "string", "description": "Receiver uplink interface" }, "avgMos": { "type": "number", "format": "float", "description": "Average MOS (Mean opinion score)" }, "minMos": { "type": "number", "format": "float", "description": "Minimum MOS (Mean opinion score" }, "maxMos": { "type": "number", "format": "float", "description": "Maximum MOS (Mean opinion score" } } }, "description": "List of MOS (Mean opinion score) summaries" } } }, "description": "List of VPN peers with their summaries" } } } }, "example": [ { "networkId": "N_24329156", "networkName": "Main Office", "merakiVpnPeers": [ { "networkId": "N_12345678", "networkName": "San Francisco Office", "usageSummary": { "receivedInKilobytes": 1234567, "sentInKilobytes": 2345678 }, "latencySummaries": [ { "senderUplink": "wan1", "receiverUplink": "wan1", "avgLatencyMs": 15, "minLatencyMs": 10, "maxLatencyMs": 30 } ], "lossPercentageSummaries": [ { "senderUplink": "wan1", "receiverUplink": "wan1", "avgLossPercentage": 0.0, "minLossPercentage": 0.0, "maxLossPercentage": 0.1 } ], "jitterSummaries": [ { "senderUplink": "wan1", "receiverUplink": "wan1", "avgJitter": 0.01, "minJitter": 0.0, "maxJitter": 0.25 } ], "mosSummaries": [ { "senderUplink": "wan1", "receiverUplink": "wan1", "avgMos": 4.1, "minMos": 4.0, "maxMos": 4.2 } ] } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Show VPN history stat for networks in an organization", "tags": [ "appliance", "monitor", "vpn", "stats" ] } }, "/organizations/{organizationId}/appliance/vpn/statuses": { "get": { "description": "Show VPN status for networks in an organization", "operationId": "getOrganizationApplianceVpnStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 300. Default is 300.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "A list of Meraki network IDs to filter results to contain only specified networks. E.g.: networkIds[]=N_12345678&networkIds[]=L_3456", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network Id" }, "networkName": { "type": "string", "description": "Network name" }, "deviceSerial": { "type": "string", "description": "Serial number of the device" }, "deviceStatus": { "type": "string", "description": "Device Status" }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "description": "Uplink Interface Name" }, "publicIp": { "type": "string", "description": "Uplink IP address (in IP or CIDR notation)" } } }, "description": "List of Uplink Information" }, "vpnMode": { "type": "string", "description": "VPN Mode" }, "exportedSubnets": { "type": "array", "items": { "type": "object", "properties": { "subnet": { "type": "string", "description": "Subnet" }, "name": { "type": "string", "description": "Name of the subnet" } } }, "description": "List of Exported Subnets" }, "merakiVpnPeers": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "networkName": { "type": "string", "description": "Network Name" }, "reachability": { "type": "string", "description": "Reachability" }, "priority": { "type": "integer", "description": "VPN Peer Priority (1 is highest) for spoke peers" } } }, "description": "Meraki VPN Peers" }, "thirdPartyVpnPeers": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the peer" }, "publicIp": { "type": "string", "description": "Public IP of the peer" }, "reachability": { "type": "string", "description": "Reachability" } } }, "description": "Third Party VPN Peers" } } } }, "example": [ { "networkId": "N_12345678", "networkName": "San Francisco Office", "deviceSerial": "Q234-ABCD-1234", "deviceStatus": "online", "uplinks": [ { "interface": "wan1", "publicIp": "1.2.3.4" } ], "vpnMode": "hub", "exportedSubnets": [ { "subnet": "192.168.0.0/24", "name": "sales-vlan" } ], "merakiVpnPeers": [ { "networkId": "L_1234", "networkName": "New York Office", "reachability": "reachable", "priority": 1 } ], "thirdPartyVpnPeers": [ { "name": "Tokyo Office", "publicIp": "222.111.222.111", "reachability": "reachable" } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Show VPN status for networks in an organization", "tags": [ "appliance", "monitor", "vpn", "statuses" ] } }, "/organizations/{organizationId}/appliance/vpn/thirdPartyVPNPeers": { "get": { "description": "Return the third party VPN peers for an organization", "operationId": "getOrganizationApplianceVpnThirdPartyVPNPeers", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "peers": { "type": "array", "items": { "type": "object", "properties": { "peerId": { "type": "string", "description": "The ID of the IPsec peer" }, "name": { "type": "string", "description": "The name of the VPN peer" }, "publicIp": { "type": "string", "description": "[optional] The public IP of the VPN peer" }, "remoteId": { "type": "string", "description": "[optional] The remote ID is used to identify the connecting VPN peer. This can either be a valid IPv4 Address, FQDN or User FQDN." }, "localId": { "type": "string", "description": "[optional] The local ID is used to identify the MX to the peer. This will apply to all MXs this peer applies to." }, "secret": { "type": "string", "description": "The shared secret with the VPN peer" }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The list of the private subnets of the VPN peer" }, "ipsecPolicies": { "type": "object", "properties": { "ikeCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "tripledes" ] }, "description": "This is the cipher algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des'" }, "ikeAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "ikePrfAlgo": { "type": "array", "items": { "type": "string", "enum": [ "default", "prfmd5", "prfsha1", "prfsha256" ] }, "description": "[optional] This is the pseudo-random function to be used in IKE_SA. The value should be an array with one of the following algorithms: 'prfsha256', 'prfsha1', 'prfmd5', 'default'. The 'default' option can be used to default to the Authentication algorithm." }, "ikeDiffieHellmanGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used in Phase 1. The value should be an array with one of the following algorithms: 'group14', 'group5', 'group2', 'group1'" }, "ikeLifetime": { "type": "integer", "description": "The lifetime of the Phase 1 SA in seconds." }, "childCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "null", "tripledes" ] }, "description": "This is the cipher algorithms to be used in Phase 2. The value should be an array with one or more of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des', 'null'" }, "childAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithms to be used in Phase 2. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "childPfsGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used for Perfect Forward Secrecy in Phase 2. The value should be an array with one of the following values: 'disabled','group14', 'group5', 'group2', 'group1'" }, "childLifetime": { "type": "integer", "description": "The lifetime of the Phase 2 SA in seconds." } }, "description": "Custom IPSec policies for the VPN peer. If not included and a preset has not been chosen, the default preset for IPSec policies will be used." }, "slaPolicy": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the SLA policy" } }, "description": "[optional] Information about the SLA policy to be applied to the peer" }, "ipsecPoliciesPreset": { "type": "string", "description": "One of the following available presets: 'default', 'aws', 'azure', 'umbrella', 'umbrella_short_lived', 'secure', 'zscaler'. If this is provided, the 'ipsecPolicies' parameter is ignored. Note that 'umbrella_short_lived' maps to the Dashboard UI label 'Umbrella', while 'umbrella' maps to the Dashboard UI label 'Umbrella (Deprecated)'." }, "ikeVersion": { "type": "string", "enum": [ "1", "2" ], "description": "[optional] The IKE version to be used for the IPsec VPN peer configuration. Defaults to '1' when omitted.", "default": "1" }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "A list of network tags that will connect with this peer. Use ['all'] for all networks. Use ['none'] for no networks. If not included, the default is ['all']." }, "network": { "type": "object", "properties": { "names": { "type": "array", "items": { "type": "string" }, "description": "[optional] A list of network Names. Supported only for MX 19.1 and above. The order of items matches the order of IDs." }, "ids": { "type": "array", "items": { "type": "string" }, "description": "[optional] A list of network IDs." } }, "description": "[optional] A list of network Names and IDs that will connect with this peer. Supported only for MX 19.1 and above." }, "isRouteBased": { "type": "boolean", "description": "[optional] If true, the VPN peer is route-based. If not included, the default is false. Supported only for MX 19.1 and above." }, "ebgpNeighbor": { "type": "object", "properties": { "neighborId": { "type": "integer", "description": "ID of ebgp neighbor" }, "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "ipVersion": { "type": "integer", "enum": [ 4, 6 ], "description": "The IP version of the neighbor" }, "remoteAsNumber": { "type": "integer", "description": "Remote ASN of the neighbor. The remote ASN must be an integer between 1 and 4294967295." }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold timer in seconds for each neighbor. The eBGP hold timer must be an integer between 12 and 240." }, "ebgpMultihop": { "type": "integer", "description": "Configure this if the neighbor is not adjacent. The eBGP multi-hop must be an integer between 1 and 255." }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" }, "receiveLimit": { "type": "integer", "description": "Maximum number of prefixes accepted from the remote peer. Must be an integer between 0 and 2147483647. Supported only for MX 26.2 and above" }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Prepends the AS_PATH BGP Attribute associated with routes received from the remote peer. Configurable value of ASNs to prepend. Length of the array may not exceed 10, and each ASN in the array must be an integer between 1 and 4294967295. AS_PATH is 4th in the decision tree when identical routes from multiple peers exist." }, "multiExitDiscriminator": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." }, "weight": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." } }, "description": "[optional] The BGP neighbor configuration for the VPN peer. Supported only for MX 19.1 and above." }, "ecmpUplinkConfigs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the ECMP uplink configuration" }, "wan": { "type": "string", "enum": [ "WAN 1", "WAN 2", "WAN 3", "WAN 4" ], "description": "The WAN uplink associated with this ECMP configuration." }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The private subnets associated with this ECMP uplink configuration." }, "ebgpNeighbor": { "type": "object", "properties": { "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" } }, "description": "[optional] The eBGP neighbor configuration associated with this ECMP uplink configuration." } } }, "description": "[optional] The ECMP per-uplink BGP-over-IPsec configuration for the VPN peer." }, "priorityInGroup": { "type": "integer", "description": "[optional] Represents the order of peer inside a group." }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "[optional] Represents the ordering of primary and backup tunnels group. primary and backup tunnels are grouped by this number. Peers containing same group number belongs to same group." }, "failover": { "type": "object", "properties": { "directToInternet": { "type": "boolean", "description": "[optional] When both primary and backup tunnels are down, direct traffic to the internet. Traffic will be routed via the WAN" } }, "description": "[optional] Contains the failover configuration for the group." }, "activeActiveTunnel": { "type": "boolean", "description": "[optional] Both primary and backup tunnels are active." } }, "description": "[optional] Contains the mapping between primary tunnel and backup tunnels." } } }, "description": "The list of VPN peers" } } }, "example": { "peers": [ { "peerId": "1234", "name": "Peer Name", "publicIp": "123.123.123.1", "remoteId": "miles@meraki.com", "localId": "myMXId@meraki.com", "secret": "secret", "privateSubnets": [ "192.168.1.0/24", "192.168.128.0/24" ], "ipsecPolicies": { "ikeCipherAlgo": [ "tripledes" ], "ikeAuthAlgo": [ "sha1" ], "ikePrfAlgo": [ "prfsha1" ], "ikeDiffieHellmanGroup": [ "group2" ], "ikeLifetime": 28800, "childCipherAlgo": [ "aes128" ], "childAuthAlgo": [ "sha1" ], "childPfsGroup": [ "disabled" ], "childLifetime": 28800 }, "slaPolicy": { "id": "1234" }, "ipsecPoliciesPreset": "default", "ikeVersion": "1", "networkTags": [ "all" ], "network": { "names": [ "Network 1", "Location 2", "Network 3" ], "ids": [ "N_1", "L_2", "N_3" ] }, "isRouteBased": true, "ebgpNeighbor": { "neighborId": 1234, "neighborIp": "10.10.10.22", "ipVersion": 4, "remoteAsNumber": 64343, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceIp": "10.10.10.22", "receiveLimit": 100, "pathPrepend": [ 1, 2 ], "multiExitDiscriminator": 1, "weight": 10 }, "ecmpUplinkConfigs": [ { "id": "7890", "wan": "WAN 1", "privateSubnets": [ "169.254.10.0/30" ], "ebgpNeighbor": { "neighborIp": "169.254.10.2", "sourceIp": "169.254.10.1" } } ], "priorityInGroup": 1, "group": { "number": 1, "failover": { "directToInternet": true }, "activeActiveTunnel": true } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the third party VPN peers for an organization", "tags": [ "appliance", "configure", "vpn", "thirdPartyVPNPeers" ] }, "put": { "description": "Update the third party VPN peers for an organization.\n\nSubnet overlap warning: Unlike the Dashboard UI, updateOrganizationApplianceVpnThirdPartyVPNPeers does not run the org-wide subnet-overlap validation before saving changes. Requests with overlapping VPN subnets will succeed through the API, but the resulting configuration may be blocked from further edits in Dashboard until the overlaps are resolved manually. Use this endpoint only when you've already confirmed the advertised subnets are unique across the organization.\n", "operationId": "updateOrganizationApplianceVpnThirdPartyVPNPeers", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "peers": { "type": "array", "items": { "type": "object", "properties": { "peerId": { "type": "string", "description": "The ID of the IPsec peer" }, "name": { "type": "string", "description": "The name of the VPN peer" }, "publicIp": { "type": "string", "description": "[optional] The public IP of the VPN peer" }, "publicHostname": { "type": "string", "description": "[optional] The public hostname of the VPN peer" }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The list of the private subnets of the VPN peer" }, "localId": { "type": "string", "description": "[optional] The local ID is used to identify the MX to the peer. This will apply to all MXs this peer applies to." }, "remoteId": { "type": "string", "description": "[optional] The remote ID is used to identify the connecting VPN peer. This can either be a valid IPv4 Address, FQDN or User FQDN." }, "ipsecPolicies": { "type": "object", "properties": { "ikeCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "tripledes" ] }, "description": "This is the cipher algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des'" }, "ikeAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "ikePrfAlgo": { "type": "array", "items": { "type": "string", "enum": [ "default", "prfmd5", "prfsha1", "prfsha256" ] }, "description": "[optional] This is the pseudo-random function to be used in IKE_SA. The value should be an array with one of the following algorithms: 'prfsha256', 'prfsha1', 'prfmd5', 'default'. The 'default' option can be used to default to the Authentication algorithm." }, "ikeDiffieHellmanGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used in Phase 1. The value should be an array with one of the following algorithms: 'group14', 'group5', 'group2', 'group1'" }, "ikeLifetime": { "type": "integer", "description": "The lifetime of the Phase 1 SA in seconds." }, "childCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "null", "tripledes" ] }, "description": "This is the cipher algorithms to be used in Phase 2. The value should be an array with one or more of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des', 'null'" }, "childAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithms to be used in Phase 2. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "childPfsGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used for Perfect Forward Secrecy in Phase 2. The value should be an array with one of the following values: 'disabled','group14', 'group5', 'group2', 'group1'" }, "childLifetime": { "type": "integer", "description": "The lifetime of the Phase 2 SA in seconds." } }, "description": "Custom IPSec policies for the VPN peer. If not included and a preset has not been chosen, the default preset for IPSec policies will be used." }, "ipsecPoliciesPreset": { "type": "string", "description": "One of the following available presets: 'default', 'aws', 'azure', 'umbrella', 'umbrella_short_lived', 'secure', 'zscaler'. If this is provided, the 'ipsecPolicies' parameter is ignored. Note that 'umbrella_short_lived' maps to the Dashboard UI label 'Umbrella', while 'umbrella' maps to the Dashboard UI label 'Umbrella (Deprecated)'." }, "slaPolicy": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the SLA policy" } }, "description": "[optional] Information about the SLA policy to be applied to the peer" }, "secret": { "type": "string", "description": "The shared secret with the VPN peer" }, "ikeVersion": { "type": "string", "enum": [ "1", "2" ], "description": "[optional] The IKE version to be used for the IPsec VPN peer configuration. Defaults to '1' when omitted.", "default": "1" }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "A list of network tags that will connect with this peer. Use ['all'] for all networks. Use ['none'] for no networks. If not included, the default is ['all']." }, "network": { "type": "object", "properties": { "ids": { "type": "array", "items": { "type": "string" }, "description": "[optional] A list of network IDs." } }, "description": "[optional] A list of network Names and IDs that will connect with this peer. Supported only for MX 19.1 and above." }, "isRouteBased": { "type": "boolean", "description": "[optional] If true, the VPN peer is route-based. If not included, the default is false. Supported only for MX 19.1 and above." }, "ebgpNeighbor": { "type": "object", "properties": { "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "ipVersion": { "type": "integer", "enum": [ 4, 6 ], "description": "The IP version of the neighbor" }, "remoteAsNumber": { "type": "integer", "description": "Remote ASN of the neighbor. The remote ASN must be an integer between 1 and 4294967295." }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold timer in seconds for each neighbor. The eBGP hold timer must be an integer between 12 and 240." }, "ebgpMultihop": { "type": "integer", "description": "Configure this if the neighbor is not adjacent. The eBGP multi-hop must be an integer between 1 and 255." }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Prepends the AS_PATH BGP Attribute associated with routes received from the remote peer. Configurable value of ASNs to prepend. Length of the array may not exceed 10, and each ASN in the array must be an integer between 1 and 4294967295. AS_PATH is 4th in the decision tree when identical routes from multiple peers exist." }, "multiExitDiscriminator": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." }, "weight": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." } }, "description": "[optional] The BGP neighbor configuration for the VPN peer. Supported only for MX 19.1 and above." }, "ecmpUplinkConfigs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the ECMP uplink configuration" }, "wan": { "type": "string", "enum": [ "WAN 1", "WAN 2", "WAN 3", "WAN 4" ], "description": "The WAN uplink associated with this ECMP configuration." }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The list of the private subnets of the VPN peer" }, "ebgpNeighbor": { "type": "object", "properties": { "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" } }, "description": "[optional] The BGP neighbor configuration for the VPN peer. Supported only for MX 19.1 and above." } } }, "description": "[optional] The ECMP per-uplink BGP-over-IPsec configuration for the VPN peer." }, "priorityInGroup": { "type": "integer", "description": "[optional] Represents the order of peer inside a group. If you submit a request with the numbers [1, 9, 999], these numbers will be automatically adjusted to a sequential order starting from 1. So, they will be changed to [1, 2, 3] to reflect their positions in the sequence." }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "[optional] Represents the ordering of primary and backup tunnels group. primary and backup tunnels are grouped by this number. If you submit a request with the numbers [1, 9, 999], these numbers will be automatically adjusted to a sequential order starting from 1. So, they will be changed to [1, 2, 3] to reflect their positions in the sequence." }, "failover": { "type": "object", "properties": { "directToInternet": { "type": "boolean", "description": "[optional] When both primary and backup tunnels are down, direct traffic to the internet. Traffic will be routed via the WAN" } }, "description": "[optional] Contains the failover configuration for the group." }, "activeActiveTunnel": { "type": "boolean", "description": "[optional] Both primary and backup tunnels are active." } }, "description": "[optional] Contains the mapping between primary tunnel and backup tunnels." } }, "required": [ "name", "privateSubnets", "secret" ] }, "description": "The list of VPN peers" } }, "example": { "peers": [ { "peerId": "1234", "name": "Peer Name", "publicIp": "123.123.123.1", "publicHostname": "example.com", "privateSubnets": [ "192.168.1.0/24", "192.168.128.0/24" ], "localId": "myMXId@meraki.com", "remoteId": "miles@meraki.com", "ipsecPolicies": { "ikeCipherAlgo": [ "tripledes" ], "ikeAuthAlgo": [ "sha1" ], "ikePrfAlgo": [ "prfsha1" ], "ikeDiffieHellmanGroup": [ "group2" ], "ikeLifetime": 28800, "childCipherAlgo": [ "aes128" ], "childAuthAlgo": [ "sha1" ], "childPfsGroup": [ "disabled" ], "childLifetime": 28800 }, "ipsecPoliciesPreset": "default", "slaPolicy": { "id": "1234" }, "secret": "Sample Password", "ikeVersion": "2", "networkTags": [ "none" ], "network": { "ids": [ "N_1", "L_2", "N_3" ] }, "isRouteBased": true, "ebgpNeighbor": { "neighborIp": "10.10.10.22", "ipVersion": 4, "remoteAsNumber": 64343, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceIp": "10.10.10.22", "pathPrepend": [ 1, 2 ], "multiExitDiscriminator": 1, "weight": 10 }, "ecmpUplinkConfigs": [ { "id": "7890", "wan": "WAN 1", "privateSubnets": [ "169.254.10.0/30" ], "ebgpNeighbor": { "neighborIp": "169.254.10.2", "sourceIp": "169.254.10.1" } } ], "priorityInGroup": 1, "group": { "number": 1, "failover": { "directToInternet": true }, "activeActiveTunnel": true } } ] }, "required": [ "peers" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "peers": { "type": "array", "items": { "type": "object", "properties": { "peerId": { "type": "string", "description": "The ID of the IPsec peer" }, "name": { "type": "string", "description": "The name of the VPN peer" }, "publicIp": { "type": "string", "description": "[optional] The public IP of the VPN peer" }, "remoteId": { "type": "string", "description": "[optional] The remote ID is used to identify the connecting VPN peer. This can either be a valid IPv4 Address, FQDN or User FQDN." }, "localId": { "type": "string", "description": "[optional] The local ID is used to identify the MX to the peer. This will apply to all MXs this peer applies to." }, "secret": { "type": "string", "description": "The shared secret with the VPN peer" }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The list of the private subnets of the VPN peer" }, "ipsecPolicies": { "type": "object", "properties": { "ikeCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "tripledes" ] }, "description": "This is the cipher algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des'" }, "ikeAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithm to be used in Phase 1. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "ikePrfAlgo": { "type": "array", "items": { "type": "string", "enum": [ "default", "prfmd5", "prfsha1", "prfsha256" ] }, "description": "[optional] This is the pseudo-random function to be used in IKE_SA. The value should be an array with one of the following algorithms: 'prfsha256', 'prfsha1', 'prfmd5', 'default'. The 'default' option can be used to default to the Authentication algorithm." }, "ikeDiffieHellmanGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used in Phase 1. The value should be an array with one of the following algorithms: 'group14', 'group5', 'group2', 'group1'" }, "ikeLifetime": { "type": "integer", "description": "The lifetime of the Phase 1 SA in seconds." }, "childCipherAlgo": { "type": "array", "items": { "type": "string", "enum": [ "aes128", "aes192", "aes256", "des", "null", "tripledes" ] }, "description": "This is the cipher algorithms to be used in Phase 2. The value should be an array with one or more of the following algorithms: 'aes256', 'aes192', 'aes128', 'tripledes', 'des', 'null'" }, "childAuthAlgo": { "type": "array", "items": { "type": "string", "enum": [ "md5", "sha1", "sha256" ] }, "description": "This is the authentication algorithms to be used in Phase 2. The value should be an array with one of the following algorithms: 'sha256', 'sha1', 'md5'" }, "childPfsGroup": { "type": "array", "items": { "type": "string" }, "description": "This is the Diffie-Hellman group to be used for Perfect Forward Secrecy in Phase 2. The value should be an array with one of the following values: 'disabled','group14', 'group5', 'group2', 'group1'" }, "childLifetime": { "type": "integer", "description": "The lifetime of the Phase 2 SA in seconds." } }, "description": "Custom IPSec policies for the VPN peer. If not included and a preset has not been chosen, the default preset for IPSec policies will be used." }, "slaPolicy": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the SLA policy" } }, "description": "[optional] Information about the SLA policy to be applied to the peer" }, "ipsecPoliciesPreset": { "type": "string", "description": "One of the following available presets: 'default', 'aws', 'azure', 'umbrella', 'umbrella_short_lived', 'secure', 'zscaler'. If this is provided, the 'ipsecPolicies' parameter is ignored. Note that 'umbrella_short_lived' maps to the Dashboard UI label 'Umbrella', while 'umbrella' maps to the Dashboard UI label 'Umbrella (Deprecated)'." }, "ikeVersion": { "type": "string", "enum": [ "1", "2" ], "description": "[optional] The IKE version to be used for the IPsec VPN peer configuration. Defaults to '1' when omitted.", "default": "1" }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "A list of network tags that will connect with this peer. Use ['all'] for all networks. Use ['none'] for no networks. If not included, the default is ['all']." }, "network": { "type": "object", "properties": { "names": { "type": "array", "items": { "type": "string" }, "description": "[optional] A list of network Names. Supported only for MX 19.1 and above. The order of items matches the order of IDs." }, "ids": { "type": "array", "items": { "type": "string" }, "description": "[optional] A list of network IDs." } }, "description": "[optional] A list of network Names and IDs that will connect with this peer. Supported only for MX 19.1 and above." }, "isRouteBased": { "type": "boolean", "description": "[optional] If true, the VPN peer is route-based. If not included, the default is false. Supported only for MX 19.1 and above." }, "ebgpNeighbor": { "type": "object", "properties": { "neighborId": { "type": "integer", "description": "ID of ebgp neighbor" }, "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "ipVersion": { "type": "integer", "enum": [ 4, 6 ], "description": "The IP version of the neighbor" }, "remoteAsNumber": { "type": "integer", "description": "Remote ASN of the neighbor. The remote ASN must be an integer between 1 and 4294967295." }, "ebgpHoldTimer": { "type": "integer", "description": "The eBGP hold timer in seconds for each neighbor. The eBGP hold timer must be an integer between 12 and 240." }, "ebgpMultihop": { "type": "integer", "description": "Configure this if the neighbor is not adjacent. The eBGP multi-hop must be an integer between 1 and 255." }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" }, "receiveLimit": { "type": "integer", "description": "Maximum number of prefixes accepted from the remote peer. Must be an integer between 0 and 2147483647. Supported only for MX 26.2 and above" }, "pathPrepend": { "type": "array", "items": { "type": "integer" }, "description": "Prepends the AS_PATH BGP Attribute associated with routes received from the remote peer. Configurable value of ASNs to prepend. Length of the array may not exceed 10, and each ASN in the array must be an integer between 1 and 4294967295. AS_PATH is 4th in the decision tree when identical routes from multiple peers exist." }, "multiExitDiscriminator": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." }, "weight": { "type": "integer", "description": "Configures the local metric associated with routes received from the remote peer. Routes from peers with lower metrics are will be preferred. Must be an integer between 0 and 4294967295. MED is 6th in the decision tree when identical routes from multiple peers exist." } }, "description": "[optional] The BGP neighbor configuration for the VPN peer. Supported only for MX 19.1 and above." }, "ecmpUplinkConfigs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the ECMP uplink configuration" }, "wan": { "type": "string", "enum": [ "WAN 1", "WAN 2", "WAN 3", "WAN 4" ], "description": "The WAN uplink associated with this ECMP configuration." }, "privateSubnets": { "type": "array", "items": { "type": "string" }, "description": "The private subnets associated with this ECMP uplink configuration." }, "ebgpNeighbor": { "type": "object", "properties": { "neighborIp": { "type": "string", "description": "IPv4/IPv6 address of the neighbor" }, "sourceIp": { "type": "string", "description": "Source IP of eBGP neighbor" } }, "description": "[optional] The eBGP neighbor configuration associated with this ECMP uplink configuration." } } }, "description": "[optional] The ECMP per-uplink BGP-over-IPsec configuration for the VPN peer." }, "priorityInGroup": { "type": "integer", "description": "[optional] Represents the order of peer inside a group." }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "[optional] Represents the ordering of primary and backup tunnels group. primary and backup tunnels are grouped by this number. Peers containing same group number belongs to same group." }, "failover": { "type": "object", "properties": { "directToInternet": { "type": "boolean", "description": "[optional] When both primary and backup tunnels are down, direct traffic to the internet. Traffic will be routed via the WAN" } }, "description": "[optional] Contains the failover configuration for the group." }, "activeActiveTunnel": { "type": "boolean", "description": "[optional] Both primary and backup tunnels are active." } }, "description": "[optional] Contains the mapping between primary tunnel and backup tunnels." } } }, "description": "The list of VPN peers" } } }, "example": { "peers": [ { "peerId": "1234", "name": "Peer Name", "publicIp": "123.123.123.1", "remoteId": "miles@meraki.com", "localId": "myMXId@meraki.com", "secret": "secret", "privateSubnets": [ "192.168.1.0/24", "192.168.128.0/24" ], "ipsecPolicies": { "ikeCipherAlgo": [ "tripledes" ], "ikeAuthAlgo": [ "sha1" ], "ikePrfAlgo": [ "prfsha1" ], "ikeDiffieHellmanGroup": [ "group2" ], "ikeLifetime": 28800, "childCipherAlgo": [ "aes128" ], "childAuthAlgo": [ "sha1" ], "childPfsGroup": [ "disabled" ], "childLifetime": 28800 }, "slaPolicy": { "id": "1234" }, "ipsecPoliciesPreset": "default", "ikeVersion": "1", "networkTags": [ "all" ], "network": { "names": [ "Network 1", "Location 2", "Network 3" ], "ids": [ "N_1", "L_2", "N_3" ] }, "isRouteBased": true, "ebgpNeighbor": { "neighborId": 1234, "neighborIp": "10.10.10.22", "ipVersion": 4, "remoteAsNumber": 64343, "ebgpHoldTimer": 180, "ebgpMultihop": 2, "sourceIp": "10.10.10.22", "receiveLimit": 100, "pathPrepend": [ 1, 2 ], "multiExitDiscriminator": 1, "weight": 10 }, "ecmpUplinkConfigs": [ { "id": "7890", "wan": "WAN 1", "privateSubnets": [ "169.254.10.0/30" ], "ebgpNeighbor": { "neighborIp": "169.254.10.2", "sourceIp": "169.254.10.1" } } ], "priorityInGroup": 1, "group": { "number": 1, "failover": { "directToInternet": true }, "activeActiveTunnel": true } } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the third party VPN peers for an organization", "tags": [ "appliance", "configure", "vpn", "thirdPartyVPNPeers" ] } }, "/organizations/{organizationId}/appliance/vpn/vpnFirewallRules": { "get": { "description": "Return the firewall rules for an organization's site-to-site VPN", "operationId": "getOrganizationApplianceVpnVpnFirewallRules", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:read" ] } ], "summary": "Return the firewall rules for an organization's site-to-site VPN", "tags": [ "appliance", "configure", "vpn", "vpnFirewallRules" ] }, "put": { "description": "Update the firewall rules of an organization's site-to-site VPN", "operationId": "updateOrganizationApplianceVpnVpnFirewallRules", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "enum": [ "any", "icmp", "icmp6", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (FQDN not supported)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation) or 'any' (FQDN not supported)" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } }, "required": [ "policy", "protocol", "srcCidr", "destCidr" ] }, "description": "An ordered array of the firewall rules (not including the default rule)" }, "syslogDefaultRule": { "type": "boolean", "description": "Log the special default rule (boolean value - enable only if you've configured a syslog server) (optional)" } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ], "syslogDefaultRule": false } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rules": { "type": "array", "items": { "type": "object", "properties": { "comment": { "type": "string", "description": "Description of the rule (optional)" }, "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol (must be 'tcp', 'udp', 'icmp', 'icmp6' or 'any')" }, "srcPort": { "type": "string", "description": "Comma-separated list of source port(s) (integer in the range 1-65535), or 'any'" }, "srcCidr": { "type": "string", "description": "Comma-separated list of source IP address(es) (in IP or CIDR notation), or 'any' (note: FQDN not supported for source addresses)" }, "destPort": { "type": "string", "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" }, "destCidr": { "type": "string", "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" }, "syslogEnabled": { "type": "boolean", "description": "Log this rule to syslog (true or false, boolean value) - only applicable if a syslog has been configured (optional)" } } }, "description": "An ordered array of the firewall rules (not including the default rule)" } } }, "example": { "rules": [ { "comment": "Allow TCP traffic to subnet with HTTP servers.", "policy": "allow", "protocol": "tcp", "srcPort": "Any", "srcCidr": "Any", "destPort": "443", "destCidr": "192.168.1.0/24", "syslogEnabled": false } ] } } } } }, "security": [ { "oauth2": [ "sdwan:config:write" ] } ], "summary": "Update the firewall rules of an organization's site-to-site VPN", "tags": [ "appliance", "configure", "vpn", "vpnFirewallRules" ] } }, "/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assign": { "post": { "description": "Assign VLANs to a policy", "operationId": "assignOrganizationPoliciesGlobalGroupPoliciesApplianceVlans", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy ID" } }, "description": "Policy to assign VLANs to" }, "vlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID of the VLAN" } }, "required": [ "interfaceId" ] }, "description": "VLANs to assign" } }, "example": { "policy": { "id": "123" }, "vlans": [ { "interfaceId": "L_123456789012345678_vlan_4" } ] }, "required": [ "policy", "vlans" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Whether the operation was successful" } } }, "example": { "success": true } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Assign VLANs to a policy", "tags": [ "appliance", "configure", "policies", "global", "group", "vlans" ] } }, "/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assignments": { "get": { "description": "List appliance VLAN policy assignments", "operationId": "getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "assignmentIds", "in": "query", "description": "Filter assignments by assignment IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "policyIds", "in": "query", "description": "Filter assignments by policy IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "interfaceIds", "in": "query", "description": "Filter assignments by interface IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "policyId": { "type": "string", "description": "ID of the assigned policy" }, "interfaceId": { "type": "string", "description": "Interface ID of the VLAN" } } }, "description": "List of Appliance VLAN Assignments" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "assignmentId": "assignment_123", "policyId": "policy_456", "interfaceId": "L_123456789012345678_vlan_200" } ], "meta": { "counts": { "items": { "total": 25, "remaining": 15 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List appliance VLAN policy assignments", "tags": [ "appliance", "configure", "policies", "global", "group", "vlans", "assignments" ] } }, "/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/assignments/byVlan": { "get": { "description": "List policies by appliance VLANs", "operationId": "getOrganizationPoliciesGlobalGroupPoliciesApplianceVlansAssignmentsByVlan", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "search", "in": "query", "description": "Search term for filtering policies", "schema": { "type": "string" } }, { "name": "vlanIds", "in": "query", "description": "Filter by VLAN IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "interfaceIds", "in": "query", "description": "Filter by interface IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID" }, "name": { "type": "string", "description": "Network name" } }, "description": "Network where the VLAN exists" }, "name": { "type": "string", "description": "Name of the VLAN" }, "subnet": { "type": "string", "description": "Subnet of the VLAN" }, "interfaceId": { "type": "string", "description": "Interface ID assigned to the VLAN" }, "vlanId": { "type": "string", "description": "VLAN ID" }, "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy ID" }, "name": { "type": "string", "description": "Policy name" }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "Group number" } }, "description": "Group information used to track the policy" } }, "description": "Policy assigned to the VLAN" } } }, "description": "List of Appliance VLAN Assignments" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "network": { "id": "L_123456789012345678", "name": "Main Office Network" }, "name": "Production VLAN", "subnet": "192.168.1.0/24", "interfaceId": "1234", "vlanId": "100", "policy": { "id": "456", "name": "Production Policy", "group": { "number": 100 } } } ], "meta": { "counts": { "items": { "total": 25, "remaining": 15 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List policies by appliance VLANs", "tags": [ "appliance", "configure", "policies", "global", "group", "vlans", "assignments", "byVlan" ] } }, "/organizations/{organizationId}/policies/global/group/policies/appliance/vlans/remove": { "post": { "description": "Remove VLANs from a policy", "operationId": "removeOrganizationPoliciesGlobalGroupPoliciesApplianceVlans", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy ID" } }, "description": "Policy to remove VLANs from" }, "vlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID of the VLAN" } }, "required": [ "interfaceId" ] }, "description": "VLANs to remove" } }, "example": { "policy": { "id": "123" }, "vlans": [ { "interfaceId": "L_123456789012345678_vlan_4" } ] }, "required": [ "policy", "vlans" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Whether the operation was successful" } } }, "example": { "success": true } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Remove VLANs from a policy", "tags": [ "appliance", "configure", "policies", "global", "group", "vlans" ] } } } }