{ "openapi": "3.0.1", "info": { "title": "Cisco Meraki Dashboard API \u2014 switch", "description": "The switch 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": "accessControlLists", "description": "" }, { "name": "accessPolicies", "description": "" }, { "name": "alternateManagementInterface", "description": "" }, { "name": "arpInspection", "description": "" }, { "name": "byDevice", "description": "" }, { "name": "byInterval", "description": "" }, { "name": "bySwitch", "description": "" }, { "name": "clients", "description": "" }, { "name": "configTemplates", "description": "" }, { "name": "configure", "description": "" }, { "name": "devices", "description": "" }, { "name": "dhcp", "description": "" }, { "name": "dhcpServerPolicy", "description": "" }, { "name": "discovery", "description": "" }, { "name": "dscpToCosMappings", "description": "" }, { "name": "history", "description": "" }, { "name": "interfaces", "description": "" }, { "name": "linkAggregations", "description": "" }, { "name": "liveTools", "description": "" }, { "name": "monitor", "description": "" }, { "name": "mtu", "description": "" }, { "name": "multicast", "description": "" }, { "name": "order", "description": "" }, { "name": "ospf", "description": "" }, { "name": "overview", "description": "" }, { "name": "packets", "description": "" }, { "name": "portSchedules", "description": "" }, { "name": "ports", "description": "" }, { "name": "power", "description": "" }, { "name": "profiles", "description": "" }, { "name": "qosRules", "description": "" }, { "name": "rendezvousPoints", "description": "" }, { "name": "routing", "description": "" }, { "name": "seen", "description": "" }, { "name": "servers", "description": "" }, { "name": "settings", "description": "" }, { "name": "stacks", "description": "" }, { "name": "staticRoutes", "description": "" }, { "name": "statuses", "description": "" }, { "name": "stormControl", "description": "" }, { "name": "stp", "description": "" }, { "name": "summary", "description": "" }, { "name": "switch", "description": "" }, { "name": "topology", "description": "" }, { "name": "trustedServers", "description": "" }, { "name": "usage", "description": "" }, { "name": "v4", "description": "" }, { "name": "warmSpare", "description": "" }, { "name": "warnings", "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}/switch/ports": { "get": { "description": "List the switch ports for a switch", "operationId": "getDeviceSwitchPorts", "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": { "portId": { "type": "string", "description": "The identifier of the switch port." }, "name": { "type": "string", "description": "The name of the switch port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch port." }, "enabled": { "type": "boolean", "description": "The status of the switch port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch port." }, "adaptivePolicyGroupId": { "type": "string", "description": "The adaptive policy group ID that will be used to tag traffic through this switch port. This ID must pre-exist during the configuration, else needs to be created using adaptivePolicy/groups API. Cannot be applied to a port on a switch bound to profile." }, "adaptivePolicyGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the adaptive policy group." }, "name": { "type": "string", "description": "The name of the adaptive policy group." } }, "description": "The adaptive policy group data of the port." }, "peerSgtCapable": { "type": "boolean", "description": "If true, Peer SGT is enabled for traffic through this switch port. Applicable to trunk port only, not access port. Cannot be applied to a port on a switch bound to profile." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } } }, "example": [ { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "adaptivePolicyGroupId": "123", "adaptivePolicyGroup": { "id": "123", "name": "Adaptive Policy Group" }, "peerSgtCapable": false, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List the switch ports for a switch", "tags": [ "switch", "configure", "ports" ] } }, "/devices/{serial}/switch/ports/cycle": { "post": { "deprecated": true, "description": "Cycle a set of switch ports on non-Catalyst MS devices. For Catalyst support, use /devices/{serial}/liveTools/ports/cycle, which supports all switch product families.", "operationId": "cycleDeviceSwitchPorts", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "ports": { "type": "array", "items": { "type": "string" }, "description": "List of switch ports" } }, "example": { "ports": [ "1", "2-5", "1_MA-MOD-8X10G_1", "1_MA-MOD-8X10G_2-1_MA-MOD-8X10G_8" ] }, "required": [ "ports" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "ports": { "type": "array", "items": { "type": "string" }, "description": "List of switch ports" } } }, "example": { "ports": [ "1", "2-5", "1_MA-MOD-8X10G_1", "1_MA-MOD-8X10G_2-1_MA-MOD-8X10G_8" ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Cycle a set of switch ports on non-Catalyst MS devices", "tags": [ "switch", "liveTools", "ports" ], "x-deprecation-notice": "Deprecated: This operation has been marked as deprecated. For more information, visit the deprecated operations page" } }, "/devices/{serial}/switch/ports/statuses": { "get": { "description": "Return the status for all the ports of a switch", "operationId": "getDeviceSwitchPortsStatuses", "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 31 days from today.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. 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": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "enabled": { "type": "boolean", "description": "Whether the port is configured to be enabled." }, "status": { "type": "string", "enum": [ "Connected", "Disabled", "Disconnected" ], "description": "The current connection status of the port." }, "isUplink": { "type": "boolean", "description": "Whether the port is the switch's uplink." }, "errors": { "type": "array", "items": { "type": "string" }, "description": "All errors present on the port." }, "warnings": { "type": "array", "items": { "type": "string" }, "description": "All warnings present on the port." }, "speed": { "type": "string", "enum": [ "", "1 Gbps", "10 Gbps", "10 Mbps", "100 Gbps", "100 Mbps", "2.5 Gbps", "20 Gbps", "25 Gbps", "40 Gbps", "5 Gbps", "50 Gbps" ], "description": "The current data transfer rate which the port is operating at." }, "duplex": { "type": "string", "enum": [ "", "full", "half" ], "description": "The current duplex of a connected port." }, "spanningTree": { "type": "object", "properties": { "statuses": { "type": "array", "items": { "type": "string" }, "description": "The current Spanning Tree Protocol statuses of the port." } }, "description": "The Spanning Tree Protocol (STP) information of the connected device." }, "poe": { "type": "object", "properties": { "isAllocated": { "type": "boolean", "description": "Whether the port is drawing power" } }, "description": "PoE status of the port." }, "usageInKb": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total amount of data sent and received (in kilobytes)." }, "sent": { "type": "integer", "description": "The amount of data sent (in kilobytes)." }, "recv": { "type": "integer", "description": "The amount of data received (in kilobytes)." } }, "description": "A breakdown of how many kilobytes have passed through this port during the timespan. Note that this data is collected periodically from the switch. Any data from the past five minutes may be incomplete." }, "cdp": { "type": "object", "properties": { "systemName": { "type": "string", "description": "The system name." }, "platform": { "type": "string", "description": "Identifies the hardware platform of the device." }, "deviceId": { "type": "string", "description": "Identifies the device name." }, "portId": { "type": "string", "description": "Identifies the port from which the CDP packet was sent." }, "nativeVlan": { "type": "integer", "description": "Indicates, per interface, the assumed VLAN for untagged packets on the interface." }, "address": { "type": "string", "description": "Contains network addresses of both receiving and sending devices." }, "managementAddress": { "type": "string", "description": "The device's management IP." }, "version": { "type": "string", "description": "Contains the device software release information." }, "vtpManagementDomain": { "type": "string", "description": "Advertises the configured VLAN Trunking Protocl (VTP)-management-domain name of the system." }, "capabilities": { "type": "string", "description": "Identifies the device type, which indicates the functional capabilities of the device." } }, "description": "The Cisco Discovery Protocol (CDP) information of the connected device." }, "lldp": { "type": "object", "properties": { "systemName": { "type": "string", "description": "The device's system name." }, "systemDescription": { "type": "string", "description": "The device's system description." }, "chassisId": { "type": "string", "description": "The device's chassis ID." }, "portId": { "type": "string", "description": "Identifies the port from which the LLDP packet was sent" }, "managementVlan": { "type": "integer", "description": "The device's management VLAN." }, "portVlan": { "type": "integer", "description": "The port's VLAN." }, "managementAddress": { "type": "string", "description": "The device's management IP." }, "portDescription": { "type": "string", "description": "Description of the port from which the LLDP packet was sent." }, "systemCapabilities": { "type": "string", "description": "Identifies the device type, which indicates the functional capabilities of the device." } }, "description": "The Link Layer Discovery Protocol (LLDP) information of the connected device." }, "clientCount": { "type": "integer", "description": "The number of clients connected through this port." }, "powerUsageInWh": { "type": "number", "format": "float", "description": "How much power (in watt-hours) has been delivered by this port during the timespan. Note that this data is collected periodically from the switch. Any data from the past five minutes may be incomplete." }, "trafficInKbps": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "The average speed of the data sent and received (in kilobits-per-second)." }, "sent": { "type": "number", "format": "float", "description": "The average speed of the data sent (in kilobits-per-second)." }, "recv": { "type": "number", "format": "float", "description": "The average speed of the data received (in kilobits-per-second)." } }, "description": "A breakdown of the average speed of data that has passed through this port during the timespan. Note that this data is collected periodically from the switch. Any data from the past five minutes may be incomplete." }, "securePort": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether Secure Port is turned on for this port." }, "active": { "type": "boolean", "description": "Whether Secure Port is currently active for this port." }, "authenticationStatus": { "type": "string", "enum": [ "Authentication failure", "Authentication in progress", "Authentication successful", "Authentication timed out", "Disabled", "Enabled" ], "description": "The current Secure Port status." }, "configOverrides": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the . For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the . Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the . Only applicable to trunk ports." } }, "description": "The configuration overrides applied to this port when Secure Port is active." } }, "description": "The Secure Port status of the port." } } } }, "example": [ { "portId": "1", "enabled": true, "status": "Connected", "isUplink": false, "errors": [ "PoE overload", "Very high proportion of CRC errors" ], "warnings": [ "SecurePort authentication in progress", "PoE port was denied power", "High proportion of CRC errors" ], "speed": "10 Gbps", "duplex": "full", "spanningTree": { "statuses": [ "Learning" ] }, "poe": { "isAllocated": false }, "usageInKb": { "total": 40867, "sent": 23008, "recv": 17859 }, "cdp": { "systemName": "", "platform": "MS350-24X", "deviceId": "0c8ddbddee:ff", "portId": "Port 20", "nativeVlan": 1, "address": "10.0,0.1", "managementAddress": "10.0.0.100", "version": "1", "vtpManagementDomain": "", "capabilities": "Switch" }, "lldp": { "systemName": "MS350-24X - Test", "systemDescription": "MS350-24X Cloud Managed PoE Switch", "chassisId": "0c:8d:db:dd:ee:ff", "portId": "20", "managementVlan": 1, "portVlan": 1, "managementAddress": "10.0.0.100", "portDescription": "Port 20", "systemCapabilities": "switch" }, "clientCount": 10, "powerUsageInWh": 55.9, "trafficInKbps": { "total": 2.2, "sent": 1.2, "recv": 1.0 }, "securePort": { "enabled": true, "active": true, "authenticationStatus": "Authentication in progress", "configOverrides": { "type": "trunk", "vlan": 12, "voiceVlan": 34, "allowedVlans": "all" } } } ] } } } }, "security": [ { "oauth2": [ "switch:telemetry:read" ] } ], "summary": "Return the status for all the ports of a switch", "tags": [ "switch", "monitor", "ports", "statuses" ] } }, "/devices/{serial}/switch/ports/statuses/packets": { "get": { "description": "Return the packet counters for all the ports of a switch", "operationId": "getDeviceSwitchPortsStatusesPackets", "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 value is used only to determine the elapsed duration between t0 and the time of the request; the API snaps that duration to the nearest preset window (5 minutes, 15 minutes, 1 hour, or 1 day).", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify t0. The value must be in seconds and be less than or equal to 86400 seconds (1 day). The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 86400.0 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "packets": { "type": "array", "items": { "type": "object", "properties": { "desc": { "type": "string", "description": "The type of packets being counted." }, "total": { "type": "integer", "description": "The total count of sent and received packets." }, "sent": { "type": "integer", "description": "The total count of packets sent by the switch during the timespan." }, "recv": { "type": "integer", "description": "The total count of packets received by the switch during the timespan." }, "ratePerSec": { "type": "object", "properties": { "total": { "type": "integer", "description": "The rate of all packets sent and received during the timespan" }, "sent": { "type": "integer", "description": "The rate of packets sent during the timespan" }, "recv": { "type": "integer", "description": "The rate of packets received during the timespan" } }, "description": "Packet rates measured in packets per second." } } }, "description": "The packet counts on the switch. Note that this data is collected periodically from the switch. Any data from the past five minutes may be incomplete." } } } }, "example": [ { "portId": "1", "packets": [ { "desc": "Total", "total": 112081, "sent": 104135, "recv": 7946, "ratePerSec": { "total": 1, "sent": 1, "recv": 0 } } ] } ] } } } }, "security": [ { "oauth2": [ "switch:telemetry:read" ] } ], "summary": "Return the packet counters for all the ports of a switch", "tags": [ "switch", "monitor", "ports", "statuses", "packets" ] } }, "/devices/{serial}/switch/ports/{portId}": { "get": { "description": "Return a switch port", "operationId": "getDeviceSwitchPort", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": { "portId": { "type": "string", "description": "The identifier of the switch port." }, "name": { "type": "string", "description": "The name of the switch port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch port." }, "enabled": { "type": "boolean", "description": "The status of the switch port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch port." }, "adaptivePolicyGroupId": { "type": "string", "description": "The adaptive policy group ID that will be used to tag traffic through this switch port. This ID must pre-exist during the configuration, else needs to be created using adaptivePolicy/groups API. Cannot be applied to a port on a switch bound to profile." }, "adaptivePolicyGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the adaptive policy group." }, "name": { "type": "string", "description": "The name of the adaptive policy group." } }, "description": "The adaptive policy group data of the port." }, "peerSgtCapable": { "type": "boolean", "description": "If true, Peer SGT is enabled for traffic through this switch port. Applicable to trunk port only, not access port. Cannot be applied to a port on a switch bound to profile." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } }, "example": { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "adaptivePolicyGroupId": "123", "adaptivePolicyGroup": { "id": "123", "name": "Adaptive Policy Group" }, "peerSgtCapable": false, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a switch port", "tags": [ "switch", "configure", "ports" ] }, "put": { "description": "Update a switch port", "operationId": "updateDeviceSwitchPort", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": { "name": { "type": "string", "nullable": true, "description": "The name of the switch port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch port." }, "enabled": { "type": "boolean", "description": "The status of the switch port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "nullable": true, "description": "The VLAN of the switch port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "nullable": true, "description": "The voice VLAN of the switch port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch port." }, "portScheduleId": { "type": "string", "nullable": true, "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "nullable": true, "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch port." }, "adaptivePolicyGroupId": { "type": "string", "nullable": true, "description": "The adaptive policy group ID that will be used to tag traffic through this switch port. This ID must pre-exist during the configuration, else needs to be created using adaptivePolicy/groups API. Cannot be applied to a port on a switch bound to profile." }, "peerSgtCapable": { "type": "boolean", "description": "If true, Peer SGT is enabled for traffic through this switch port. Applicable to trunk port only, not access port. Cannot be applied to a port on a switch bound to profile." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration.", "nullable": true }, "iname": { "type": "string", "description": "When enabled, the IName of the profile.", "nullable": true } }, "description": "Profile attributes" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } }, "example": { "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "portScheduleId": "1234", "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "adaptivePolicyGroupId": "123", "peerSgtCapable": false, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "portId": { "type": "string", "description": "The identifier of the switch port." }, "name": { "type": "string", "description": "The name of the switch port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch port." }, "enabled": { "type": "boolean", "description": "The status of the switch port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch port." }, "adaptivePolicyGroupId": { "type": "string", "description": "The adaptive policy group ID that will be used to tag traffic through this switch port. This ID must pre-exist during the configuration, else needs to be created using adaptivePolicy/groups API. Cannot be applied to a port on a switch bound to profile." }, "adaptivePolicyGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the adaptive policy group." }, "name": { "type": "string", "description": "The name of the adaptive policy group." } }, "description": "The adaptive policy group data of the port." }, "peerSgtCapable": { "type": "boolean", "description": "If true, Peer SGT is enabled for traffic through this switch port. Applicable to trunk port only, not access port. Cannot be applied to a port on a switch bound to profile." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } }, "example": { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "adaptivePolicyGroupId": "123", "adaptivePolicyGroup": { "id": "123", "name": "Adaptive Policy Group" }, "peerSgtCapable": false, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a switch port", "tags": [ "switch", "configure", "ports" ] } }, "/devices/{serial}/switch/routing/interfaces": { "get": { "description": "List layer 3 interfaces for a switch. Those for a stack may be found under switch stack routing.", "operationId": "getDeviceSwitchRoutingInterfaces", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true }, { "name": "mode", "in": "query", "description": "Optional parameter to filter L3 interfaces by mode.", "schema": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ] } }, { "name": "protocol", "in": "query", "description": "Optional parameter to filter L3 interfaces by protocol.", "schema": { "type": "string", "enum": [ "ipv4", "ipv6" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } } }, "example": [ { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List layer 3 interfaces for a switch", "tags": [ "switch", "configure", "routing", "interfaces" ] }, "post": { "description": "Create a layer 3 interface for a switch", "operationId": "createDeviceSwitchRoutingInterface", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "A friendly name or description for the interface or VLAN (max length 128 characters)." }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "L3 Interface mode, can be one of 'vlan', 'routed', 'loopback'. Default is 'vlan'. CS 17.18 or higher is required for 'routed' mode. " }, "subnet": { "type": "string", "nullable": true, "description": "The network that this L3 interface is on, in CIDR notation (ex. 10.1.1.0/24)." }, "switchPortId": { "type": "string", "nullable": true, "description": "Switch Port ID when in Routed mode (CS 17.18 or higher required)" }, "interfaceIp": { "type": "string", "nullable": true, "description": "The IP address that will be used for Layer 3 routing on this VLAN or subnet. This cannot be the same as the device management IP." }, "mtu": { "type": "integer", "nullable": true, "description": "The interface MTU. Applies to native switch layer 3 interfaces, including VLAN and routed modes." }, "multicastRouting": { "type": "string", "enum": [ "IGMP snooping querier", "disabled", "enabled" ], "description": "Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'." }, "vlanId": { "type": "integer", "nullable": true, "description": "The VLAN this L3 interface is on. VLAN must be between 1 and 4094." }, "defaultGateway": { "type": "string", "description": "The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface." }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "The OSPF area to which this interface should belong. Can be either 'disabled' or the identifier of an existing OSPF area. Defaults to 'disabled'." }, "cost": { "type": "integer", "description": "The path cost for this interface. Defaults to 1, but can be increased up to 65535 to give lower priority." }, "isPassiveEnabled": { "type": "boolean", "description": "When enabled, OSPF will not run on the interface, but the subnet will still be advertised." }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "The OSPF routing settings of the interface." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "The IPv6 assignment mode for the interface. Can be either 'eui-64' or 'static'.", "nullable": true }, "prefix": { "type": "string", "description": "The IPv6 prefix of the interface. Required if IPv6 object is included.", "nullable": true }, "address": { "type": "string", "description": "The IPv6 address of the interface. Required if assignmentMode is 'static'. Must not be included if assignmentMode is 'eui-64'.", "nullable": true }, "gateway": { "type": "string", "description": "The IPv6 default gateway of the interface. Required if prefix is defined and this is the first interface with IPv6 configured." } }, "description": "The IPv6 settings of the interface." }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to." } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "The loopback settings of the interface." } }, "example": { "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "switchPortId": "1", "interfaceIp": "192.168.1.2", "mtu": 1500, "multicastRouting": "disabled", "vlanId": 100, "defaultGateway": "192.168.1.1", "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "prefix": "2001:db8::/32", "address": "2001:db8::1", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a layer 3 interface for a switch", "tags": [ "switch", "configure", "routing", "interfaces" ] } }, "/devices/{serial}/switch/routing/interfaces/{interfaceId}": { "get": { "description": "Return a layer 3 interface for a switch", "operationId": "getDeviceSwitchRoutingInterface", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 interface for a switch", "tags": [ "switch", "configure", "routing", "interfaces" ] }, "put": { "description": "Update a layer 3 interface for a switch", "operationId": "updateDeviceSwitchRoutingInterface", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": { "name": { "type": "string", "description": "A friendly name or description for the interface or VLAN (max length 128 characters)." }, "subnet": { "type": "string", "nullable": true, "description": "The network that this L3 interface is on, in CIDR notation (ex. 10.1.1.0/24)." }, "switchPortId": { "type": "string", "nullable": true, "description": "Switch Port ID when in Routed mode (CS 17.18 or higher required)" }, "interfaceIp": { "type": "string", "nullable": true, "description": "The IP address that will be used for Layer 3 routing on this VLAN or subnet. This cannot be the same as the device management IP." }, "mtu": { "type": "integer", "nullable": true, "description": "The interface MTU. Applies to native switch layer 3 interfaces, including VLAN and routed modes." }, "multicastRouting": { "type": "string", "enum": [ "IGMP snooping querier", "disabled", "enabled" ], "description": "Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'." }, "vlanId": { "type": "integer", "nullable": true, "description": "The VLAN this L3 interface is on. VLAN must be between 1 and 4094." }, "defaultGateway": { "type": "string", "description": "The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface." }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "The OSPF area to which this interface should belong. Can be either 'disabled' or the identifier of an existing OSPF area. Defaults to 'disabled'." }, "cost": { "type": "integer", "description": "The path cost for this interface. Defaults to 1, but can be increased up to 65535 to give lower priority." }, "isPassiveEnabled": { "type": "boolean", "description": "When enabled, OSPF will not run on the interface, but the subnet will still be advertised." }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "The OSPF routing settings of the interface." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "The IPv6 assignment mode for the interface. Can be either 'eui-64' or 'static'.", "nullable": true }, "prefix": { "type": "string", "description": "The IPv6 prefix of the interface. Required if IPv6 object is included.", "nullable": true }, "address": { "type": "string", "description": "The IPv6 address of the interface. Required if assignmentMode is 'static'. Must not be included if assignmentMode is 'eui-64'.", "nullable": true }, "gateway": { "type": "string", "description": "The IPv6 default gateway of the interface. Required if prefix is defined and this is the first interface with IPv6 configured." } }, "description": "The IPv6 settings of the interface." }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to." } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "The loopback settings of the interface." } }, "example": { "name": "L3 interface", "subnet": "192.168.1.0/24", "switchPortId": "1", "interfaceIp": "192.168.1.2", "mtu": 1500, "multicastRouting": "disabled", "vlanId": 100, "defaultGateway": "192.168.1.1", "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "prefix": "2001:db8::/32", "address": "2001:db8::1", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 interface for a switch", "tags": [ "switch", "configure", "routing", "interfaces" ] }, "delete": { "description": "Delete a layer 3 interface from the switch", "operationId": "deleteDeviceSwitchRoutingInterface", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a layer 3 interface from the switch", "tags": [ "switch", "configure", "routing", "interfaces" ] } }, "/devices/{serial}/switch/routing/interfaces/{interfaceId}/dhcp": { "get": { "description": "Return a layer 3 interface DHCP configuration for a switch", "operationId": "getDeviceSwitchRoutingInterfaceDhcp", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "dhcpMode": { "type": "string", "description": "The DHCP mode options for the switch stack interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface" }, "dhcpLeaseTime": { "type": "string", "description": "The DHCP lease time config for the dhcp server running on the switch stack interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "description": "The DHCP name server option for the dhcp server running on the switch stack interface ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is 'custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch stack interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch stack interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server file name for the DHCP server running on the switch stack interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "description": "The type of the DHCP option which should be one of ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } } }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the switch stack interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" } } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 interface DHCP configuration for a switch", "tags": [ "switch", "configure", "routing", "interfaces", "dhcp" ] }, "put": { "description": "Update a layer 3 interface DHCP configuration for a switch", "operationId": "updateDeviceSwitchRoutingInterfaceDhcp", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": { "dhcpMode": { "type": "string", "enum": [ "dhcpDisabled", "dhcpRelay", "dhcpServer" ], "description": "The DHCP mode options for the switch interface\n ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch interface" }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The DHCP lease time config for the dhcp server running on switch interface\n ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "enum": [ "custom", "googlePublicDns", "openDns" ], "description": "The DHCP name server option for the dhcp server running on the switch interface\n ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is\n 'custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch\n interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server filename for the DHCP server running on the switch interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type of the DHCP option which should be one of\n ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the switch interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } }, "required": [ "start", "end" ] }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } }, "required": [ "name", "mac", "ip" ] }, "description": "Array of DHCP fixed IP assignments for the DHCP server running on the switch interface" } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "dhcpMode": { "type": "string", "description": "The DHCP mode options for the switch stack interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface" }, "dhcpLeaseTime": { "type": "string", "description": "The DHCP lease time config for the dhcp server running on the switch stack interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "description": "The DHCP name server option for the dhcp server running on the switch stack interface ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is 'custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch stack interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch stack interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server file name for the DHCP server running on the switch stack interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "description": "The type of the DHCP option which should be one of ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } } }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the switch stack interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" } } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 interface DHCP configuration for a switch", "tags": [ "switch", "configure", "routing", "interfaces", "dhcp" ] } }, "/devices/{serial}/switch/routing/staticRoutes": { "get": { "description": "List layer 3 static routes for a switch", "operationId": "getDeviceSwitchRoutingStaticRoutes", "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": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] } }, "example": [ { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List layer 3 static routes for a switch", "tags": [ "switch", "configure", "routing", "staticRoutes" ] }, "post": { "description": "Create a layer 3 static route for a switch", "operationId": "createDeviceSwitchRoutingStaticRoute", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name or description for layer 3 static route" }, "subnet": { "type": "string", "description": "The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "IP address of the next hop device to which the device sends its traffic for the subnet" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static route via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static route over OSPF routes" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false, "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false } }, "required": [ "subnet", "nextHopIp" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a layer 3 static route for a switch", "tags": [ "switch", "configure", "routing", "staticRoutes" ] } }, "/devices/{serial}/switch/routing/staticRoutes/{staticRouteId}": { "get": { "description": "Return a layer 3 static route for a switch", "operationId": "getDeviceSwitchRoutingStaticRoute", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 static route for a switch", "tags": [ "switch", "configure", "routing", "staticRoutes" ] }, "put": { "description": "Update a layer 3 static route for a switch", "operationId": "updateDeviceSwitchRoutingStaticRoute", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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 or description for layer 3 static route" }, "subnet": { "type": "string", "description": "The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "IP address of the next hop device to which the device sends its traffic for the subnet" }, "managementNextHop": { "type": "string", "nullable": true, "description": "Optional fallback IP address for management traffic" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static route via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static route over OSPF routes" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false, "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false } } } } }, "required": false }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 static route for a switch", "tags": [ "switch", "configure", "routing", "staticRoutes" ] }, "delete": { "description": "Delete a layer 3 static route for a switch", "operationId": "deleteDeviceSwitchRoutingStaticRoute", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "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": [ "switch:config:write" ] } ], "summary": "Delete a layer 3 static route for a switch", "tags": [ "switch", "configure", "routing", "staticRoutes" ] } }, "/devices/{serial}/switch/warmSpare": { "get": { "description": "Return warm spare configuration for a switch", "operationId": "getDeviceSwitchWarmSpare", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable warm spare for a switch" }, "primarySerial": { "type": "string", "description": "Serial number of the primary switch" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare switch" } } }, "example": { "enabled": true, "primarySerial": "Q234-ABCD-0001", "spareSerial": "Q234-ABCD-0002" } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return warm spare configuration for a switch", "tags": [ "switch", "configure", "warmSpare" ] }, "put": { "description": "Update warm spare configuration for a switch. The spare will use the same L3 configuration as the primary. Note that this will irreversibly destroy any existing L3 configuration on the spare.", "operationId": "updateDeviceSwitchWarmSpare", "parameters": [ { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable warm spare for a switch" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare switch" } }, "example": { "enabled": true, "spareSerial": "Q234-ABCD-0002" }, "required": [ "enabled" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable warm spare for a switch" }, "primarySerial": { "type": "string", "description": "Serial number of the primary switch" }, "spareSerial": { "type": "string", "description": "Serial number of the warm spare switch" } } }, "example": { "enabled": true, "primarySerial": "Q234-ABCD-0001", "spareSerial": "Q234-ABCD-0002" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update warm spare configuration for a switch", "tags": [ "switch", "configure", "warmSpare" ] } }, "/networks/{networkId}/switch/accessControlLists": { "get": { "description": "Return the access control lists for a MS network", "operationId": "getNetworkSwitchAccessControlLists", "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", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "ipVersion": { "type": "string", "enum": [ "any", "ipv4", "ipv6" ], "description": "IP address version" }, "protocol": { "type": "string", "enum": [ "any", "tcp", "udp" ], "description": "The type of protocol" }, "srcCidr": { "type": "string", "description": "Source IP address (in IP or CIDR notation)" }, "srcPort": { "type": "string", "description": "Source port" }, "dstCidr": { "type": "string", "description": "Destination IP address (in IP or CIDR notation)" }, "dstPort": { "type": "string", "description": "Destination port" }, "vlan": { "type": "string", "description": "ncoming traffic VLAN" } } }, "description": "An ordered array of the access control list rules" } } }, "example": { "rules": [ { "comment": "Deny SSH", "policy": "deny", "ipVersion": "ipv4", "protocol": "tcp", "srcCidr": "10.1.10.0/24", "srcPort": "any", "dstCidr": "172.16.30/24", "dstPort": "22", "vlan": "10" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the access control lists for a MS network", "tags": [ "switch", "configure", "accessControlLists" ] }, "put": { "description": "Update the access control lists for a MS network", "operationId": "updateNetworkSwitchAccessControlLists", "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." }, "ipVersion": { "type": "string", "enum": [ "any", "ipv4", "ipv6" ], "description": "IP address version (must be 'any', 'ipv4' or 'ipv6'). Applicable only if network supports IPv6. Default value is 'ipv4'." }, "protocol": { "type": "string", "enum": [ "any", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', or 'any')." }, "srcCidr": { "type": "string", "description": "Source IP address (in IP or CIDR notation) or 'any'." }, "srcPort": { "type": "string", "description": "Source port. Must be in the range of 1-65535 or 'any'. Default is 'any'." }, "dstCidr": { "type": "string", "description": "Destination IP address (in IP or CIDR notation) or 'any'." }, "dstPort": { "type": "string", "description": "Destination port. Must be in the range of 1-65535 or 'any'. Default is 'any'." }, "vlan": { "type": "string", "description": "Incoming traffic VLAN. Must be in the range of 1-4095 or 'any'. Default is 'any'." } }, "required": [ "policy", "protocol", "srcCidr", "dstCidr" ] }, "description": "An ordered array of the access control list rules (not including the default rule). An empty array will clear the rules." } }, "example": { "rules": [ { "comment": "Deny SSH", "policy": "deny", "ipVersion": "ipv4", "protocol": "tcp", "srcCidr": "10.1.10.0/24", "srcPort": "any", "dstCidr": "172.16.30/24", "dstPort": "22", "vlan": "10" } ] }, "required": [ "rules" ] } } }, "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", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule" }, "ipVersion": { "type": "string", "enum": [ "any", "ipv4", "ipv6" ], "description": "IP address version" }, "protocol": { "type": "string", "enum": [ "any", "tcp", "udp" ], "description": "The type of protocol" }, "srcCidr": { "type": "string", "description": "Source IP address (in IP or CIDR notation)" }, "srcPort": { "type": "string", "description": "Source port" }, "dstCidr": { "type": "string", "description": "Destination IP address (in IP or CIDR notation)" }, "dstPort": { "type": "string", "description": "Destination port" }, "vlan": { "type": "string", "description": "ncoming traffic VLAN" } } }, "description": "An ordered array of the access control list rules" } } }, "example": { "rules": [ { "comment": "Deny SSH", "policy": "deny", "ipVersion": "ipv4", "protocol": "tcp", "srcCidr": "10.1.10.0/24", "srcPort": "any", "dstCidr": "172.16.30/24", "dstPort": "22", "vlan": "10" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the access control lists for a MS network", "tags": [ "switch", "configure", "accessControlLists" ] } }, "/networks/{networkId}/switch/accessPolicies": { "get": { "description": "List the access policies for a switch network. Only returns access policies with 'my RADIUS server' as authentication method", "operationId": "getNetworkSwitchAccessPolicies", "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": { "accessPolicyNumber": { "type": "string", "description": "Access policy number is used to identify the access policy within the network" }, "name": { "type": "string", "description": "Name of the access policy" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN (Requires MS 18 or higher)" }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN (Requires MS 18 or higher)" }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN (Requires MS 18 or higher)" }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN (Requires MS 18 or higher)" } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy (Requires MS 18 or higher)" }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy (Requires MS 18 or higher)" }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "description": "Authentication mode of the policy: Open | Closed (Requires MS 18 or higher)" } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy (Requires MS 18 or higher)" } }, "description": "Object for RADIUS Settings" }, "enforceRadiusMonitoring": { "type": "boolean", "description": "This is a readonly flag, indicating whether the access policy was under has_guest_port_bouncing NFO" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS accounting server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources", "nullable": true }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a response_objectific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "counts": { "type": "object", "properties": { "ports": { "type": "object", "properties": { "withThisPolicy": { "type": "integer", "description": "Number of ports in the network with this policy. For template networks, this is the number of template ports (not child ports) with this policy." } }, "description": "Counts associated with ports" } }, "description": "Counts associated with the access policy" }, "guestGroupPolicyId": { "type": "string", "description": "Group policy Number for guest group policy (Requires MS 18 or higher)" }, "guestSgtId": { "type": "integer", "description": "Security Group Tag ID for guest group policy (Requires MS 18 or higher)" } } } }, "example": [ { "accessPolicyNumber": "1234", "name": "Access policy #1", "radiusServers": [ { "serverId": "1", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "enforceRadiusMonitoring": false, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "serverId": "2", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "counts": { "ports": { "withThisPolicy": 12 } }, "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List the access policies for a switch network", "tags": [ "switch", "configure", "accessPolicies" ] }, "post": { "description": "Create an access policy for a switch network. If you would like to enable Meraki Authentication, set radiusServers to empty array.", "operationId": "createNetworkSwitchAccessPolicy", "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 access policy(max length 255)" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. If this field is provided, the host, port and secret field will be ignored" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" }, "secret": { "type": "string", "description": "RADIUS client shared secret" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN", "nullable": true }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN", "nullable": true }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN", "nullable": true }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN", "nullable": true } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy", "nullable": true }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy", "nullable": true }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Closed", "Open" ], "description": "Authentication mode of the policy ( Open | Closed ) ", "nullable": true } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy", "nullable": true } }, "description": "Object for RADIUS Settings" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. If this field is provided, the host, port and secret field will be ignored" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" }, "secret": { "type": "string", "description": "RADIUS client shared secret" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "nullable": true, "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources" }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "guestGroupPolicyId": { "type": "string", "nullable": true, "description": "Group policy Number for guest group policy" }, "guestSgtId": { "type": "integer", "nullable": true, "description": "Security Group Tag ID for guest group policy" } }, "example": { "name": "Access policy #1", "radiusServers": [ { "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22, "secret": "secret" } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22, "secret": "secret" } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 }, "required": [ "name", "radiusServers", "radiusAccountingEnabled" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "accessPolicyNumber": { "type": "string", "description": "Access policy number is used to identify the access policy within the network" }, "name": { "type": "string", "description": "Name of the access policy" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN (Requires MS 18 or higher)" }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN (Requires MS 18 or higher)" }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN (Requires MS 18 or higher)" }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN (Requires MS 18 or higher)" } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy (Requires MS 18 or higher)" }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy (Requires MS 18 or higher)" }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "description": "Authentication mode of the policy: Open | Closed (Requires MS 18 or higher)" } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy (Requires MS 18 or higher)" } }, "description": "Object for RADIUS Settings" }, "enforceRadiusMonitoring": { "type": "boolean", "description": "This is a readonly flag, indicating whether the access policy was under has_guest_port_bouncing NFO" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS accounting server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources", "nullable": true }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a response_objectific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "counts": { "type": "object", "properties": { "ports": { "type": "object", "properties": { "withThisPolicy": { "type": "integer", "description": "Number of ports in the network with this policy. For template networks, this is the number of template ports (not child ports) with this policy." } }, "description": "Counts associated with ports" } }, "description": "Counts associated with the access policy" }, "guestGroupPolicyId": { "type": "string", "description": "Group policy Number for guest group policy (Requires MS 18 or higher)" }, "guestSgtId": { "type": "integer", "description": "Security Group Tag ID for guest group policy (Requires MS 18 or higher)" } } }, "example": { "accessPolicyNumber": "1234", "name": "Access policy #1", "radiusServers": [ { "serverId": "1", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "enforceRadiusMonitoring": false, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "serverId": "2", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "counts": { "ports": { "withThisPolicy": 12 } }, "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create an access policy for a switch network", "tags": [ "switch", "configure", "accessPolicies" ] } }, "/networks/{networkId}/switch/accessPolicies/{accessPolicyNumber}": { "get": { "description": "Return a specific access policy for a switch network", "operationId": "getNetworkSwitchAccessPolicy", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "accessPolicyNumber", "in": "path", "description": "Access policy number", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "accessPolicyNumber": { "type": "string", "description": "Access policy number is used to identify the access policy within the network" }, "name": { "type": "string", "description": "Name of the access policy" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN (Requires MS 18 or higher)" }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN (Requires MS 18 or higher)" }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN (Requires MS 18 or higher)" }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN (Requires MS 18 or higher)" } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy (Requires MS 18 or higher)" }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy (Requires MS 18 or higher)" }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "description": "Authentication mode of the policy: Open | Closed (Requires MS 18 or higher)" } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy (Requires MS 18 or higher)" } }, "description": "Object for RADIUS Settings" }, "enforceRadiusMonitoring": { "type": "boolean", "description": "This is a readonly flag, indicating whether the access policy was under has_guest_port_bouncing NFO" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS accounting server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources", "nullable": true }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a response_objectific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "counts": { "type": "object", "properties": { "ports": { "type": "object", "properties": { "withThisPolicy": { "type": "integer", "description": "Number of ports in the network with this policy. For template networks, this is the number of template ports (not child ports) with this policy." } }, "description": "Counts associated with ports" } }, "description": "Counts associated with the access policy" }, "guestGroupPolicyId": { "type": "string", "description": "Group policy Number for guest group policy (Requires MS 18 or higher)" }, "guestSgtId": { "type": "integer", "description": "Security Group Tag ID for guest group policy (Requires MS 18 or higher)" } } }, "example": { "accessPolicyNumber": "1234", "name": "Access policy #1", "radiusServers": [ { "serverId": "1", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "enforceRadiusMonitoring": false, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "serverId": "2", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "counts": { "ports": { "withThisPolicy": 12 } }, "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a specific access policy for a switch network", "tags": [ "switch", "configure", "accessPolicies" ] }, "put": { "description": "Update an access policy for a switch network. If you would like to enable Meraki Authentication, set radiusServers to empty array.", "operationId": "updateNetworkSwitchAccessPolicy", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "accessPolicyNumber", "in": "path", "description": "Access policy number", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the access policy(max length 255)" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS server. When provided, the existing RADIUS server will be updated instead of creating a new one" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. If this field is provided, the host, port and secret field will be ignored" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" }, "secret": { "type": "string", "description": "RADIUS client shared secret" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN", "nullable": true }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN", "nullable": true }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN", "nullable": true }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN", "nullable": true } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy", "nullable": true }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy", "nullable": true }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Closed", "Open" ], "description": "Authentication mode of the policy ( Open | Closed ) ", "nullable": true } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy", "nullable": true } }, "description": "Object for RADIUS Settings" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS accounting server. When provided, the existing RADIUS server will be updated instead of creating a new one" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. If this field is provided, the host, port and secret field will be ignored" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" }, "secret": { "type": "string", "description": "RADIUS client shared secret" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "nullable": true, "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources" }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "guestGroupPolicyId": { "type": "string", "nullable": true, "description": "Group policy Number for guest group policy" }, "guestSgtId": { "type": "integer", "nullable": true, "description": "Security Group Tag ID for guest group policy" } }, "example": { "name": "Access policy #1", "radiusServers": [ { "serverId": "1", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22, "secret": "secret" } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "serverId": "2", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22, "secret": "secret" } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "accessPolicyNumber": { "type": "string", "description": "Access policy number is used to identify the access policy within the network" }, "name": { "type": "string", "description": "Name of the access policy" }, "radiusServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS server listens on for access requests" } } }, "description": "List of RADIUS servers to require connecting devices to authenticate against before granting network access" }, "radius": { "type": "object", "properties": { "criticalAuth": { "type": "object", "properties": { "dataVlanId": { "type": "integer", "description": "VLAN that clients who use data will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "voiceVlanId": { "type": "integer", "description": "VLAN that clients who use voice will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "suspendPortBounce": { "type": "boolean", "description": "Disable port bounce when RADIUS servers are unreachable" }, "dataGroupPolicyId": { "type": "string", "description": "Group policy Number for data VLAN (Requires MS 18 or higher)" }, "voiceGroupPolicyId": { "type": "string", "description": "Group policy Number for voice VLAN (Requires MS 18 or higher)" }, "dataSgtId": { "type": "integer", "description": "Security Group Tag ID for data VLAN (Requires MS 18 or higher)" }, "voiceSgtId": { "type": "integer", "description": "Security Group Tag ID for voice VLAN (Requires MS 18 or higher)" } }, "description": "Critical auth settings for when authentication is rejected by the RADIUS server" }, "failedAuthVlanId": { "type": "integer", "description": "VLAN that clients will be placed on when RADIUS authentication fails. Will be null if hostMode is Multi-Auth", "nullable": true }, "failedAuthGroupPolicyId": { "type": "string", "description": "Group policy Number for failed authentication group policy (Requires MS 18 or higher)" }, "failedAuthSgtId": { "type": "integer", "description": "Security Group Tag ID for failed authentication group policy (Requires MS 18 or higher)" }, "reAuthenticationInterval": { "type": "integer", "description": "Re-authentication period in seconds. Will be null if hostMode is Multi-Auth", "nullable": true }, "cache": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable to cache authorization and authentication responses on the RADIUS server" }, "timeout": { "type": "integer", "description": "If RADIUS caching is enabled, this value dictates how long the cache will remain in the RADIUS server, in hours, to allow network access without authentication" } }, "description": "Object for RADIUS Cache Settings" }, "authentication": { "type": "object", "properties": { "mode": { "type": "string", "description": "Authentication mode of the policy: Open | Closed (Requires MS 18 or higher)" } }, "description": "Object for authentication mode settings" }, "preAuthenticationGroupPolicyId": { "type": "string", "description": "Group policy Number for pre-authentication group policy (Requires MS 18 or higher)" } }, "description": "Object for RADIUS Settings" }, "enforceRadiusMonitoring": { "type": "boolean", "description": "This is a readonly flag, indicating whether the access policy was under has_guest_port_bouncing NFO" }, "guestPortBouncing": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusTestingEnabled": { "type": "boolean", "description": "If enabled, Meraki devices will periodically send access-request messages to these RADIUS servers" }, "radiusCoaSupportEnabled": { "type": "boolean", "description": "Change of authentication for RADIUS re-authentication and disconnection" }, "radiusAccountingEnabled": { "type": "boolean", "description": "Enable to send start, interim-update and stop messages to a configured RADIUS accounting server for tracking connected clients" }, "radiusAccountingServers": { "type": "array", "items": { "type": "object", "properties": { "serverId": { "type": "string", "description": "Unique ID of the RADIUS accounting server" }, "organizationRadiusServerId": { "type": "string", "description": "Organization wide RADIUS server ID. This value will be empty if this RADIUS server is not an organization wide RADIUS server" }, "host": { "type": "string", "description": "Public IP address of the RADIUS accounting server" }, "port": { "type": "integer", "description": "UDP port that the RADIUS Accounting server listens on for access requests" } } }, "description": "List of RADIUS accounting servers to require connecting devices to authenticate against before granting network access" }, "radiusGroupAttribute": { "type": "string", "description": "Acceptable values are `\"\"` for None, or `\"11\"` for Group Policies ACL" }, "hostMode": { "type": "string", "enum": [ "Multi-Auth", "Multi-Domain", "Multi-Host", "Single-Host" ], "description": "Choose the Host Mode for the access policy." }, "accessPolicyType": { "type": "string", "enum": [ "802.1x", "Hybrid authentication", "MAC authentication bypass" ], "description": "Access Type of the policy. Automatically 'Hybrid authentication' when hostMode is 'Multi-Domain'." }, "increaseAccessSpeed": { "type": "boolean", "description": "Enabling this option will make switches execute 802.1X and MAC-bypass authentication simultaneously so that clients authenticate faster. Only required when accessPolicyType is 'Hybrid Authentication." }, "guestVlanId": { "type": "integer", "description": "ID for the guest VLAN allow unauthorized devices access to limited network resources", "nullable": true }, "dot1x": { "type": "object", "properties": { "controlDirection": { "type": "string", "enum": [ "both", "inbound" ], "description": "Supports either 'both' or 'inbound'. Set to 'inbound' to allow unauthorized egress on the switchport. Set to 'both' to control both traffic directions with authorization. Defaults to 'both'", "nullable": true } }, "description": "802.1x Settings" }, "voiceVlanClients": { "type": "boolean", "description": "CDP/LLDP capable voice clients will be able to use this VLAN. Automatically true when hostMode is 'Multi-Domain'." }, "urlRedirectWalledGardenEnabled": { "type": "boolean", "description": "Enable to restrict access for clients to a response_objectific set of IP addresses or hostnames prior to authentication" }, "urlRedirectWalledGardenRanges": { "type": "array", "items": { "type": "string" }, "description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication" }, "counts": { "type": "object", "properties": { "ports": { "type": "object", "properties": { "withThisPolicy": { "type": "integer", "description": "Number of ports in the network with this policy. For template networks, this is the number of template ports (not child ports) with this policy." } }, "description": "Counts associated with ports" } }, "description": "Counts associated with the access policy" }, "guestGroupPolicyId": { "type": "string", "description": "Group policy Number for guest group policy (Requires MS 18 or higher)" }, "guestSgtId": { "type": "integer", "description": "Security Group Tag ID for guest group policy (Requires MS 18 or higher)" } } }, "example": { "accessPolicyNumber": "1234", "name": "Access policy #1", "radiusServers": [ { "serverId": "1", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radius": { "criticalAuth": { "dataVlanId": 100, "voiceVlanId": 100, "suspendPortBounce": true, "dataGroupPolicyId": "1234", "voiceGroupPolicyId": "1234", "dataSgtId": 1234, "voiceSgtId": 1234 }, "failedAuthVlanId": 100, "failedAuthGroupPolicyId": "1234", "failedAuthSgtId": 1284392014819, "reAuthenticationInterval": 120, "cache": { "enabled": false, "timeout": 24 }, "authentication": { "mode": "Open" }, "preAuthenticationGroupPolicyId": "1234" }, "enforceRadiusMonitoring": false, "guestPortBouncing": false, "radiusTestingEnabled": false, "radiusCoaSupportEnabled": false, "radiusAccountingEnabled": true, "radiusAccountingServers": [ { "serverId": "2", "organizationRadiusServerId": "42", "host": "1.2.3.4", "port": 22 } ], "radiusGroupAttribute": "11", "hostMode": "Single-Host", "accessPolicyType": "Hybrid authentication", "increaseAccessSpeed": false, "guestVlanId": 100, "dot1x": { "controlDirection": "inbound" }, "voiceVlanClients": true, "urlRedirectWalledGardenEnabled": true, "urlRedirectWalledGardenRanges": [ "192.168.1.0/24" ], "counts": { "ports": { "withThisPolicy": 12 } }, "guestGroupPolicyId": "1234", "guestSgtId": 1284392014819 } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update an access policy for a switch network", "tags": [ "switch", "configure", "accessPolicies" ] }, "delete": { "description": "Delete an access policy for a switch network", "operationId": "deleteNetworkSwitchAccessPolicy", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "accessPolicyNumber", "in": "path", "description": "Access policy number", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete an access policy for a switch network", "tags": [ "switch", "configure", "accessPolicies" ] } }, "/networks/{networkId}/switch/alternateManagementInterface": { "get": { "description": "Return the switch alternate management interface for the network", "operationId": "getNetworkSwitchAlternateManagementInterface", "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": "Boolean value to enable or disable AMI configuration. If enabled, VLAN and protocols must be set" }, "useOobMgmt": { "type": "boolean", "description": "Boolean value to use out-of-band management interface when configured" }, "vlanId": { "type": "integer", "description": "Alternate management VLAN, must be between 1 and 4094" }, "protocols": { "type": "array", "items": { "type": "string" }, "description": "Can be one or more of the following values: 'radius', 'snmp' or 'syslog'" }, "switches": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Switch serial number" }, "alternateManagementIp": { "type": "string", "description": "Switch alternative management IP. To remove a prior IP setting, provide an empty string" }, "subnetMask": { "type": "string", "description": "Switch subnet mask must be in IP format. Required for MS130/150/290/390 and C9 switches" }, "gateway": { "type": "string", "description": "Switch gateway must be in IP format. Required for MS130/150/290/390 and C9 switches" } } }, "description": "Array of switch serial number and IP assignment. If parameter is present, it cannot have empty body. Note: switches parameter is not applicable for template networks, in other words, do not put 'switches' in the body when updating template networks. Also, an empty 'switches' array will remove all previous assignments" } } }, "example": { "enabled": true, "useOobMgmt": false, "vlanId": 100, "protocols": [ "radius", "snmp", "syslog" ], "switches": [ { "serial": "Q234-ABCD-5678", "alternateManagementIp": "1.2.3.4", "subnetMask": "255.255.255.0", "gateway": "1.2.3.5" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the switch alternate management interface for the network", "tags": [ "switch", "configure", "alternateManagementInterface" ] }, "put": { "description": "Update the switch alternate management interface for the network", "operationId": "updateNetworkSwitchAlternateManagementInterface", "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 AMI configuration. If enabled, VLAN and protocols must be set" }, "vlanId": { "type": "integer", "description": "Alternate management VLAN, must be between 1 and 4094" }, "protocols": { "type": "array", "items": { "type": "string", "enum": [ "radius", "snmp", "syslog" ] }, "description": "Can be one or more of the following values: 'radius', 'snmp' or 'syslog'" }, "switches": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Switch serial number" }, "alternateManagementIp": { "type": "string", "description": "Switch alternative management IP. To remove a prior IP setting, provide an empty string" }, "subnetMask": { "type": "string", "description": "Switch subnet mask must be in IP format. Only and must be specified for Polaris switches" }, "gateway": { "type": "string", "description": "Switch gateway must be in IP format. Only and must be specified for Polaris switches" } }, "required": [ "serial", "alternateManagementIp" ] }, "description": "Array of switch serial number and IP assignment. If parameter is present, it cannot have empty body. Note: switches parameter is not applicable for template networks, in other words, do not put 'switches' in the body when updating template networks. Also, an empty 'switches' array will remove all previous assignments" } }, "example": { "enabled": true, "vlanId": 100, "protocols": [ "radius", "snmp", "syslog" ], "switches": [ { "serial": "Q234-ABCD-5678", "alternateManagementIp": "1.2.3.4", "subnetMask": "255.255.255.0", "gateway": "1.2.3.5" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable AMI configuration. If enabled, VLAN and protocols must be set" }, "useOobMgmt": { "type": "boolean", "description": "Boolean value to use out-of-band management interface when configured" }, "vlanId": { "type": "integer", "description": "Alternate management VLAN, must be between 1 and 4094" }, "protocols": { "type": "array", "items": { "type": "string" }, "description": "Can be one or more of the following values: 'radius', 'snmp' or 'syslog'" }, "switches": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Switch serial number" }, "alternateManagementIp": { "type": "string", "description": "Switch alternative management IP. To remove a prior IP setting, provide an empty string" }, "subnetMask": { "type": "string", "description": "Switch subnet mask must be in IP format. Required for MS130/150/290/390 and C9 switches" }, "gateway": { "type": "string", "description": "Switch gateway must be in IP format. Required for MS130/150/290/390 and C9 switches" } } }, "description": "Array of switch serial number and IP assignment. If parameter is present, it cannot have empty body. Note: switches parameter is not applicable for template networks, in other words, do not put 'switches' in the body when updating template networks. Also, an empty 'switches' array will remove all previous assignments" } } }, "example": { "enabled": true, "useOobMgmt": false, "vlanId": 100, "protocols": [ "radius", "snmp", "syslog" ], "switches": [ { "serial": "Q234-ABCD-5678", "alternateManagementIp": "1.2.3.4", "subnetMask": "255.255.255.0", "gateway": "1.2.3.5" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the switch alternate management interface for the network", "tags": [ "switch", "configure", "alternateManagementInterface" ] } }, "/networks/{networkId}/switch/dhcp/v4/servers/seen": { "get": { "description": "Return the network's DHCPv4 servers seen within the selected timeframe (default 1 day)", "operationId": "getNetworkSwitchDhcpV4ServersSeen", "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 31 days from today.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. 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 } }, { "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": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "Mac address of the server." }, "vlan": { "type": "integer", "description": "Vlan id of the server." }, "clientId": { "type": "string", "description": "Client id of the server if available." }, "isAllowed": { "type": "boolean", "description": "Whether the server is allowed or blocked. Always true for configured servers." }, "lastSeenAt": { "type": "string", "format": "date-time", "description": "Last time the server was seen." }, "seenBy": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial." }, "name": { "type": "string", "description": "Device name." }, "url": { "type": "string", "description": "Url link to device." } } }, "description": "Devices that saw the server." }, "type": { "type": "string", "enum": [ "device", "discovered", "stack" ], "description": "server type. Can be a 'device', 'stack', or 'discovered' (i.e client)." }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial." }, "name": { "type": "string", "description": "Device name." }, "url": { "type": "string", "description": "Url link to device." }, "interface": { "type": "object", "properties": { "name": { "type": "string", "description": "Interface name." }, "url": { "type": "string", "description": "Url link to interface." } }, "description": "Interface attributes of the server. Only for configured servers." } }, "description": "Attributes of the server when it's a device." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address of the server." }, "subnet": { "type": "string", "description": "Subnet of the server." }, "gateway": { "type": "string", "description": "IPv4 gateway address of the server." } }, "description": "IPv4 attributes of the server." }, "isConfigured": { "type": "boolean", "description": "Whether the server is configured." }, "lastAck": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Last time the server was acked." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address of the last ack." } }, "description": "IPv4 attributes of the last ack." } }, "description": "Attributes of the server's last ack." }, "lastPacket": { "type": "object", "properties": { "source": { "type": "object", "properties": { "mac": { "type": "string", "description": "Source mac address of the packet." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "Source ipv4 address of the packet." } }, "description": "Source ipv4 attributes of the packet." }, "port": { "type": "integer", "description": "Source port of the packet." } }, "description": "Source of the packet." }, "destination": { "type": "object", "properties": { "mac": { "type": "string", "description": "Destination mac address of the packet." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "Destination ipv4 address of the packet." } }, "description": "Destination ipv4 attributes of the packet." }, "port": { "type": "integer", "description": "Destination port of the packet." } }, "description": "Destination of the packet." }, "type": { "type": "string", "description": "Packet type." }, "ethernet": { "type": "object", "properties": { "type": { "type": "string", "description": "Ethernet type of the packet." } }, "description": "Additional ethernet attributes of the packet." }, "ip": { "type": "object", "properties": { "id": { "type": "string", "description": "IP ID of the packet." }, "version": { "type": "integer", "enum": [ 4, 6 ], "description": "IP version of the packet." }, "length": { "type": "integer", "description": "IP length of the packet." }, "headerLength": { "type": "integer", "description": "IP header length of the packet." }, "protocol": { "type": "integer", "description": "IP protocol number of the packet." }, "ttl": { "type": "integer", "description": "Time to live of the packet." }, "dscp": { "type": "object", "properties": { "tag": { "type": "integer", "description": "DSCP tag number of the packet." }, "ecn": { "type": "integer", "description": "ECN number of the packet." } }, "description": "DSCP attributes of the packet." } }, "description": "Additional IP attributes of the packet." }, "udp": { "type": "object", "properties": { "length": { "type": "integer", "description": "UDP length of the packet." }, "checksum": { "type": "string", "description": "UDP checksum of the packet." } }, "description": "UDP attributes of the packet." }, "fields": { "type": "object", "properties": { "op": { "type": "integer", "description": "Operation code of the packet." }, "htype": { "type": "integer", "description": "Hardware type code of the packet." }, "hlen": { "type": "integer", "description": "Hardware length of the packet." }, "hops": { "type": "integer", "description": "Number of hops the packet took." }, "xid": { "type": "string", "description": "Transaction id of the packet." }, "secs": { "type": "integer", "description": "Number of seconds since receiving the packet." }, "flags": { "type": "string", "description": "Packet flags." }, "ciaddr": { "type": "string", "description": "Client IP address of the packet." }, "yiaddr": { "type": "string", "description": "Assigned IP address of the packet." }, "siaddr": { "type": "string", "description": "Server IP address of the packet." }, "giaddr": { "type": "string", "description": "Gateway IP address of the packet." }, "chaddr": { "type": "string", "description": "Client hardware address of the packet." }, "sname": { "type": "string", "description": "Server identifier address of the packet." }, "magicCookie": { "type": "string", "description": "Magic cookie of the packet." }, "options": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Option name." }, "value": { "type": "string", "description": "Option value." } } }, "description": "Additional DHCP options of the packet." } }, "description": "DHCP-specific fields of the packet." } }, "description": "Last packet the server received." } } } }, "example": [ { "mac": "00:11:22:33:44:55", "vlan": 100, "clientId": "k74272e", "isAllowed": true, "lastSeenAt": "2018-02-11T00:00:00.090210Z", "seenBy": [ { "serial": "Q234-ABCD-0001", "name": "My switch2", "url": "https://n1.meraki.com//n//manage/nodes/new_list/0000000000001" } ], "type": "device", "device": { "serial": "Q234-ABCD-0002", "name": "My AP", "url": "https://n1.meraki.com//n//manage/nodes/new_list/000000000000", "interface": { "name": "My L3 Interface", "url": "https://n1.meraki.com//n//manage/configure/switch_l3/l3_interface/00000" } }, "ipv4": { "address": "10.0.0.0/24", "subnet": "192.168.1.0/24", "gateway": "1.2.3.5" }, "isConfigured": true, "lastAck": { "ts": "2018-02-11T00:00:00.090210Z", "ipv4": { "address": "123.123.123.1" } }, "lastPacket": { "source": { "mac": "00:11:22:33:44:55", "ipv4": { "address": "1.2.3.4" }, "port": 443 }, "destination": { "mac": "22:33:44:55:66:77", "ipv4": { "address": "123.123.123.1" }, "port": 444 }, "type": "ACK", "ethernet": { "type": "0x1212" }, "ip": { "id": "0x1313", "version": 4, "length": 24929, "headerLength": 1, "protocol": 1, "ttl": 50, "dscp": { "tag": 24, "ecn": 1 } }, "udp": { "length": 24929, "checksum": "0x1414" }, "fields": { "op": 1, "htype": 1, "hlen": 6, "hops": 0, "xid": "0x11111111", "secs": 1526087474, "flags": "0x0000", "ciaddr": "1.2.3.4", "yiaddr": "123.123.123.1", "siaddr": "1.2.3.4", "giaddr": "1.2.3.5", "chaddr": "abcdefghijkl", "sname": "1.2.3.4", "magicCookie": "0x22222222", "options": [ { "name": "Lease time", "value": "86400 seconds" } ] } } } ] } }, "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": [ "switch:telemetry:read" ] } ], "summary": "Return the network's DHCPv4 servers seen within the selected timeframe (default 1 day)", "tags": [ "switch", "configure", "dhcp", "v4", "servers", "seen" ] } }, "/networks/{networkId}/switch/dhcpServerPolicy": { "get": { "description": "Return the DHCP server settings. Blocked/allowed servers are only applied when default policy is allow/block, respectively", "operationId": "getNetworkSwitchDhcpServerPolicy", "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": { "alerts": { "type": "object", "properties": { "email": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, send an email if a new DHCP server is seen. Default value is false." } }, "description": "Alert settings for DHCP servers" } }, "description": "Email alert settings for DHCP servers" }, "defaultPolicy": { "type": "string", "enum": [ "allow", "block" ], "description": "'allow' or 'block' new DHCP servers. Default value is 'allow'." }, "blockedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to block on the network when defaultPolicy is set\n to allow.An empty array will clear the entries." }, "allowedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to permit on the network when defaultPolicy is set\n to block.An empty array will clear the entries." }, "alwaysAllowedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers that are always allowed on the network. These are the MAC addresses of switches, switch stacks, and VRRP groups in the network. These servers cannot be blocked." }, "arpInspection": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable Dynamic ARP Inspection on the network. Default value is false." }, "unsupportedModels": { "type": "array", "items": { "type": "string" }, "description": "List of switch models that does not support dynamic ARP inspection" } }, "description": "Dynamic ARP Inspection settings" } } }, "example": { "alerts": { "email": { "enabled": true } }, "defaultPolicy": "block", "blockedServers": [ "00:50:56:00:00:03", "00:50:56:00:00:04" ], "allowedServers": [ "00:50:56:00:00:01", "00:50:56:00:00:02" ], "alwaysAllowedServers": [ "00:50:56:00:00:05", "00:50:56:00:00:06" ], "arpInspection": { "enabled": true, "unsupportedModels": [ "MS120-8", "MS125-24" ] } } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the DHCP server settings", "tags": [ "switch", "configure", "dhcpServerPolicy" ] }, "put": { "description": "Update the DHCP server settings. Blocked/allowed servers are only applied when default policy is allow/block, respectively", "operationId": "updateNetworkSwitchDhcpServerPolicy", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "alerts": { "type": "object", "properties": { "email": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, send an email if a new DHCP server is seen. Default value is false." } }, "description": "Email alert settings for DHCP servers" } }, "description": "Alert settings for DHCP servers" }, "defaultPolicy": { "type": "string", "enum": [ "allow", "block" ], "description": "'allow' or 'block' new DHCP servers. Default value is 'allow'." }, "allowedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to permit on the network when defaultPolicy is set to block. An empty array will clear the entries." }, "blockedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to block on the network when defaultPolicy is set to allow. An empty array will clear the entries." }, "arpInspection": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable Dynamic ARP Inspection on the network. Default value is false." } }, "description": "Dynamic ARP Inspection settings" } }, "example": { "alerts": { "email": { "enabled": true } }, "defaultPolicy": "block", "blockedServers": [ "00:50:56:00:00:03", "00:50:56:00:00:04" ], "allowedServers": [ "00:50:56:00:00:01", "00:50:56:00:00:02" ], "alwaysAllowedServers": [ "00:50:56:00:00:05", "00:50:56:00:00:06" ], "arpInspection": { "enabled": true } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "alerts": { "type": "object", "properties": { "email": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, send an email if a new DHCP server is seen. Default value is false." } }, "description": "Alert settings for DHCP servers" } }, "description": "Email alert settings for DHCP servers" }, "defaultPolicy": { "type": "string", "enum": [ "allow", "block" ], "description": "'allow' or 'block' new DHCP servers. Default value is 'allow'." }, "blockedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to block on the network when defaultPolicy is set\n to allow.An empty array will clear the entries." }, "allowedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers to permit on the network when defaultPolicy is set\n to block.An empty array will clear the entries." }, "alwaysAllowedServers": { "type": "array", "items": { "type": "string" }, "description": "List the MAC addresses of DHCP servers that are always allowed on the network. These are the MAC addresses of switches, switch stacks, and VRRP groups in the network. These servers cannot be blocked." }, "arpInspection": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable or disable Dynamic ARP Inspection on the network. Default value is false." }, "unsupportedModels": { "type": "array", "items": { "type": "string" }, "description": "List of switch models that does not support dynamic ARP inspection" } }, "description": "Dynamic ARP Inspection settings" } } }, "example": { "alerts": { "email": { "enabled": true } }, "defaultPolicy": "block", "blockedServers": [ "00:50:56:00:00:03", "00:50:56:00:00:04" ], "allowedServers": [ "00:50:56:00:00:01", "00:50:56:00:00:02" ], "alwaysAllowedServers": [ "00:50:56:00:00:05", "00:50:56:00:00:06" ], "arpInspection": { "enabled": true, "unsupportedModels": [ "MS120-8", "MS125-24" ] } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the DHCP server settings", "tags": [ "switch", "configure", "dhcpServerPolicy" ] } }, "/networks/{networkId}/switch/dhcpServerPolicy/arpInspection/trustedServers": { "get": { "description": "Return the list of servers trusted by Dynamic ARP Inspection on this network. These are also known as allow listed snoop entries", "operationId": "getNetworkSwitchDhcpServerPolicyArpInspectionTrustedServers", "parameters": [ { "name": "networkId", "in": "path", "description": "Network 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" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "trustedServerId": { "type": "string", "description": "ID of the trusted server." }, "mac": { "type": "string", "description": "Mac address of the trusted server." }, "vlan": { "type": "integer", "description": "Vlan ID of the trusted server." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address of the trusted server." } }, "description": "IPv4 attributes of the trusted server." } } } }, "example": [ { "trustedServerId": "123", "mac": "00:11:22:33:44:55", "vlan": 100, "ipv4": { "address": "1.2.3.4" } } ] } }, "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": [ "switch:config:read" ] } ], "summary": "Return the list of servers trusted by Dynamic ARP Inspection on this network", "tags": [ "switch", "configure", "dhcpServerPolicy", "arpInspection", "trustedServers" ] }, "post": { "description": "Add a server to be trusted by Dynamic ARP Inspection on this network", "operationId": "createNetworkSwitchDhcpServerPolicyArpInspectionTrustedServer", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mac": { "type": "string", "description": "The mac address of the trusted server being added" }, "vlan": { "type": "integer", "description": "The VLAN of the trusted server being added. It must be between 1 and 4094" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "The IPv4 address of the trusted server being added" } }, "description": "The IPv4 attributes of the trusted server being added" } }, "example": { "mac": "00:11:22:33:44:55", "vlan": 100, "ipv4": { "address": "1.2.3.4" } }, "required": [ "mac", "vlan", "ipv4" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "trustedServerId": { "type": "string", "description": "ID of the trusted server." }, "mac": { "type": "string", "description": "Mac address of the trusted server." }, "vlan": { "type": "integer", "description": "Vlan ID of the trusted server." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address of the trusted server." } }, "description": "IPv4 attributes of the trusted server." } } }, "example": { "trustedServerId": "123", "mac": "00:11:22:33:44:55", "vlan": 100, "ipv4": { "address": "1.2.3.4" } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Add a server to be trusted by Dynamic ARP Inspection on this network", "tags": [ "switch", "configure", "dhcpServerPolicy", "arpInspection", "trustedServers" ] } }, "/networks/{networkId}/switch/dhcpServerPolicy/arpInspection/trustedServers/{trustedServerId}": { "put": { "description": "Update a server that is trusted by Dynamic ARP Inspection on this network", "operationId": "updateNetworkSwitchDhcpServerPolicyArpInspectionTrustedServer", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "trustedServerId", "in": "path", "description": "Trusted server ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mac": { "type": "string", "description": "The updated mac address of the trusted server" }, "vlan": { "type": "integer", "description": "The updated VLAN of the trusted server. It must be between 1 and 4094" }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "The updated IPv4 address of the trusted server" } }, "description": "The updated IPv4 attributes of the trusted server" } }, "example": { "mac": "00:11:22:33:44:55", "vlan": 100, "ipv4": { "address": "1.2.3.4" } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "trustedServerId": { "type": "string", "description": "ID of the trusted server." }, "mac": { "type": "string", "description": "Mac address of the trusted server." }, "vlan": { "type": "integer", "description": "Vlan ID of the trusted server." }, "ipv4": { "type": "object", "properties": { "address": { "type": "string", "description": "IPv4 address of the trusted server." } }, "description": "IPv4 attributes of the trusted server." } } }, "example": { "trustedServerId": "123", "mac": "00:11:22:33:44:55", "vlan": 100, "ipv4": { "address": "1.2.3.4" } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a server that is trusted by Dynamic ARP Inspection on this network", "tags": [ "switch", "configure", "dhcpServerPolicy", "arpInspection", "trustedServers" ] }, "delete": { "description": "Remove a server from being trusted by Dynamic ARP Inspection on this network", "operationId": "deleteNetworkSwitchDhcpServerPolicyArpInspectionTrustedServer", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "trustedServerId", "in": "path", "description": "Trusted server ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Remove a server from being trusted by Dynamic ARP Inspection on this network", "tags": [ "switch", "configure", "dhcpServerPolicy", "arpInspection", "trustedServers" ] } }, "/networks/{networkId}/switch/dhcpServerPolicy/arpInspection/warnings/byDevice": { "get": { "description": "Return the devices that have a Dynamic ARP Inspection warning and their warnings", "operationId": "getNetworkSwitchDhcpServerPolicyArpInspectionWarningsByDevice", "parameters": [ { "name": "networkId", "in": "path", "description": "Network 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" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Switch serial." }, "name": { "type": "string", "description": "Switch name." }, "url": { "type": "string", "description": "Url link to switch." }, "supportsInspection": { "type": "boolean", "description": "Whether this switch supports Dynamic ARP Inspection." }, "hasTrustedPort": { "type": "boolean", "description": "Whether this switch has a trusted DAI port. Always false if supportsInspection is false." } } } }, "example": [ { "serial": "Q234-ABCD-0001", "name": "My switch", "url": "https://n1.meraki.com//n//manage/nodes/new_list/000000000000", "supportsInspection": false, "hasTrustedPort": false } ] } }, "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": [ "switch:config:read" ] } ], "summary": "Return the devices that have a Dynamic ARP Inspection warning and their warnings", "tags": [ "switch", "configure", "dhcpServerPolicy", "arpInspection", "warnings", "byDevice" ] } }, "/networks/{networkId}/switch/dscpToCosMappings": { "get": { "description": "Return the DSCP to CoS mappings", "operationId": "getNetworkSwitchDscpToCosMappings", "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": { "mappings": { "type": "array", "items": { "type": "object", "properties": { "dscp": { "type": "integer", "description": "The Differentiated Services Code Point (DSCP) tag in the IP header that will be mapped to a particular Class-of-Service (CoS) queue. Value can be in the range of 0 to 63 inclusive." }, "cos": { "type": "integer", "description": "The actual layer-2 CoS queue the DSCP value is mapped to. These are not bits set on outgoing frames. Value can be in the range of 0 to 5 inclusive." }, "title": { "type": "string", "description": "Label for the mapping (optional)." } } }, "description": "An array of DSCP to CoS mappings. An empty array will reset the mappings to default." } } }, "example": { "mappings": [ { "dscp": 1, "cos": 1, "title": "Video" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the DSCP to CoS mappings", "tags": [ "switch", "configure", "dscpToCosMappings" ] }, "put": { "description": "Update the DSCP to CoS mappings", "operationId": "updateNetworkSwitchDscpToCosMappings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "mappings": { "type": "array", "items": { "type": "object", "properties": { "dscp": { "type": "integer", "description": "The Differentiated Services Code Point (DSCP) tag in the IP header that will be mapped to a particular Class-of-Service (CoS) queue. Value can be in the range of 0 to 63 inclusive." }, "cos": { "type": "integer", "description": "The actual layer-2 CoS queue the DSCP value is mapped to. These are not bits set on outgoing frames. Value can be in the range of 0 to 5 inclusive." }, "title": { "type": "string", "description": "Label for the mapping (optional)." } }, "required": [ "dscp", "cos" ] }, "description": "An array of DSCP to CoS mappings. An empty array will reset the mappings to default." } }, "example": { "mappings": [ { "dscp": 1, "cos": 1, "title": "Video" } ] }, "required": [ "mappings" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mappings": { "type": "array", "items": { "type": "object", "properties": { "dscp": { "type": "integer", "description": "The Differentiated Services Code Point (DSCP) tag in the IP header that will be mapped to a particular Class-of-Service (CoS) queue. Value can be in the range of 0 to 63 inclusive." }, "cos": { "type": "integer", "description": "The actual layer-2 CoS queue the DSCP value is mapped to. These are not bits set on outgoing frames. Value can be in the range of 0 to 5 inclusive." }, "title": { "type": "string", "description": "Label for the mapping (optional)." } } }, "description": "An array of DSCP to CoS mappings. An empty array will reset the mappings to default." } } }, "example": { "mappings": [ { "dscp": 1, "cos": 1, "title": "Video" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the DSCP to CoS mappings", "tags": [ "switch", "configure", "dscpToCosMappings" ] } }, "/networks/{networkId}/switch/linkAggregations": { "get": { "description": "List link aggregation groups", "operationId": "getNetworkSwitchLinkAggregations", "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 ID for the link aggregation." }, "switchPorts": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial number for the switch port." }, "portId": { "type": "string", "description": "The ID for the switch port." } } }, "description": "The ID for the link aggregation." } } } }, "example": [ { "id": "NDU2N18yXzM=", "switchPorts": [ { "serial": "Q234-ABCD-0001", "portId": "1" } ] } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List link aggregation groups", "tags": [ "switch", "configure", "linkAggregations" ] }, "post": { "description": "Create a link aggregation group", "operationId": "createNetworkSwitchLinkAggregation", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "switchPorts": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the switch." }, "portId": { "type": "string", "description": "Port identifier of switch port. For modules, the identifier is \"SlotNumber_ModuleType_PortNumber\" (Ex: \"1_8X10G_1\"), otherwise it is just the port number (Ex: \"8\")." } }, "required": [ "serial", "portId" ] }, "description": "Array of switch or stack ports for creating aggregation group. Minimum 2 and maximum 8 ports are supported." }, "switchProfilePorts": { "type": "array", "items": { "type": "object", "properties": { "profile": { "type": "string", "description": "Profile identifier." }, "portId": { "type": "string", "description": "Port identifier of switch port. For modules, the identifier is \"SlotNumber_ModuleType_PortNumber\" (Ex: \"1_8X10G_1\"), otherwise it is just the port number (Ex: \"8\")." } }, "required": [ "profile", "portId" ] }, "description": "Array of switch profile ports for creating aggregation group. Minimum 2 and maximum 8 ports are supported." } }, "example": { "switchPorts": [ { "serial": "Q234-ABCD-0001", "portId": "1" } ], "switchProfilePorts": [ { "profile": "1234", "portId": "2" } ] } } } }, "required": false }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the link aggregation." }, "switchPorts": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial number for the switch port." }, "portId": { "type": "string", "description": "The ID for the switch port." } } }, "description": "The ID for the link aggregation." } } }, "example": { "id": "NDU2N18yXzM=", "switchPorts": [ { "serial": "Q234-ABCD-0001", "portId": "1" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a link aggregation group", "tags": [ "switch", "configure", "linkAggregations" ] } }, "/networks/{networkId}/switch/linkAggregations/{linkAggregationId}": { "put": { "description": "Update a link aggregation group", "operationId": "updateNetworkSwitchLinkAggregation", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "linkAggregationId", "in": "path", "description": "Link aggregation ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "switchPorts": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the switch." }, "portId": { "type": "string", "description": "Port identifier of switch port. For modules, the identifier is \"SlotNumber_ModuleType_PortNumber\" (Ex: \"1_8X10G_1\"), otherwise it is just the port number (Ex: \"8\")." } }, "required": [ "serial", "portId" ] }, "description": "Array of switch or stack ports for updating aggregation group. Minimum 2 and maximum 8 ports are supported." }, "switchProfilePorts": { "type": "array", "items": { "type": "object", "properties": { "profile": { "type": "string", "description": "Profile identifier." }, "portId": { "type": "string", "description": "Port identifier of switch port. For modules, the identifier is \"SlotNumber_ModuleType_PortNumber\" (Ex: \"1_8X10G_1\"), otherwise it is just the port number (Ex: \"8\")." } }, "required": [ "profile", "portId" ] }, "description": "Array of switch profile ports for updating aggregation group. Minimum 2 and maximum 8 ports are supported." } }, "example": { "switchPorts": [ { "serial": "Q234-ABCD-0001", "portId": "1" } ], "switchProfilePorts": [ { "profile": "1234", "portId": "2" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the link aggregation." }, "switchPorts": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial number for the switch port." }, "portId": { "type": "string", "description": "The ID for the switch port." } } }, "description": "The ID for the link aggregation." } } }, "example": { "id": "NDU2N18yXzM=", "switchPorts": [ { "serial": "Q234-ABCD-0001", "portId": "1" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a link aggregation group", "tags": [ "switch", "configure", "linkAggregations" ] }, "delete": { "description": "Split a link aggregation group into separate ports", "operationId": "deleteNetworkSwitchLinkAggregation", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "linkAggregationId", "in": "path", "description": "Link aggregation ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Split a link aggregation group into separate ports", "tags": [ "switch", "configure", "linkAggregations" ] } }, "/networks/{networkId}/switch/mtu": { "get": { "description": "Return the MTU configuration", "operationId": "getNetworkSwitchMtu", "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": { "defaultMtuSize": { "type": "integer", "description": "MTU size for the entire network. Default value is 9578." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serials. Applicable only for switch network." }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs. Applicable only for template network." }, "mtuSize": { "type": "integer", "description": "MTU size for the switches or switch templates." } }, "required": [ "mtuSize" ] }, "description": "Override MTU size for individual switches or switch templates.\n An empty array will clear overrides." } } }, "example": { "defaultMtuSize": 9578, "overrides": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "switchProfiles": [ "1284392014819", "2983092129865" ], "mtuSize": 1500 } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the MTU configuration", "tags": [ "switch", "configure", "mtu" ] }, "put": { "description": "Update the MTU configuration", "operationId": "updateNetworkSwitchMtu", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultMtuSize": { "type": "integer", "description": "MTU size for the entire network. Default value is 9578." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serials. Applicable only for switch network." }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs. Applicable only for template network." }, "mtuSize": { "type": "integer", "description": "MTU size for the switches or switch templates." } }, "required": [ "mtuSize" ] }, "description": "Override MTU size for individual switches or switch templates. An empty array will clear overrides." } }, "example": { "defaultMtuSize": 9578, "overrides": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "switchProfiles": [ "1284392014819", "2983092129865" ], "mtuSize": 1500 } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultMtuSize": { "type": "integer", "description": "MTU size for the entire network. Default value is 9578." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serials. Applicable only for switch network." }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs. Applicable only for template network." }, "mtuSize": { "type": "integer", "description": "MTU size for the switches or switch templates." } }, "required": [ "mtuSize" ] }, "description": "Override MTU size for individual switches or switch templates.\n An empty array will clear overrides." } } }, "example": { "defaultMtuSize": 9578, "overrides": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "switchProfiles": [ "1284392014819", "2983092129865" ], "mtuSize": 1500 } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the MTU configuration", "tags": [ "switch", "configure", "mtu" ] } }, "/networks/{networkId}/switch/portSchedules": { "get": { "description": "List switch port schedules", "operationId": "getNetworkSwitchPortSchedules", "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": "Switch port schedule ID" }, "networkId": { "type": "string", "description": "Network ID" }, "name": { "type": "string", "description": "Switch port schedule name" }, "portSchedule": { "type": "object", "properties": { "monday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Monday schedule" }, "tuesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Tuesday schedule" }, "wednesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Wednesday schedule" }, "thursday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Thursday schedule" }, "friday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Friday schedule" }, "saturday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Saturday schedule" }, "sunday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Sunday schedule" } }, "description": "Port schedule" } } } }, "example": [ { "id": "1234", "networkId": "N_24329156", "name": "Weekdays schedule", "portSchedule": { "monday": { "active": true, "from": "9:00", "to": "17:00" }, "tuesday": { "active": true, "from": "9:00", "to": "17:00" }, "wednesday": { "active": true, "from": "9:00", "to": "17:00" }, "thursday": { "active": true, "from": "9:00", "to": "17:00" }, "friday": { "active": true, "from": "9:00", "to": "17:00" }, "saturday": { "active": false, "from": "0:00", "to": "24:00" }, "sunday": { "active": false, "from": "0:00", "to": "24:00" } } } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List switch port schedules", "tags": [ "switch", "configure", "portSchedules" ] }, "post": { "description": "Add a switch port schedule", "operationId": "createNetworkSwitchPortSchedule", "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 for your port schedule. Required" }, "portSchedule": { "type": "object", "properties": { "monday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Monday." }, "tuesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Tuesday." }, "wednesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Wednesday." }, "thursday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Thursday." }, "friday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Friday." }, "saturday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Saturday." }, "sunday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Sunday." } }, "description": " The schedule for switch port scheduling. Schedules are applied to days of the week.\n When it's empty, default schedule with all days of a week are configured.\n Any unspecified day in the schedule is added as a default schedule configuration of the day.\n" } }, "example": { "name": "Weekdays schedule", "portSchedule": { "monday": { "active": true, "from": "9:00", "to": "17:00" }, "tuesday": { "active": true, "from": "9:00", "to": "17:00" }, "wednesday": { "active": true, "from": "9:00", "to": "17:00" }, "thursday": { "active": true, "from": "9:00", "to": "17:00" }, "friday": { "active": true, "from": "9:00", "to": "17:00" }, "saturday": { "active": false, "from": "0:00", "to": "24:00" }, "sunday": { "active": false, "from": "0:00", "to": "24:00" } } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Switch port schedule ID" }, "networkId": { "type": "string", "description": "Network ID" }, "name": { "type": "string", "description": "Switch port schedule name" }, "portSchedule": { "type": "object", "properties": { "monday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Monday schedule" }, "tuesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Tuesday schedule" }, "wednesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Wednesday schedule" }, "thursday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Thursday schedule" }, "friday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Friday schedule" }, "saturday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Saturday schedule" }, "sunday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Sunday schedule" } }, "description": "Port schedule" } } }, "example": { "id": "1234", "networkId": "N_24329156", "name": "Weekdays schedule", "portSchedule": { "monday": { "active": true, "from": "9:00", "to": "17:00" }, "tuesday": { "active": true, "from": "9:00", "to": "17:00" }, "wednesday": { "active": true, "from": "9:00", "to": "17:00" }, "thursday": { "active": true, "from": "9:00", "to": "17:00" }, "friday": { "active": true, "from": "9:00", "to": "17:00" }, "saturday": { "active": false, "from": "0:00", "to": "24:00" }, "sunday": { "active": false, "from": "0:00", "to": "24:00" } } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Add a switch port schedule", "tags": [ "switch", "configure", "portSchedules" ] } }, "/networks/{networkId}/switch/portSchedules/{portScheduleId}": { "delete": { "description": "Delete a switch port schedule", "operationId": "deleteNetworkSwitchPortSchedule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "portScheduleId", "in": "path", "description": "Port schedule ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a switch port schedule", "tags": [ "switch", "configure", "portSchedules" ] }, "put": { "description": "Update a switch port schedule", "operationId": "updateNetworkSwitchPortSchedule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "portScheduleId", "in": "path", "description": "Port schedule ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name for your port schedule." }, "portSchedule": { "type": "object", "properties": { "monday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Monday." }, "tuesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Tuesday." }, "wednesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Wednesday." }, "thursday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Thursday." }, "friday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Friday." }, "saturday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Saturday." }, "sunday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active (true) or inactive (false) during the time specified between 'from' and 'to'. Defaults to true." }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be less than the time specified in 'to'. Defaults to '00:00'. Only 30 minute increments are allowed." }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'. Must be greater than the time specified in 'from'. Defaults to '24:00'. Only 30 minute increments are allowed." } }, "description": "The schedule object for Sunday." } }, "description": " The schedule for switch port scheduling. Schedules are applied to days of the week.\n When it's empty, default schedule with all days of a week are configured.\n Any unspecified day in the schedule is added as a default schedule configuration of the day.\n" } }, "example": { "name": "Weekdays schedule", "portSchedule": { "monday": { "active": true, "from": "9:00", "to": "17:00" }, "tuesday": { "active": true, "from": "9:00", "to": "17:00" }, "wednesday": { "active": true, "from": "9:00", "to": "17:00" }, "thursday": { "active": true, "from": "9:00", "to": "17:00" }, "friday": { "active": true, "from": "9:00", "to": "17:00" }, "saturday": { "active": false, "from": "0:00", "to": "24:00" }, "sunday": { "active": false, "from": "0:00", "to": "24:00" } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Switch port schedule ID" }, "networkId": { "type": "string", "description": "Network ID" }, "name": { "type": "string", "description": "Switch port schedule name" }, "portSchedule": { "type": "object", "properties": { "monday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Monday schedule" }, "tuesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Tuesday schedule" }, "wednesday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Wednesday schedule" }, "thursday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Thursday schedule" }, "friday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Friday schedule" }, "saturday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Saturday schedule" }, "sunday": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether the schedule is active or inactive" }, "from": { "type": "string", "description": "The time, from '00:00' to '24:00'" }, "to": { "type": "string", "description": "The time, from '00:00' to '24:00'" } }, "description": "Sunday schedule" } }, "description": "Port schedule" } } }, "example": { "id": "1234", "networkId": "N_24329156", "name": "Weekdays schedule", "portSchedule": { "monday": { "active": true, "from": "9:00", "to": "17:00" }, "tuesday": { "active": true, "from": "9:00", "to": "17:00" }, "wednesday": { "active": true, "from": "9:00", "to": "17:00" }, "thursday": { "active": true, "from": "9:00", "to": "17:00" }, "friday": { "active": true, "from": "9:00", "to": "17:00" }, "saturday": { "active": false, "from": "0:00", "to": "24:00" }, "sunday": { "active": false, "from": "0:00", "to": "24:00" } } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a switch port schedule", "tags": [ "switch", "configure", "portSchedules" ] } }, "/networks/{networkId}/switch/qosRules": { "get": { "description": "List quality of service rules", "operationId": "getNetworkSwitchQosRules", "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": "Qos Rule id" }, "vlan": { "type": "integer", "description": "The VLAN of the incoming packet. A null value will match any VLAN.", "nullable": true }, "protocol": { "type": "string", "description": "The protocol of the incoming packet. Can be one of \"ANY\", \"TCP\" or \"UDP\". Default value is \"ANY\"" }, "srcPort": { "type": "integer", "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dstPort": { "type": "integer", "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dscp": { "type": "integer", "description": "DSCP tag for the incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } } } }, "example": [ { "id": "1284392014819", "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List quality of service rules", "tags": [ "switch", "configure", "qosRules" ] }, "post": { "description": "Add a quality of service rule", "operationId": "createNetworkSwitchQosRule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "vlan": { "type": "integer", "nullable": true, "description": "The VLAN of the incoming packet. A null value will match any VLAN." }, "protocol": { "type": "string", "enum": [ "ANY", "TCP", "UDP" ], "description": "The protocol of the incoming packet. Default value is \"ANY\"" }, "srcPort": { "type": "integer", "nullable": true, "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP." }, "dstPort": { "type": "integer", "nullable": true, "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP." }, "dscp": { "type": "integer", "description": "DSCP tag for the incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } }, "example": { "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 }, "required": [ "vlan" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Qos Rule id" }, "vlan": { "type": "integer", "description": "The VLAN of the incoming packet. A null value will match any VLAN.", "nullable": true }, "protocol": { "type": "string", "description": "The protocol of the incoming packet. Can be one of \"ANY\", \"TCP\" or \"UDP\". Default value is \"ANY\"" }, "srcPort": { "type": "integer", "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dstPort": { "type": "integer", "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dscp": { "type": "integer", "description": "DSCP tag for the incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } } }, "example": { "id": "1284392014819", "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Add a quality of service rule", "tags": [ "switch", "configure", "qosRules" ] } }, "/networks/{networkId}/switch/qosRules/order": { "get": { "description": "Return the quality of service rule IDs by order in which they will be processed by the switch", "operationId": "getNetworkSwitchQosRulesOrder", "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": { "ruleIds": { "type": "array", "items": { "type": "string" }, "description": "Qos Rule ids" } } }, "example": { "ruleIds": [ "1284392014819", "2983092129865" ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the quality of service rule IDs by order in which they will be processed by the switch", "tags": [ "switch", "configure", "qosRules", "order" ] }, "put": { "description": "Update the order in which the rules should be processed by the switch", "operationId": "updateNetworkSwitchQosRulesOrder", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "ruleIds": { "type": "array", "items": { "type": "string" }, "description": "A list of quality of service rule IDs arranged in order in which they should be processed by the switch." } }, "example": { "ruleIds": [ "1284392014819", "2983092129865" ] }, "required": [ "ruleIds" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "ruleIds": { "type": "array", "items": { "type": "string" }, "description": "Qos Rule ids" } } }, "example": { "ruleIds": [ "1284392014819", "2983092129865" ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the order in which the rules should be processed by the switch", "tags": [ "switch", "configure", "qosRules", "order" ] } }, "/networks/{networkId}/switch/qosRules/{qosRuleId}": { "get": { "description": "Return a quality of service rule", "operationId": "getNetworkSwitchQosRule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "qosRuleId", "in": "path", "description": "Qos rule ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Qos Rule id" }, "vlan": { "type": "integer", "description": "The VLAN of the incoming packet. A null value will match any VLAN.", "nullable": true }, "protocol": { "type": "string", "description": "The protocol of the incoming packet. Can be one of \"ANY\", \"TCP\" or \"UDP\". Default value is \"ANY\"" }, "srcPort": { "type": "integer", "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dstPort": { "type": "integer", "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dscp": { "type": "integer", "description": "DSCP tag for the incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } } }, "example": { "id": "1284392014819", "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a quality of service rule", "tags": [ "switch", "configure", "qosRules" ] }, "delete": { "description": "Delete a quality of service rule", "operationId": "deleteNetworkSwitchQosRule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "qosRuleId", "in": "path", "description": "Qos rule ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a quality of service rule", "tags": [ "switch", "configure", "qosRules" ] }, "put": { "description": "Update a quality of service rule", "operationId": "updateNetworkSwitchQosRule", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "qosRuleId", "in": "path", "description": "Qos rule ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "vlan": { "type": "integer", "nullable": true, "description": "The VLAN of the incoming packet. A null value will match any VLAN." }, "protocol": { "type": "string", "enum": [ "ANY", "TCP", "UDP" ], "description": "The protocol of the incoming packet. Default value is \"ANY\"" }, "srcPort": { "type": "integer", "nullable": true, "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP." }, "dstPort": { "type": "integer", "nullable": true, "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP." }, "dscp": { "type": "integer", "description": "DSCP tag that should be assigned to incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } }, "example": { "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Qos Rule id" }, "vlan": { "type": "integer", "description": "The VLAN of the incoming packet. A null value will match any VLAN.", "nullable": true }, "protocol": { "type": "string", "description": "The protocol of the incoming packet. Can be one of \"ANY\", \"TCP\" or \"UDP\". Default value is \"ANY\"" }, "srcPort": { "type": "integer", "description": "The source port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "srcPortRange": { "type": "string", "description": "The source port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dstPort": { "type": "integer", "description": "The destination port of the incoming packet. Applicable only if protocol is TCP or UDP." }, "dstPortRange": { "type": "string", "description": "The destination port range of the incoming packet. Applicable only if protocol is set to TCP or UDP. Example: 70-80" }, "dscp": { "type": "integer", "description": "DSCP tag for the incoming packet. Set this to -1 to trust incoming DSCP. Default value is 0" } } }, "example": { "id": "1284392014819", "vlan": 100, "protocol": "TCP", "srcPort": 2000, "srcPortRange": "70-80", "dstPort": 3000, "dstPortRange": "3000-3100", "dscp": 0 } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a quality of service rule", "tags": [ "switch", "configure", "qosRules" ] } }, "/networks/{networkId}/switch/routing/multicast": { "get": { "description": "Return multicast settings for a network", "operationId": "getNetworkSwitchRoutingMulticast", "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": { "defaultSettings": { "type": "object", "properties": { "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping enabled for the entire network" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic enabled for the entire network" } }, "description": "Default multicast setting for entire network. IGMP snooping and Flood unknown\n multicast traffic settings are enabled by default." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch serials for non-template network" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch stack ids for non-template network" }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch templates ids for template network" }, "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping enabled for switches, switch stacks or switch templates" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic enabled for switches, switch stacks or switch templates" } } }, "description": "Array of paired switches/stacks/profiles and corresponding multicast settings.\n An empty array will clear the multicast settings." } } }, "example": { "defaultSettings": { "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true }, "overrides": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "switchProfiles": [ "1234", "4567" ], "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return multicast settings for a network", "tags": [ "switch", "configure", "routing", "multicast" ] }, "put": { "description": "Update multicast settings for a network", "operationId": "updateNetworkSwitchRoutingMulticast", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultSettings": { "type": "object", "properties": { "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping setting for entire network" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic setting for entire network" } }, "description": "Default multicast setting for entire network. IGMP snooping and Flood unknown multicast traffic settings are enabled by default." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch templates ids for template network" }, "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serials for non-template network" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "List of switch stack ids for non-template network" }, "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping setting for switches, switch stacks or switch templates" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic setting for switches, switch stacks or switch templates" } }, "required": [ "igmpSnoopingEnabled", "floodUnknownMulticastTrafficEnabled" ] }, "description": "Array of paired switches/stacks/profiles and corresponding multicast settings. An empty array will clear the multicast settings." } }, "example": { "defaultSettings": { "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true }, "overrides": [ { "switchProfiles": [ "1234", "4567" ], "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "defaultSettings": { "type": "object", "properties": { "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping enabled for the entire network" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic enabled for the entire network" } }, "description": "Default multicast setting for entire network. IGMP snooping and Flood unknown\n multicast traffic settings are enabled by default." }, "overrides": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch serials for non-template network" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch stack ids for non-template network" }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "(optional) List of switch templates ids for template network" }, "igmpSnoopingEnabled": { "type": "boolean", "description": "IGMP snooping enabled for switches, switch stacks or switch templates" }, "floodUnknownMulticastTrafficEnabled": { "type": "boolean", "description": "Flood unknown multicast traffic enabled for switches, switch stacks or switch templates" } } }, "description": "Array of paired switches/stacks/profiles and corresponding multicast settings.\n An empty array will clear the multicast settings." } } }, "example": { "defaultSettings": { "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true }, "overrides": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "switchProfiles": [ "1234", "4567" ], "igmpSnoopingEnabled": true, "floodUnknownMulticastTrafficEnabled": true } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update multicast settings for a network", "tags": [ "switch", "configure", "routing", "multicast" ] } }, "/networks/{networkId}/switch/routing/multicast/rendezvousPoints": { "get": { "description": "List multicast rendezvous points", "operationId": "getNetworkSwitchRoutingMulticastRendezvousPoints", "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": { "rendezvousPointId": { "type": "string", "description": "The id." }, "serial": { "type": "string", "description": "The serial." }, "interfaceName": { "type": "string", "description": "The name of the interface to use." }, "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface to use." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group." } } } }, "example": [ { "rendezvousPointId": "1234", "serial": "Q234-ABCD-5678", "interfaceName": "l3_interface_0", "interfaceIp": "192.168.1.2", "multicastGroup": "Any" } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List multicast rendezvous points", "tags": [ "switch", "configure", "routing", "multicast", "rendezvousPoints" ] }, "post": { "description": "Create a multicast rendezvous point", "operationId": "createNetworkSwitchRoutingMulticastRendezvousPoint", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface where the RP needs to be created." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF" } }, "description": "The VRF with PIM enabled L3 interface" } }, "example": { "interfaceIp": "192.168.1.2", "multicastGroup": "Any", "vrf": { "name": "Blue" } }, "required": [ "interfaceIp", "multicastGroup" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rendezvousPointId": { "type": "string", "description": "The id." }, "serial": { "type": "string", "description": "The serial." }, "interfaceName": { "type": "string", "description": "The name of the interface to use." }, "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface to use." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group." } } }, "example": { "rendezvousPointId": "1234", "serial": "Q234-ABCD-5678", "interfaceName": "l3_interface_0", "interfaceIp": "192.168.1.2", "multicastGroup": "Any" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a multicast rendezvous point", "tags": [ "switch", "configure", "routing", "multicast", "rendezvousPoints" ] } }, "/networks/{networkId}/switch/routing/multicast/rendezvousPoints/{rendezvousPointId}": { "get": { "description": "Return a multicast rendezvous point", "operationId": "getNetworkSwitchRoutingMulticastRendezvousPoint", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rendezvousPointId", "in": "path", "description": "Rendezvous point ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rendezvousPointId": { "type": "string", "description": "The id." }, "serial": { "type": "string", "description": "The serial." }, "interfaceName": { "type": "string", "description": "The name of the interface to use." }, "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface to use." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group." } } }, "example": { "rendezvousPointId": "1234", "serial": "Q234-ABCD-5678", "interfaceName": "l3_interface_0", "interfaceIp": "192.168.1.2", "multicastGroup": "Any" } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a multicast rendezvous point", "tags": [ "switch", "configure", "routing", "multicast", "rendezvousPoints" ] }, "delete": { "description": "Delete a multicast rendezvous point", "operationId": "deleteNetworkSwitchRoutingMulticastRendezvousPoint", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rendezvousPointId", "in": "path", "description": "Rendezvous point ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a multicast rendezvous point", "tags": [ "switch", "configure", "routing", "multicast", "rendezvousPoints" ] }, "put": { "description": "Update a multicast rendezvous point", "operationId": "updateNetworkSwitchRoutingMulticastRendezvousPoint", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "rendezvousPointId", "in": "path", "description": "Rendezvous point ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface where the RP needs to be created." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF" } }, "description": "The VRF with PIM enabled L3 interface" } }, "example": { "interfaceIp": "192.168.1.2", "multicastGroup": "Any", "vrf": { "name": "Blue" } }, "required": [ "interfaceIp", "multicastGroup" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rendezvousPointId": { "type": "string", "description": "The id." }, "serial": { "type": "string", "description": "The serial." }, "interfaceName": { "type": "string", "description": "The name of the interface to use." }, "interfaceIp": { "type": "string", "description": "The\u00a0IP address of the interface to use." }, "multicastGroup": { "type": "string", "description": "'Any', or the IP address of a multicast group." } } }, "example": { "rendezvousPointId": "1234", "serial": "Q234-ABCD-5678", "interfaceName": "l3_interface_0", "interfaceIp": "192.168.1.2", "multicastGroup": "Any" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a multicast rendezvous point", "tags": [ "switch", "configure", "routing", "multicast", "rendezvousPoints" ] } }, "/networks/{networkId}/switch/routing/ospf": { "get": { "description": "Return layer 3 OSPF routing configuration", "operationId": "getNetworkSwitchRoutingOspf", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "vrf", "in": "query", "description": "The VRF to return the OSPF routing configuration for. When not provided, the default VRF is used. Included on networks with IOS XE 17.18 or higher", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable OSPF routing. OSPF routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } } }, "description": "OSPF areas" }, "v3": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable V3 OSPF routing. OSPF V3 routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } } }, "description": "OSPF v3 areas" } }, "description": "OSPF v3 configuration" }, "md5AuthenticationEnabled": { "type": "boolean", "description": "Boolean value to enable or disable MD5 authentication. MD5 authentication is disabled by default." }, "md5AuthenticationKey": { "type": "object", "properties": { "id": { "type": "integer", "description": "MD5 authentication key index. Key index must be between 1 to 255" }, "passphrase": { "type": "string", "description": "MD5 authentication passphrase" } }, "description": "MD5 authentication credentials. This param is only relevant if md5AuthenticationEnabled is true" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "name of the VRF associated with the OSPF configuration" } }, "description": "VRF setting of this OSPF. Included on networks with IOS XE 17.18 or higher" } } }, "example": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "Backbone", "areaType": "normal" } ], "v3": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "V3 Backbone", "areaType": "normal" } ] }, "md5AuthenticationEnabled": true, "md5AuthenticationKey": { "id": 1234, "passphrase": "abc1234" }, "vrf": { "name": "Blue" } } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return layer 3 OSPF routing configuration", "tags": [ "switch", "configure", "routing", "ospf" ] }, "put": { "description": "Update layer 3 OSPF routing configuration", "operationId": "updateNetworkSwitchRoutingOspf", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "vrf", "in": "query", "description": "The VRF to return the OSPF routing configuration for. When not provided, the default VRF is used. Requires IOS XE 17.18 or higher", "schema": { "type": "string" } } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable OSPF routing. OSPF routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } }, "required": [ "areaId", "areaName", "areaType" ] }, "description": "OSPF areas" }, "v3": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable V3 OSPF routing. OSPF V3 routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } }, "required": [ "areaId", "areaName", "areaType" ] }, "description": "OSPF v3 areas" } }, "description": "OSPF v3 configuration" }, "md5AuthenticationEnabled": { "type": "boolean", "description": "Boolean value to enable or disable MD5 authentication. MD5 authentication is disabled by default." }, "md5AuthenticationKey": { "type": "object", "properties": { "id": { "type": "integer", "description": "MD5 authentication key index. Key index must be between 1 to 255" }, "passphrase": { "type": "string", "description": "MD5 authentication passphrase" } }, "description": "MD5 authentication credentials. This param is only relevant if md5AuthenticationEnabled is true" } }, "example": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "Backbone", "areaType": "normal" } ], "v3": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "V3 Backbone", "areaType": "normal" } ] }, "md5AuthenticationEnabled": true, "md5AuthenticationKey": { "id": 1234, "passphrase": "abc1234" }, "vrf": "Blue" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable OSPF routing. OSPF routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } } }, "description": "OSPF areas" }, "v3": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean value to enable or disable V3 OSPF routing. OSPF V3 routing is disabled by default." }, "helloTimerInSeconds": { "type": "integer", "description": "Time interval in seconds at which hello packet will be sent to OSPF neighbors to maintain connectivity. Value must be between 1 and 255. Default is 10 seconds." }, "deadTimerInSeconds": { "type": "integer", "description": "Time interval to determine when the peer will be declared inactive/dead. Value must be between 1 and 65535" }, "areas": { "type": "array", "items": { "type": "object", "properties": { "areaId": { "type": "string", "description": "OSPF area ID" }, "areaName": { "type": "string", "description": "Name of the OSPF area" }, "areaType": { "type": "string", "enum": [ "normal", "nssa", "stub" ], "description": "Area types in OSPF. Must be one of: [\"normal\", \"stub\", \"nssa\"]" } } }, "description": "OSPF v3 areas" } }, "description": "OSPF v3 configuration" }, "md5AuthenticationEnabled": { "type": "boolean", "description": "Boolean value to enable or disable MD5 authentication. MD5 authentication is disabled by default." }, "md5AuthenticationKey": { "type": "object", "properties": { "id": { "type": "integer", "description": "MD5 authentication key index. Key index must be between 1 to 255" }, "passphrase": { "type": "string", "description": "MD5 authentication passphrase" } }, "description": "MD5 authentication credentials. This param is only relevant if md5AuthenticationEnabled is true" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "name of the VRF associated with the OSPF configuration" } }, "description": "VRF setting of this OSPF. Included on networks with IOS XE 17.18 or higher" } } }, "example": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "Backbone", "areaType": "normal" } ], "v3": { "enabled": true, "helloTimerInSeconds": 10, "deadTimerInSeconds": 40, "areas": [ { "areaId": "1284392014819", "areaName": "V3 Backbone", "areaType": "normal" } ] }, "md5AuthenticationEnabled": true, "md5AuthenticationKey": { "id": 1234, "passphrase": "abc1234" }, "vrf": { "name": "Blue" } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update layer 3 OSPF routing configuration", "tags": [ "switch", "configure", "routing", "ospf" ] } }, "/networks/{networkId}/switch/settings": { "get": { "description": "Returns the switch network settings", "operationId": "getNetworkSwitchSettings", "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": { "vlan": { "type": "integer", "description": "Management VLAN" }, "useCombinedPower": { "type": "boolean", "description": "The use Combined Power as the default behavior of secondary power supplies on supported devices." }, "powerExceptions": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the switch" }, "powerType": { "type": "string", "enum": [ "combined", "redundant", "useNetworkSetting" ], "description": "Per switch exception (combined, redundant, useNetworkSetting)" } } }, "description": "Exceptions on a per switch basis to \"useCombinedPower\"" }, "uplinkClientSampling": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable client sampling on uplink" } }, "description": "Uplink client sampling" }, "macBlocklist": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable MAC blocklist for switches in the network" } }, "description": "MAC blocklist" }, "portChannelFallback": { "type": "boolean", "description": "Enable port channel fallback on Catalyst MS switches." }, "uplinkSelection": { "type": "object", "properties": { "failback": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable preferred uplink failback." } }, "description": "If a preferred uplink ever goes offline, we will periodically reattempt it." }, "candidates": { "type": "string", "description": "'all' lets devices try any potential interface for uplink. 'designated' enables configuration of candidates via the Routing & DHCP page." } }, "description": "Settings related to uplink selection on IOS-XE switches." } } }, "example": { "vlan": 100, "useCombinedPower": false, "powerExceptions": [ { "serial": "Q234-ABCD-0001", "powerType": "redundant" } ], "uplinkClientSampling": { "enabled": true }, "macBlocklist": { "enabled": true }, "portChannelFallback": true, "uplinkSelection": { "failback": { "enabled": true }, "candidates": "all" } } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Returns the switch network settings", "tags": [ "switch", "configure", "settings" ] }, "put": { "description": "Update switch network settings", "operationId": "updateNetworkSwitchSettings", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "vlan": { "type": "integer", "description": "Management VLAN" }, "useCombinedPower": { "type": "boolean", "description": "The use Combined Power as the default behavior of secondary power supplies on supported devices." }, "powerExceptions": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the switch" }, "powerType": { "type": "string", "enum": [ "combined", "redundant", "useNetworkSetting" ], "description": "Per switch exception (combined, redundant, useNetworkSetting)" } }, "required": [ "serial", "powerType" ] }, "description": "Exceptions on a per switch basis to \"useCombinedPower\"" }, "uplinkClientSampling": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable uplink client sampling" } }, "description": "Uplink client sampling" }, "macBlocklist": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable MAC blocklist" } }, "description": "MAC blocklist" }, "portChannelFallback": { "type": "boolean", "description": "Port channel fallback" }, "uplinkSelection": { "type": "object", "properties": { "failback": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable preferred uplink failback." } }, "required": [ "enabled" ], "description": "If a preferred uplink ever goes offline, we will periodically reattempt it." }, "candidates": { "type": "string", "enum": [ "all", "designated" ], "description": "'all' lets devices try any potential interface. 'designated' restricts to specified candidates (configured via the Routing & DHCP page)." } }, "description": "Settings related to uplink selection on IOS-XE switches." } }, "example": {} } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "vlan": { "type": "integer", "description": "Management VLAN" }, "useCombinedPower": { "type": "boolean", "description": "The use Combined Power as the default behavior of secondary power supplies on supported devices." }, "powerExceptions": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the switch" }, "powerType": { "type": "string", "enum": [ "combined", "redundant", "useNetworkSetting" ], "description": "Per switch exception (combined, redundant, useNetworkSetting)" } } }, "description": "Exceptions on a per switch basis to \"useCombinedPower\"" }, "uplinkClientSampling": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable client sampling on uplink" } }, "description": "Uplink client sampling" }, "macBlocklist": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable MAC blocklist for switches in the network" } }, "description": "MAC blocklist" }, "portChannelFallback": { "type": "boolean", "description": "Enable port channel fallback on Catalyst MS switches." }, "uplinkSelection": { "type": "object", "properties": { "failback": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable preferred uplink failback." } }, "description": "If a preferred uplink ever goes offline, we will periodically reattempt it." }, "candidates": { "type": "string", "description": "'all' lets devices try any potential interface for uplink. 'designated' enables configuration of candidates via the Routing & DHCP page." } }, "description": "Settings related to uplink selection on IOS-XE switches." } } }, "example": { "vlan": 100, "useCombinedPower": false, "powerExceptions": [ { "serial": "Q234-ABCD-0001", "powerType": "redundant" } ], "uplinkClientSampling": { "enabled": true }, "macBlocklist": { "enabled": true }, "portChannelFallback": true, "uplinkSelection": { "failback": { "enabled": true }, "candidates": "all" } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update switch network settings", "tags": [ "switch", "configure", "settings" ] } }, "/networks/{networkId}/switch/stacks": { "get": { "description": "List the switch stacks in a network", "operationId": "getNetworkSwitchStacks", "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": "ID of the switch stack" }, "name": { "type": "string", "description": "Name of the switch stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "Serial numbers of the switches in the switch stack. Minimum 2 and maximum 8 serials." }, "isMonitorOnly": { "type": "boolean", "description": "Whether the switch stack contains monitor-only switches." }, "virtualMac": { "type": "string", "description": "The virtual MAC address of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "role": { "type": "string", "enum": [ "active", "member", "standby" ], "description": "Role of the device in the stack. Possible values are 'active', 'member', and 'standby'." } } }, "description": "Members of the switch stack. Minimum 2 and maximum 8 members." } } } }, "example": [ { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "isMonitorOnly": false, "virtualMac": "00:18:0a:4f:21:19", "members": [ { "serial": "QBZY-XWVU-TSRQ", "name": "switch 1", "model": "MS350-24-HW", "mac": "00:18:0a:00:00:09", "role": "active" } ] } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List the switch stacks in a network", "tags": [ "switch", "configure", "stacks" ] }, "post": { "description": "Create a switch stack", "operationId": "createNetworkSwitchStack", "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 stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "An array of switch serials to be added into the new stack" } }, "example": { "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ] }, "required": [ "name", "serials" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the Switch stack" }, "name": { "type": "string", "description": "The name af the new stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "An array of switch serials added to the stack" }, "workflowId": { "type": "string", "description": "ID of the workflow" } } }, "example": { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "workflowId": "8473" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a switch stack", "tags": [ "switch", "configure", "stacks" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}": { "put": { "description": "Update a switch stack. At least one of 'name' or 'members' must be provided. If 'members' is provided, it replaces the entire stack membership.", "operationId": "updateNetworkSwitchStack", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of a switch to include in the stack" } }, "required": [ "serial" ] }, "description": "The complete list of switches that should be in the stack. Minimum 2 and maximum 8 members. Omitting this field leaves stack membership unchanged." } }, "example": { "name": "A cool stack", "members": [ { "serial": "QBZY-XWVU-TSRQ" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the switch stack" }, "name": { "type": "string", "description": "Name of the switch stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "Serial numbers of the switches in the switch stack. Minimum 2 and maximum 8 serials." }, "isMonitorOnly": { "type": "boolean", "description": "Whether the switch stack contains monitor-only switches." }, "virtualMac": { "type": "string", "description": "The virtual MAC address of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "role": { "type": "string", "enum": [ "active", "member", "standby" ], "description": "Role of the device in the stack. Possible values are 'active', 'member', and 'standby'." } } }, "description": "Members of the switch stack. Minimum 2 and maximum 8 members." } } }, "example": { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "isMonitorOnly": false, "virtualMac": "00:18:0a:4f:21:19", "members": [ { "serial": "QBZY-XWVU-TSRQ", "name": "switch 1", "model": "MS350-24-HW", "mac": "00:18:0a:00:00:09", "role": "active" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a switch stack", "tags": [ "switch", "configure", "stacks" ] }, "get": { "description": "Show a switch stack", "operationId": "getNetworkSwitchStack", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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 switch stack" }, "name": { "type": "string", "description": "Name of the switch stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "Serial numbers of the switches in the switch stack. Minimum 2 and maximum 8 serials." }, "isMonitorOnly": { "type": "boolean", "description": "Whether the switch stack contains monitor-only switches." }, "virtualMac": { "type": "string", "description": "The virtual MAC address of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "role": { "type": "string", "enum": [ "active", "member", "standby" ], "description": "Role of the device in the stack. Possible values are 'active', 'member', and 'standby'." } } }, "description": "Members of the switch stack. Minimum 2 and maximum 8 members." } } }, "example": { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "isMonitorOnly": false, "virtualMac": "00:18:0a:4f:21:19", "members": [ { "serial": "QBZY-XWVU-TSRQ", "name": "switch 1", "model": "MS350-24-HW", "mac": "00:18:0a:00:00:09", "role": "active" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Show a switch stack", "tags": [ "switch", "configure", "stacks" ] }, "delete": { "description": "Delete a stack", "operationId": "deleteNetworkSwitchStack", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a stack", "tags": [ "switch", "configure", "stacks" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/add": { "post": { "description": "Add a switch to a stack", "operationId": "addNetworkSwitchStack", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial of the switch to be added" } }, "example": { "serial": "QBZY-XWVU-TSRQ" }, "required": [ "serial" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the switch stack" }, "name": { "type": "string", "description": "Name of the switch stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "Serial numbers of the switches in the switch stack. Minimum 2 and maximum 8 serials." }, "isMonitorOnly": { "type": "boolean", "description": "Whether the switch stack contains monitor-only switches." }, "virtualMac": { "type": "string", "description": "The virtual MAC address of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "role": { "type": "string", "enum": [ "active", "member", "standby" ], "description": "Role of the device in the stack. Possible values are 'active', 'member', and 'standby'." } } }, "description": "Members of the switch stack. Minimum 2 and maximum 8 members." } } }, "example": { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "isMonitorOnly": false, "virtualMac": "00:18:0a:4f:21:19", "members": [ { "serial": "QBZY-XWVU-TSRQ", "name": "switch 1", "model": "MS350-24-HW", "mac": "00:18:0a:00:00:09", "role": "active" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Add a switch to a stack", "tags": [ "switch", "configure", "stacks" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/remove": { "post": { "description": "Remove a switch from a stack", "operationId": "removeNetworkSwitchStack", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial of the switch to be removed" } }, "example": { "serial": "QBZY-XWVU-TSRQ" }, "required": [ "serial" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the switch stack" }, "name": { "type": "string", "description": "Name of the switch stack" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "Serial numbers of the switches in the switch stack. Minimum 2 and maximum 8 serials." }, "isMonitorOnly": { "type": "boolean", "description": "Whether the switch stack contains monitor-only switches." }, "virtualMac": { "type": "string", "description": "The virtual MAC address of the switch stack" }, "members": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "role": { "type": "string", "enum": [ "active", "member", "standby" ], "description": "Role of the device in the stack. Possible values are 'active', 'member', and 'standby'." } } }, "description": "Members of the switch stack. Minimum 2 and maximum 8 members." } } }, "example": { "id": "8473", "name": "A cool stack", "serials": [ "QBZY-XWVU-TSRQ", "QBAB-CDEF-GHIJ" ], "isMonitorOnly": false, "virtualMac": "00:18:0a:4f:21:19", "members": [ { "serial": "QBZY-XWVU-TSRQ", "name": "switch 1", "model": "MS350-24-HW", "mac": "00:18:0a:00:00:09", "role": "active" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Remove a switch from a stack", "tags": [ "switch", "configure", "stacks" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/routing/interfaces": { "get": { "description": "List layer 3 interfaces for a switch stack", "operationId": "getNetworkSwitchStackRoutingInterfaces", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true }, { "name": "mode", "in": "query", "description": "Optional parameter to filter L3 interfaces by mode.", "schema": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ] } }, { "name": "protocol", "in": "query", "description": "Optional parameter to filter L3 interfaces by protocol.", "schema": { "type": "string", "enum": [ "ipv4", "ipv6" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } } }, "example": [ { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List layer 3 interfaces for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces" ] }, "post": { "description": "Create a layer 3 interface for a switch stack", "operationId": "createNetworkSwitchStackRoutingInterface", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "A friendly name or description for the interface or VLAN (max length 128 characters)." }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "L3 Interface mode, can be one of 'vlan', 'routed', 'loopback'. Default is 'vlan'. CS 17.18 or higher is required for 'routed' mode. " }, "subnet": { "type": "string", "nullable": true, "description": "The network that this L3 interface is on, in CIDR notation (ex. 10.1.1.0/24)." }, "switchPortId": { "type": "string", "nullable": true, "description": "Switch Port ID when in Routed mode (CS 17.18 or higher required)" }, "interfaceIp": { "type": "string", "nullable": true, "description": "The IP address that will be used for Layer 3 routing on this VLAN or subnet. This cannot be the same as the device management IP." }, "mtu": { "type": "integer", "nullable": true, "description": "The interface MTU. Applies to native switch layer 3 interfaces, including VLAN and routed modes." }, "multicastRouting": { "type": "string", "enum": [ "IGMP snooping querier", "disabled", "enabled" ], "description": "Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'." }, "vlanId": { "type": "integer", "nullable": true, "description": "The VLAN this L3 interface is on. VLAN must be between 1 and 4094." }, "defaultGateway": { "type": "string", "description": "The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface." }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "The OSPF area to which this interface should belong. Can be either 'disabled' or the identifier of an existing OSPF area. Defaults to 'disabled'." }, "cost": { "type": "integer", "description": "The path cost for this interface. Defaults to 1, but can be increased up to 65535 to give lower priority." }, "isPassiveEnabled": { "type": "boolean", "description": "When enabled, OSPF will not run on the interface, but the subnet will still be advertised." }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "The OSPF routing settings of the interface." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "The IPv6 assignment mode for the interface. Can be either 'eui-64' or 'static'.", "nullable": true }, "prefix": { "type": "string", "description": "The IPv6 prefix of the interface. Required if IPv6 object is included.", "nullable": true }, "address": { "type": "string", "description": "The IPv6 address of the interface. Required if assignmentMode is 'static'. Must not be included if assignmentMode is 'eui-64'.", "nullable": true }, "gateway": { "type": "string", "description": "The IPv6 default gateway of the interface. Required if prefix is defined and this is the first interface with IPv6 configured." } }, "description": "The IPv6 settings of the interface." }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to." } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "The loopback settings of the interface." } }, "example": { "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "switchPortId": "1", "interfaceIp": "192.168.1.2", "mtu": 1500, "multicastRouting": "disabled", "vlanId": 100, "defaultGateway": "192.168.1.1", "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "prefix": "2001:db8::/32", "address": "2001:db8::1", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a layer 3 interface for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/routing/interfaces/{interfaceId}": { "get": { "description": "Return a layer 3 interface from a switch stack", "operationId": "getNetworkSwitchStackRoutingInterface", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" }, "defaultGateway": "192.168.1.1" } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 interface from a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces" ] }, "put": { "description": "Update a layer 3 interface for a switch stack", "operationId": "updateNetworkSwitchStackRoutingInterface", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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": { "name": { "type": "string", "description": "A friendly name or description for the interface or VLAN (max length 128 characters)." }, "subnet": { "type": "string", "nullable": true, "description": "The network that this L3 interface is on, in CIDR notation (ex. 10.1.1.0/24)." }, "switchPortId": { "type": "string", "nullable": true, "description": "Switch Port ID when in Routed mode (CS 17.18 or higher required)" }, "interfaceIp": { "type": "string", "nullable": true, "description": "The IP address that will be used for Layer 3 routing on this VLAN or subnet. This cannot be the same as the device management IP." }, "mtu": { "type": "integer", "nullable": true, "description": "The interface MTU. Applies to native switch layer 3 interfaces, including VLAN and routed modes." }, "multicastRouting": { "type": "string", "enum": [ "IGMP snooping querier", "disabled", "enabled" ], "description": "Enable multicast support if, multicast routing between VLANs is required. Options are: 'disabled', 'enabled' or 'IGMP snooping querier'. Default is 'disabled'." }, "vlanId": { "type": "integer", "nullable": true, "description": "The VLAN this L3 interface is on. VLAN must be between 1 and 4094." }, "defaultGateway": { "type": "string", "description": "The next hop for any traffic that isn't going to a directly connected subnet or over a static route. This IP address must exist in a subnet with a L3 interface. Required if this is the first IPv4 interface." }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "The OSPF area to which this interface should belong. Can be either 'disabled' or the identifier of an existing OSPF area. Defaults to 'disabled'." }, "cost": { "type": "integer", "description": "The path cost for this interface. Defaults to 1, but can be increased up to 65535 to give lower priority." }, "isPassiveEnabled": { "type": "boolean", "description": "When enabled, OSPF will not run on the interface, but the subnet will still be advertised." }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "The OSPF routing settings of the interface." }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "The IPv6 assignment mode for the interface. Can be either 'eui-64' or 'static'.", "nullable": true }, "prefix": { "type": "string", "description": "The IPv6 prefix of the interface. Required if IPv6 object is included.", "nullable": true }, "address": { "type": "string", "description": "The IPv6 address of the interface. Required if assignmentMode is 'static'. Must not be included if assignmentMode is 'eui-64'.", "nullable": true }, "gateway": { "type": "string", "description": "The IPv6 default gateway of the interface. Required if prefix is defined and this is the first interface with IPv6 configured." } }, "description": "The IPv6 settings of the interface." }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to." } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "The loopback settings of the interface." } }, "example": { "name": "L3 interface", "subnet": "192.168.1.0/24", "switchPortId": "1", "interfaceIp": "192.168.1.2", "mtu": 1500, "multicastRouting": "disabled", "vlanId": 100, "defaultGateway": "192.168.1.1", "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "prefix": "2001:db8::/32", "address": "2001:db8::1", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "The ID" }, "name": { "type": "string", "description": "The name" }, "mode": { "type": "string", "enum": [ "loopback", "oob_management", "routed", "vlan" ], "description": "The mode" }, "subnet": { "type": "string", "description": "IPv4 subnet" }, "interfaceIp": { "type": "string", "description": "IPv4 address" }, "mtu": { "type": "integer", "description": "Interface MTU" }, "serial": { "type": "string", "description": "Device serial" }, "switchPortId": { "type": "string", "description": "Switch Port ID when in Routed mode" }, "multicastRouting": { "type": "string", "description": "Multicast routing status" }, "vlanId": { "type": "integer", "description": "VLAN ID" }, "uplinkV4": { "type": "boolean", "description": "When true, this interface is used as static IPv4 uplink" }, "uplinkV6": { "type": "boolean", "description": "When true, this interface is used as static IPv6 uplink" }, "ospfSettings": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv4 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPF network type" } }, "description": "IPv4 OSPF Settings" }, "ospfV3": { "type": "object", "properties": { "area": { "type": "string", "description": "Area ID" }, "cost": { "type": "integer", "description": "OSPF Cost" }, "isPassiveEnabled": { "type": "boolean", "description": "Disable sending Hello packets on this interface's IPv6 area" }, "networkType": { "type": "string", "enum": [ "broadcast", "point-to-point" ], "description": "OSPFv3 network type" } }, "description": "IPv6 OSPF Settings" }, "ipv6": { "type": "object", "properties": { "assignmentMode": { "type": "string", "description": "Assignment mode" }, "address": { "type": "string", "description": "IPv6 address" }, "prefix": { "type": "string", "description": "IPv6 subnet" }, "gateway": { "type": "string", "description": "IPv6 gateway" } }, "description": "IPv6 addressing" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this interface belongs to" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "loopback": { "type": "object", "description": "Loopback Interface settings" } } }, "example": { "interfaceId": "1234", "name": "L3 interface", "mode": "vlan", "subnet": "192.168.1.0/24", "interfaceIp": "192.168.1.2", "mtu": 1500, "serial": "Q234-ABCD-5678", "switchPortId": "1", "multicastRouting": "disabled", "vlanId": 100, "uplinkV4": false, "uplinkV6": false, "ospfSettings": { "area": "0", "cost": 1, "isPassiveEnabled": true, "networkType": "broadcast" }, "ospfV3": { "area": "1", "cost": 2, "isPassiveEnabled": true, "networkType": "broadcast" }, "ipv6": { "assignmentMode": "static", "address": "2001:db8::1", "prefix": "2001:db8::/32", "gateway": "2001:db8::2" }, "vrf": { "name": "Blue" } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 interface for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces" ] }, "delete": { "description": "Delete a layer 3 interface from a switch stack", "operationId": "deleteNetworkSwitchStackRoutingInterface", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Delete a layer 3 interface from a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/routing/interfaces/{interfaceId}/dhcp": { "get": { "description": "Return a layer 3 interface DHCP configuration for a switch stack", "operationId": "getNetworkSwitchStackRoutingInterfaceDhcp", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true }, { "name": "interfaceId", "in": "path", "description": "Interface ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "dhcpMode": { "type": "string", "description": "The DHCP mode options for the switch stack interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface" }, "dhcpLeaseTime": { "type": "string", "description": "The DHCP lease time config for the dhcp server running on the switch stack interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "description": "The DHCP name server option for the dhcp server running on the switch stack interface ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is 'custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch stack interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch stack interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server file name for the DHCP server running on the switch stack interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "description": "The type of the DHCP option which should be one of ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } } }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the switch stack interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" } } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 interface DHCP configuration for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces", "dhcp" ] }, "put": { "description": "Update a layer 3 interface DHCP configuration for a switch stack", "operationId": "updateNetworkSwitchStackRoutingInterfaceDhcp", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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": { "dhcpMode": { "type": "string", "enum": [ "dhcpDisabled", "dhcpRelay", "dhcpServer" ], "description": "The DHCP mode options for the switch stack interface\n ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface" }, "dhcpLeaseTime": { "type": "string", "enum": [ "1 day", "1 hour", "1 week", "12 hours", "30 minutes", "4 hours" ], "description": "The DHCP lease time config for the dhcp server running on switch stack interface\n ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "enum": [ "custom", "googlePublicDns", "openDns" ], "description": "The DHCP name server option for the dhcp server running on the switch stack interface\n ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is '\n custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch\n stack interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch stack interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server file name for the DHCP server running on the switch stack interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "enum": [ "hex", "integer", "ip", "text" ], "description": "The type of the DHCP option which should be one of\n ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } }, "required": [ "code", "type", "value" ] }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the\n switch stack interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } }, "required": [ "start", "end" ] }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } }, "required": [ "name", "mac", "ip" ] }, "description": "Array of DHCP fixed IP assignments for the DHCP server running on the switch stack interface" } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "dhcpMode": { "type": "string", "description": "The DHCP mode options for the switch stack interface ('dhcpDisabled', 'dhcpRelay' or 'dhcpServer')" }, "dhcpRelayServerIps": { "type": "array", "items": { "type": "string" }, "description": "The DHCP relay server IPs to which DHCP packets would get relayed for the switch stack interface" }, "dhcpLeaseTime": { "type": "string", "description": "The DHCP lease time config for the dhcp server running on the switch stack interface ('30 minutes', '1 hour', '4 hours', '12 hours', '1 day' or '1 week')" }, "dnsNameserversOption": { "type": "string", "description": "The DHCP name server option for the dhcp server running on the switch stack interface ('googlePublicDns', 'openDns' or 'custom')" }, "dnsCustomNameservers": { "type": "array", "items": { "type": "string" }, "description": "The DHCP name server IPs when DHCP name server option is 'custom'" }, "bootOptionsEnabled": { "type": "boolean", "description": "Enable DHCP boot options to provide PXE boot options configs for the dhcp server running on the switch stack interface" }, "bootNextServer": { "type": "string", "description": "The PXE boot server IP for the DHCP server running on the switch stack interface" }, "bootFileName": { "type": "string", "description": "The PXE boot server file name for the DHCP server running on the switch stack interface" }, "dhcpOptions": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "description": "The code for DHCP option which should be from 2 to 254" }, "type": { "type": "string", "description": "The type of the DHCP option which should be one of ('text', 'ip', 'integer' or 'hex')" }, "value": { "type": "string", "description": "The value of the DHCP option" } } }, "description": "Array of DHCP options consisting of code, type and value for the DHCP server running on the switch stack interface" }, "reservedIpRanges": { "type": "array", "items": { "type": "object", "properties": { "start": { "type": "string", "description": "The starting IP address of the reserved IP range" }, "end": { "type": "string", "description": "The ending IP address of the reserved IP range" }, "comment": { "type": "string", "description": "The comment for the reserved IP range" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" }, "fixedIpAssignments": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the client which has fixed IP address" }, "mac": { "type": "string", "description": "The MAC address of the client which has fixed IP address" }, "ip": { "type": "string", "description": "The IP address of the client which has fixed IP address assigned to it" } } }, "description": "Array of DHCP reserved IP assignments for the DHCP server running on the switch stack interface" } } }, "example": { "dhcpMode": "dhcpServer", "dhcpRelayServerIps": [ "1.2.3.4" ], "dhcpLeaseTime": "1 day", "dnsNameserversOption": "custom", "dnsCustomNameservers": [ "8.8.8.8, 8.8.4.4" ], "bootOptionsEnabled": true, "bootNextServer": "1.2.3.4", "bootFileName": "home_boot_file", "dhcpOptions": [ { "code": "5", "type": "text", "value": "five" } ], "reservedIpRanges": [ { "start": "192.168.1.1", "end": "192.168.1.10", "comment": "A reserved IP range" } ], "fixedIpAssignments": [ { "name": "Cisco Meraki valued client", "mac": "22:33:44:55:66:77", "ip": "192.168.1.12" } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 interface DHCP configuration for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "interfaces", "dhcp" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/routing/staticRoutes": { "get": { "description": "List layer 3 static routes for a switch stack", "operationId": "getNetworkSwitchStackRoutingStaticRoutes", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] } }, "example": [ { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List layer 3 static routes for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "staticRoutes" ] }, "post": { "description": "Create a layer 3 static route for a switch stack", "operationId": "createNetworkSwitchStackRoutingStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name or description for layer 3 static route" }, "subnet": { "type": "string", "description": "The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "IP address of the next hop device to which the device sends its traffic for the subnet" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static route via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static route over OSPF routes" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false, "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false } }, "required": [ "subnet", "nextHopIp" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Create a layer 3 static route for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "staticRoutes" ] } }, "/networks/{networkId}/switch/stacks/{switchStackId}/routing/staticRoutes/{staticRouteId}": { "get": { "description": "Return a layer 3 static route for a switch stack", "operationId": "getNetworkSwitchStackRoutingStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a layer 3 static route for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "staticRoutes" ] }, "put": { "description": "Update a layer 3 static route for a switch stack", "operationId": "updateNetworkSwitchStackRoutingStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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 or description for layer 3 static route" }, "subnet": { "type": "string", "description": "The subnet which is routed via this static route and should be specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "IP address of the next hop device to which the device sends its traffic for the subnet" }, "managementNextHop": { "type": "string", "nullable": true, "description": "Optional fallback IP address for management traffic" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static route via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static route over OSPF routes" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "The VRF settings of the interface. Requires IOS XE 17.18 or higher" } }, "example": { "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false, "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "staticRouteId": { "type": "string", "description": "The identifier of a layer 3 static route" }, "name": { "type": "string", "description": "The name or description of the layer 3 static route" }, "subnet": { "type": "string", "description": "The IP address of the subnetwork specified in CIDR notation (ex. 1.2.3.0/24)" }, "nextHopIp": { "type": "string", "description": "The IP address of the router to which traffic for this destination network should be sent" }, "managementNextHop": { "type": "string", "description": "Optional fallback IP address for management traffic" }, "vrf": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the VRF this static route belongs to" }, "leakRouteToDefaultVrf": { "type": "boolean", "description": "Whether or not next-hop IP is reachable via default VRF" } }, "description": "VRF settings. Included on networks with IOS XE 17.18 or higher" }, "advertiseViaOspfEnabled": { "type": "boolean", "description": "Option to advertise static routes via OSPF" }, "preferOverOspfRoutesEnabled": { "type": "boolean", "description": "Option to prefer static routes over OSPF routes" } }, "required": [ "staticRouteId", "subnet", "nextHopIp" ] }, "example": { "staticRouteId": "1234", "name": "My route", "subnet": "192.168.1.0/24", "nextHopIp": "1.2.3.4", "managementNextHop": "1.2.3.5", "vrf": { "name": "Blue", "leakRouteToDefaultVrf": false }, "advertiseViaOspfEnabled": false, "preferOverOspfRoutesEnabled": false } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a layer 3 static route for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "staticRoutes" ] }, "delete": { "description": "Delete a layer 3 static route for a switch stack", "operationId": "deleteNetworkSwitchStackRoutingStaticRoute", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true }, { "name": "switchStackId", "in": "path", "description": "Switch stack 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": [ "switch:config:write" ] } ], "summary": "Delete a layer 3 static route for a switch stack", "tags": [ "switch", "configure", "stacks", "routing", "staticRoutes" ] } }, "/networks/{networkId}/switch/stormControl": { "get": { "description": "Return the storm control configuration for a switch network", "operationId": "getNetworkSwitchStormControl", "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": { "broadcastThreshold": { "type": "integer", "description": "Broadcast threshold." }, "multicastThreshold": { "type": "integer", "description": "Multicast threshold." }, "unknownUnicastThreshold": { "type": "integer", "description": "Unknown Unicast threshold." }, "treatTheseTrafficTypesAsOneThreshold": { "type": "array", "items": { "type": "string" }, "description": "Grouped traffic types" } } }, "example": { "broadcastThreshold": 30, "multicastThreshold": 30, "unknownUnicastThreshold": 30, "treatTheseTrafficTypesAsOneThreshold": [ "broadcast", "multicast" ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return the storm control configuration for a switch network", "tags": [ "switch", "configure", "stormControl" ] }, "put": { "description": "Update the storm control configuration for a switch network", "operationId": "updateNetworkSwitchStormControl", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "broadcastThreshold": { "type": "integer", "description": "Percentage (1 to 99) of total available port bandwidth for broadcast traffic type. Default value 100 percent rate is to clear the configuration." }, "multicastThreshold": { "type": "integer", "description": "Percentage (1 to 99) of total available port bandwidth for multicast traffic type. Default value 100 percent rate is to clear the configuration." }, "unknownUnicastThreshold": { "type": "integer", "description": "Percentage (1 to 99) of total available port bandwidth for unknown unicast (dlf-destination lookup failure) traffic type. Default value 100 percent rate is to clear the configuration." }, "treatTheseTrafficTypesAsOneThreshold": { "type": "array", "items": { "type": "string" }, "description": "Grouped traffic types" } }, "example": { "broadcastThreshold": 30, "multicastThreshold": 30, "unknownUnicastThreshold": 30, "treatTheseTrafficTypesAsOneThreshold": [ "broadcast", "multicast" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "broadcastThreshold": { "type": "integer", "description": "Broadcast threshold." }, "multicastThreshold": { "type": "integer", "description": "Multicast threshold." }, "unknownUnicastThreshold": { "type": "integer", "description": "Unknown Unicast threshold." }, "treatTheseTrafficTypesAsOneThreshold": { "type": "array", "items": { "type": "string" }, "description": "Grouped traffic types" } } }, "example": { "broadcastThreshold": 30, "multicastThreshold": 30, "unknownUnicastThreshold": 30, "treatTheseTrafficTypesAsOneThreshold": [ "broadcast", "multicast" ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update the storm control configuration for a switch network", "tags": [ "switch", "configure", "stormControl" ] } }, "/networks/{networkId}/switch/stp": { "get": { "description": "Returns STP settings", "operationId": "getNetworkSwitchStp", "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": { "rstpEnabled": { "type": "boolean", "description": "The spanning tree protocol status in network" }, "stpBridgePriority": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serial numbers" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "List of stack IDs" }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs" }, "stpPriority": { "type": "integer", "description": "STP priority for switch, stacks, or switch templates" } } }, "description": "STP bridge priority for switches/stacks or switch templates. An empty array will clear the STP bridge priority settings." } } }, "example": { "rstpEnabled": true, "stpBridgePriority": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "switchProfiles": [ "1098", "1099", "1100" ], "stpPriority": 4096 } ] } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Returns STP settings", "tags": [ "switch", "configure", "stp" ] }, "put": { "description": "Updates STP settings", "operationId": "updateNetworkSwitchStp", "parameters": [ { "name": "networkId", "in": "path", "description": "Network ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rstpEnabled": { "type": "boolean", "description": "The spanning tree protocol status in network" }, "stpBridgePriority": { "type": "array", "items": { "type": "object", "properties": { "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs" }, "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serial numbers" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "List of stack IDs" }, "stpPriority": { "type": "integer", "description": "STP priority for switch, stacks, or switch templates" } }, "required": [ "stpPriority" ] }, "description": "STP bridge priority for switches/stacks or switch templates. An empty array will clear the STP bridge priority settings." } }, "example": { "rstpEnabled": true, "stpBridgePriority": [ { "switchProfiles": [ "1098", "1099", "1100" ], "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "stpPriority": 4096 } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rstpEnabled": { "type": "boolean", "description": "The spanning tree protocol status in network" }, "stpBridgePriority": { "type": "array", "items": { "type": "object", "properties": { "switches": { "type": "array", "items": { "type": "string" }, "description": "List of switch serial numbers" }, "stacks": { "type": "array", "items": { "type": "string" }, "description": "List of stack IDs" }, "switchProfiles": { "type": "array", "items": { "type": "string" }, "description": "List of switch template IDs" }, "stpPriority": { "type": "integer", "description": "STP priority for switch, stacks, or switch templates" } } }, "description": "STP bridge priority for switches/stacks or switch templates. An empty array will clear the STP bridge priority settings." } } }, "example": { "rstpEnabled": true, "stpBridgePriority": [ { "switches": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "stacks": [ "789102", "123456", "129102" ], "switchProfiles": [ "1098", "1099", "1100" ], "stpPriority": 4096 } ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Updates STP settings", "tags": [ "switch", "configure", "stp" ] } }, "/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles": { "get": { "description": "List the switch templates for your switch template configuration", "operationId": "getOrganizationConfigTemplateSwitchProfiles", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "switchProfileId": { "type": "string", "description": "Switch template id" }, "name": { "type": "string", "description": "Switch template name" }, "model": { "type": "string", "description": "Switch model" } } } }, "example": [ { "switchProfileId": "1234", "name": "A Simple Switch Template", "model": "MS450-24" } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "List the switch templates for your switch template configuration", "tags": [ "switch", "configure", "configTemplates", "profiles" ] } }, "/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles/{profileId}/ports": { "get": { "description": "Return all the ports of a switch template", "operationId": "getOrganizationConfigTemplateSwitchProfilePorts", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The identifier of the switch template port." }, "name": { "type": "string", "description": "The name of the switch template port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch template port." }, "enabled": { "type": "boolean", "description": "The status of the switch template port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch template port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch template port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch template port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch template port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch template port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch template port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch template port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch template port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch template port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch template port." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch template port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } } }, "example": [ { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } ] } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return all the ports of a switch template", "tags": [ "switch", "configure", "configTemplates", "profiles", "ports" ] } }, "/organizations/{organizationId}/configTemplates/{configTemplateId}/switch/profiles/{profileId}/ports/{portId}": { "get": { "description": "Return a switch template port", "operationId": "getOrganizationConfigTemplateSwitchProfilePort", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile 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": { "portId": { "type": "string", "description": "The identifier of the switch template port." }, "name": { "type": "string", "description": "The name of the switch template port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch template port." }, "enabled": { "type": "boolean", "description": "The status of the switch template port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch template port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch template port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch template port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch template port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch template port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch template port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch template port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch template port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch template port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch template port." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch template port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } }, "example": { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } } }, "security": [ { "oauth2": [ "switch:config:read" ] } ], "summary": "Return a switch template port", "tags": [ "switch", "configure", "configTemplates", "profiles", "ports" ] }, "put": { "description": "Update a switch template port", "operationId": "updateOrganizationConfigTemplateSwitchProfilePort", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile 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": { "name": { "type": "string", "nullable": true, "description": "The name of the switch template port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch template port." }, "enabled": { "type": "boolean", "description": "The status of the switch template port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch template port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "nullable": true, "description": "The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "nullable": true, "description": "The voice VLAN of the switch template port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch template port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch template port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch template port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch template port." }, "portScheduleId": { "type": "string", "nullable": true, "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch template port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch template port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "nullable": true, "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch template port." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration.", "nullable": true }, "iname": { "type": "string", "description": "When enabled, the IName of the profile.", "nullable": true } }, "description": "Profile attributes" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch template port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } }, "example": { "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "portScheduleId": "1234", "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "portId": { "type": "string", "description": "The identifier of the switch template port." }, "name": { "type": "string", "description": "The name of the switch template port." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch template port." }, "enabled": { "type": "boolean", "description": "The status of the switch template port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch template port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch template port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch template port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports." }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch template port. Only applicable to access ports." }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch template port. Only applicable to trunk ports." }, "isolationEnabled": { "type": "boolean", "description": "The isolation status of the switch template port." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "stpPortFastTrunk": { "type": "boolean", "description": "The state of STP PortFast Trunk on the switch template port." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch template port." }, "linkNegotiationCapabilities": { "type": "array", "items": { "type": "string" }, "description": "Available link speeds for the switch template port." }, "portScheduleId": { "type": "string", "description": "The ID of the port schedule. A value of null will clear the port schedule." }, "schedule": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the port schedule." }, "name": { "type": "string", "description": "The name of the port schedule." } }, "description": "The port schedule data." }, "udld": { "type": "string", "enum": [ "Alert only", "Enforce" ], "description": "The action to take when Unidirectional Link is detected (Alert only, Enforce). Default configuration is Alert only." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch template port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "accessPolicyNumber": { "type": "integer", "description": "The number of a custom access policy to configure on the switch template port. Only applicable when 'accessPolicyType' is 'Custom access policy'." }, "macAllowList": { "type": "array", "items": { "type": "string" }, "description": "Only devices with MAC addresses specified in this list will have access to this port. Up to 20 MAC addresses can be defined. Only applicable when 'accessPolicyType' is 'MAC allow list'." }, "macWhitelistLimit": { "type": "integer", "description": "The maximum number of MAC addresses for regular MAC allow list. Only applicable when 'accessPolicyType' is 'MAC allow list'.\n Note: Config only supported on verions greater than ms18 only for classic switches." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stormControlEnabled": { "type": "boolean", "description": "The storm control status of the switch template port." }, "flexibleStackingEnabled": { "type": "boolean", "description": "For supported switches (e.g. MS420/MS425), whether or not the port has flexible stacking enabled." }, "daiTrusted": { "type": "boolean", "description": "If true, ARP packets for this port will be considered trusted, and Dynamic ARP Inspection will allow the traffic." }, "profile": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When enabled, override this port's configuration with a port profile." }, "id": { "type": "string", "description": "When enabled, the ID of the port profile used to override the port's configuration." }, "iname": { "type": "string", "description": "When enabled, the IName of the profile." } }, "description": "Profile attributes" }, "module": { "type": "object", "properties": { "model": { "type": "string", "description": "The model of the expansion module." }, "serial": { "type": "string", "description": "The serial of the module." }, "slot": { "type": "integer", "description": "The slot number of the module." } }, "description": "Expansion module" }, "mirror": { "type": "object", "properties": { "mode": { "type": "string", "enum": [ "Destination port", "Not mirroring traffic", "Source port" ], "description": "The port mirror mode. Can be one of ('Destination port', 'Source port' or 'Not mirroring traffic')." } }, "description": "Port mirror" }, "dot3az": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "The Energy Efficient Ethernet status of the switch template port." } }, "description": "dot3az settings for the port" }, "highSpeed": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "For C9500-32QC, whether or not the port is enabled for high speed." } }, "description": "High speed port enablement settings for C9500-32QC" } } }, "example": { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "isolationEnabled": false, "rstpEnabled": true, "stpGuard": "disabled", "stpPortFastTrunk": false, "linkNegotiation": "Auto negotiate", "linkNegotiationCapabilities": [ "Auto negotiate", "1 Gigabit full duplex (auto)" ], "portScheduleId": "1234", "schedule": { "id": "1234", "name": "Port Schedule" }, "udld": "Alert only", "accessPolicyType": "Sticky MAC allow list", "accessPolicyNumber": 2, "macAllowList": [ "34:56:fe:ce:8e:a0", "34:56:fe:ce:8e:a1" ], "macWhitelistLimit": 10, "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5, "stormControlEnabled": true, "flexibleStackingEnabled": true, "daiTrusted": false, "profile": { "enabled": false, "id": "1284392014819", "iname": "iname" }, "module": { "model": "MA-MOD-4X10G", "serial": "3_MA-MOD-4X10G", "slot": 1 }, "mirror": { "mode": "Not mirroring traffic" }, "dot3az": { "enabled": false }, "highSpeed": { "enabled": false } } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Update a switch template port", "tags": [ "switch", "configure", "configTemplates", "profiles", "ports" ] } }, "/organizations/{organizationId}/summary/switch/power/history": { "get": { "description": "Returns the total PoE power draw for all switch ports in the organization over the requested timespan (by default the last 24 hours). The returned array is a newest-first list of intervals. The time between intervals depends on the requested timespan with 20 minute intervals used for timespans up to 1 day, 4 hour intervals used for timespans up to 2 weeks, and 1 day intervals for timespans larger than 2 weeks.", "operationId": "getOrganizationSummarySwitchPowerHistory", "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.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 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 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Timestamp of the start of the interval." }, "draw": { "type": "number", "format": "float", "description": "The PoE power draw in watts for all switch ports in the organization for the given interval." } } } }, "example": [ { "ts": "2021-06-20T01:00:00.000Z", "draw": 5.4321 } ] } } } }, "security": [ { "oauth2": [ "switch:telemetry:read" ] } ], "summary": "Returns the total PoE power draw for all switch ports in the organization over the requested timespan (by default the last 24 hours)", "tags": [ "switch", "monitor", "summary", "power", "history" ] } }, "/organizations/{organizationId}/switch/devices/clone": { "post": { "description": "Clone port-level and some switch-level configuration settings from a source switch to one or more target switches. Cloned settings include: Aggregation Groups, Power Settings, Multicast Settings, MTU Configuration, STP Bridge priority, Port Mirroring", "operationId": "cloneOrganizationSwitchDevices", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceSerial": { "type": "string", "description": "Serial number of the source switch (must be on a network not bound to a template)" }, "targetSerials": { "type": "array", "items": { "type": "string" }, "description": "Array of serial numbers of one or more target switches (must be on a network not bound to a template)" } }, "example": { "sourceSerial": "Q234-ABCD-5678", "targetSerials": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ] }, "required": [ "sourceSerial", "targetSerials" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceSerial": { "type": "string", "description": "Serial number of the source switch (must be on a network not bound to a template)" }, "targetSerials": { "type": "array", "items": { "type": "string" }, "description": "Array of serial numbers of one or more target switches (must be on a network not bound to a template)" } } }, "example": { "sourceSerial": "Q234-ABCD-5678", "targetSerials": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ] } } } } }, "security": [ { "oauth2": [ "switch:config:write" ] } ], "summary": "Clone port-level and some switch-level configuration settings from a source switch to one or more target switches", "tags": [ "switch", "configure", "devices" ] } }, "/organizations/{organizationId}/switch/ports/bySwitch": { "get": { "description": "List the switchports in an organization by switch", "operationId": "getOrganizationSwitchPortsBySwitch", "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 - 50. 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": "configurationUpdatedAfter", "in": "query", "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.", "schema": { "type": "string", "format": "date-time" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Optional parameter to filter items to switches with names that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter items to switches in one of the provided networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portProfileIds", "in": "query", "description": "Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided serials.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the switch." }, "serial": { "type": "string", "description": "The serial number of the switch." }, "mac": { "type": "string", "description": "The MAC address of the switch." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the network." }, "id": { "type": "string", "description": "The ID of the network." } }, "required": [ "name", "id" ], "description": "Identifying information of the switch's network." }, "model": { "type": "string", "description": "The model of the switch." }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The identifier of the switch port." }, "name": { "type": "string", "description": "The name of the switch port.", "nullable": true }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The list of tags of the switch port." }, "enabled": { "type": "boolean", "description": "The status of the switch port." }, "poeEnabled": { "type": "boolean", "description": "The PoE status of the switch port." }, "type": { "type": "string", "enum": [ "access", "dad", "routed", "stack", "svl", "trunk" ], "description": "The type of the switch port ('access', 'trunk', 'stack', 'routed', 'svl' or 'dad')." }, "vlan": { "type": "integer", "description": "The VLAN of the switch port. For a trunk port, this is the native VLAN. A null value will clear the value set for trunk ports.", "nullable": true }, "voiceVlan": { "type": "integer", "description": "The voice VLAN of the switch port. Only applicable to access ports.", "nullable": true }, "allowedVlans": { "type": "string", "description": "The VLANs allowed on the switch port. Only applicable to trunk ports." }, "rstpEnabled": { "type": "boolean", "description": "The rapid spanning tree protocol status." }, "stpGuard": { "type": "string", "enum": [ "bpdu guard", "disabled", "loop guard", "root guard" ], "description": "The state of the STP guard ('disabled', 'root guard', 'bpdu guard' or 'loop guard')." }, "linkNegotiation": { "type": "string", "description": "The link speed for the switch port." }, "accessPolicyType": { "type": "string", "enum": [ "Custom access policy", "MAC allow list", "Open", "Sticky MAC allow list" ], "description": "The type of the access policy of the switch port. Only applicable to access ports. Can be one of 'Open', 'Custom access policy', 'MAC allow list' or 'Sticky MAC allow list'." }, "stickyMacAllowList": { "type": "array", "items": { "type": "string" }, "description": "The initial list of MAC addresses for sticky Mac allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." }, "stickyMacAllowListLimit": { "type": "integer", "description": "The maximum number of MAC addresses for sticky MAC allow list. Only applicable when 'accessPolicyType' is 'Sticky MAC allow list'." } }, "required": [ "portId", "name", "tags", "enabled", "poeEnabled", "type", "vlan", "voiceVlan", "allowedVlans", "rstpEnabled", "stpGuard", "linkNegotiation", "accessPolicyType" ] }, "description": "Ports belonging to the switch" } }, "required": [ "name", "serial", "mac", "network", "model", "ports" ] } }, "example": [ { "name": "Example Switch", "serial": "Q555-5555-5555", "mac": "01:23:45:67:ab:cd", "network": { "name": "Example Network", "id": "L_12345" }, "model": "MS120-8", "ports": [ { "portId": "1", "name": "My switch port", "tags": [ "tag1", "tag2" ], "enabled": true, "poeEnabled": true, "type": "access", "vlan": 10, "voiceVlan": 20, "allowedVlans": "1,3,5-10", "rstpEnabled": true, "stpGuard": "disabled", "linkNegotiation": "Auto negotiate", "accessPolicyType": "Sticky MAC allow list", "stickyMacAllowList": [ "34:56:fe:ce:8e:b0", "34:56:fe:ce:8e:b1" ], "stickyMacAllowListLimit": 5 } ] } ] } }, "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": [ "switch:config:read" ] } ], "summary": "List the switchports in an organization by switch", "tags": [ "switch", "configure", "ports", "bySwitch" ] } }, "/organizations/{organizationId}/switch/ports/clients/overview/byDevice": { "get": { "description": "List the number of clients for all switchports with at least one online client in an organization.", "operationId": "getOrganizationSwitchPortsClientsOverviewByDevice", "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 31 days from today.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. 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 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 20. Default is 20.", "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": "configurationUpdatedAfter", "in": "query", "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.", "schema": { "type": "string", "format": "date-time" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Optional parameter to filter items to switches with names that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter items to switches in one of the provided networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portProfileIds", "in": "query", "description": "Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided serials.", "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": { "name": { "type": "string", "description": "The name of the switch." }, "serial": { "type": "string", "description": "The serial number of the switch." }, "mac": { "type": "string", "description": "The MAC address of the switch." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the network." }, "id": { "type": "string", "description": "The ID of the network." } }, "description": "Identifying information of the switch's network." }, "model": { "type": "string", "description": "The model of the switch." }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "counts": { "type": "object", "properties": { "byStatus": { "type": "object", "properties": { "online": { "type": "integer", "description": "Active client count." } }, "description": "Associated client count on access point by status." } }, "description": "Number of clients on the port in a given time." } } }, "description": "The number of online clients of the ports on the switch." } } }, "description": "Switches" }, "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": [ { "name": "Example Switch", "serial": "Q555-5555-5555", "mac": "01:23:45:67:ab:cd", "network": { "name": "Example Network", "id": "L_12345" }, "model": "MS120-8", "ports": [ { "portId": "1", "counts": { "byStatus": { "online": 0 } } } ] } ], "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": [ "switch:telemetry:read" ] } ], "summary": "List the number of clients for all switchports with at least one online client in an organization.", "tags": [ "switch", "monitor", "ports", "clients", "overview", "byDevice" ] } }, "/organizations/{organizationId}/switch/ports/overview": { "get": { "description": "Returns the counts of all active ports for the requested timespan, grouped by speed. An active port is a port that at any point during the timeframe is observed to be connected to a responsive device and isn't configured to be disabled. For a port that is observed at multiple speeds during the timeframe, it will be counted at the highest speed observed. The number of inactive ports, and the total number of ports are also provided. Only ports on switches online during the timeframe will be represented and a port is only guaranteed to be present if its switch was online for at least 6 hours of the timeframe.", "operationId": "getOrganizationSwitchPortsOverview", "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.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 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 12 hours and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 43200, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of ports" }, "byStatus": { "type": "object", "properties": { "active": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of active ports" }, "byMediaAndLinkSpeed": { "type": "object", "properties": { "rj45": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of active RJ45 ports" }, "10": { "type": "integer", "description": "The number of active 10 Mbps RJ45 ports" }, "100": { "type": "integer", "description": "The number of active 100 Mbps RJ45 ports" }, "1000": { "type": "integer", "description": "The number of active 1 Gbps RJ45 ports" }, "2500": { "type": "integer", "description": "The number of active 2 Gbps RJ45 ports" }, "5000": { "type": "integer", "description": "The number of active 5 Gbps RJ45 ports" }, "10000": { "type": "integer", "description": "The number of active 10 Gbps RJ45 ports" } }, "description": "The count data for RJ45 ports, indexed by speed in Mb" }, "sfp": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of active SFP ports" }, "100": { "type": "integer", "description": "The number of active 100 Mbps SFP ports" }, "1000": { "type": "integer", "description": "The number of active 1 Gbps SFP ports" }, "10000": { "type": "integer", "description": "The number of active 10 Gbps SFP ports" }, "20000": { "type": "integer", "description": "The number of active 20 Gbps SFP ports" }, "25000": { "type": "integer", "description": "The number of active 25 Gbps SFP ports" }, "40000": { "type": "integer", "description": "The number of active 40 Gbps SFP ports" }, "50000": { "type": "integer", "description": "The number of active 50 Gbps SFP ports" }, "100000": { "type": "integer", "description": "The number of active 100 Gbps SFP ports" } }, "description": "The count data for SFP ports, indexed by speed in Mb" } }, "description": "The active count data, indexed by media type (RJ45 or SFP)" } }, "description": "The count data for active ports" }, "inactive": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of inactive ports" }, "byMedia": { "type": "object", "properties": { "rj45": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of inactive RJ45 ports" } }, "description": "The count data for inactive RJ45 ports" }, "sfp": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of inactive SFP ports" } }, "description": "The count data for inactive SFP ports" } }, "description": "The inactive count data, indexed by media type (RJ45 or SFP)" } }, "description": "The count data for inactive ports" } }, "description": "The count data, indexed by active or inactive status" } }, "description": "The count data of all ports" } } }, "example": { "counts": { "total": 120, "byStatus": { "active": { "total": 87, "byMediaAndLinkSpeed": { "rj45": { "total": 24, "10": 0, "100": 0, "1000": 24, "2500": 0, "5000": 0, "10000": 0 }, "sfp": { "total": 63, "100": 8, "1000": 40, "10000": 10, "20000": 0, "25000": 0, "40000": 1, "50000": 0, "100000": 0 } } }, "inactive": { "total": 33, "byMedia": { "rj45": { "total": 16 }, "sfp": { "total": 17 } } } } } } } } } }, "security": [ { "oauth2": [ "switch:telemetry:read" ] } ], "summary": "Returns the counts of all active ports for the requested timespan, grouped by speed", "tags": [ "switch", "monitor", "ports", "overview" ] } }, "/organizations/{organizationId}/switch/ports/statuses/bySwitch": { "get": { "description": "List the switchports in an organization", "operationId": "getOrganizationSwitchPortsStatusesBySwitch", "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 - 20. 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": "configurationUpdatedAfter", "in": "query", "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.", "schema": { "type": "string", "format": "date-time" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Optional parameter to filter items to switches with names that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter items to switches in one of the provided networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portProfileIds", "in": "query", "description": "Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided serials.", "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": { "name": { "type": "string", "description": "The name of the switch." }, "serial": { "type": "string", "description": "The serial number of the switch." }, "mac": { "type": "string", "description": "The MAC address of the switch." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the network." }, "id": { "type": "string", "description": "The ID of the network." } }, "description": "Identifying information of the switch's network." }, "model": { "type": "string", "description": "The model of the switch." }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "enabled": { "type": "boolean", "description": "Whether the port is configured to be enabled." }, "status": { "type": "string", "enum": [ "Connected", "Disabled", "Disconnected" ], "description": "The current connection status of the port." }, "isUplink": { "type": "boolean", "description": "Whether the port is the switch's uplink." }, "errors": { "type": "array", "items": { "type": "string" }, "description": "All errors present on the port." }, "warnings": { "type": "array", "items": { "type": "string" }, "description": "All warnings present on the port." }, "speed": { "type": "string", "enum": [ "", "1 Gbps", "10 Gbps", "10 Mbps", "100 Gbps", "100 Mbps", "2.5 Gbps", "20 Gbps", "25 Gbps", "40 Gbps", "5 Gbps", "50 Gbps" ], "description": "The current data transfer rate which the port is operating at." }, "duplex": { "type": "string", "enum": [ "", "full", "half" ], "description": "The current duplex of a connected port." }, "spanningTree": { "type": "object", "properties": { "statuses": { "type": "array", "items": { "type": "string" }, "description": "The current Spanning Tree Protocol statuses of the port." } }, "description": "The Spanning Tree Protocol (STP) information of the connected device." }, "poe": { "type": "object", "properties": { "isAllocated": { "type": "boolean", "description": "Whether the port is drawing power" } }, "description": "PoE status of the port." }, "securePort": { "type": "object", "properties": { "active": { "type": "boolean", "description": "Whether Secure Port is currently active for this port." }, "authenticationStatus": { "type": "string", "enum": [ "Authentication failure", "Authentication in progress", "Authentication successful", "Authentication timed out", "Disabled", "Enabled" ], "description": "The current Secure Port status." } }, "description": "The Secure Port status of the port." } } }, "description": "The statuses of the ports on the switch." } } }, "description": "Switches" }, "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": [ { "name": "Example Switch", "serial": "Q555-5555-5555", "mac": "01:23:45:67:ab:cd", "network": { "name": "Example Network", "id": "L_12345" }, "model": "MS120-8", "ports": [ { "portId": "1", "enabled": true, "status": "Connected", "isUplink": false, "errors": [ "PoE overload", "Very high proportion of CRC errors" ], "warnings": [ "SecurePort authentication in progress", "PoE port was denied power", "High proportion of CRC errors" ], "speed": "10 Gbps", "duplex": "full", "spanningTree": { "statuses": [ "Learning" ] }, "poe": { "isAllocated": false }, "securePort": { "active": true, "authenticationStatus": "Authentication in progress" } } ] } ], "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": [ "switch:telemetry:read" ] } ], "summary": "List the switchports in an organization", "tags": [ "switch", "monitor", "ports", "statuses", "bySwitch" ] } }, "/organizations/{organizationId}/switch/ports/topology/discovery/byDevice": { "get": { "description": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", "operationId": "getOrganizationSwitchPortsTopologyDiscoveryByDevice", "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 31 days from today.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. 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 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 20. 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": "configurationUpdatedAfter", "in": "query", "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.", "schema": { "type": "string", "format": "date-time" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Optional parameter to filter items to switches with names that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter items to switches in one of the provided networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portProfileIds", "in": "query", "description": "Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided serials.", "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": { "name": { "type": "string", "description": "The name of the switch." }, "serial": { "type": "string", "description": "The serial number of the switch." }, "mac": { "type": "string", "description": "The MAC address of the switch." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the network." }, "id": { "type": "string", "description": "The ID of the network." } }, "description": "Identifying information of the switch's network." }, "model": { "type": "string", "description": "The model of the switch." }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "lastUpdatedAt": { "type": "string", "description": "Timestamp for most recent discovery info on this port." }, "cdp": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "CDP RFC/official name of TLV" }, "value": { "type": "string", "description": "Value of the named TLV." } } }, "description": "The Cisco Discovery Protocol (CDP) information of the connected device." }, "lldp": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "LLDP RFC/official name of TLV" }, "value": { "type": "string", "description": "Value of the named TLV." } } }, "description": "The Link Layer Discovery Protocol (LLDP) information of the connected device." } } }, "description": "Ports belonging to the switch with LLDP/CDP discovery info." } } }, "description": "Switches" }, "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": [ { "name": "Example Switch", "serial": "Q555-5555-5555", "mac": "01:23:45:67:ab:cd", "network": { "name": "Example Network", "id": "L_12345" }, "model": "MS120-8", "ports": [ { "portId": "1", "lastUpdatedAt": "ISO8061Z", "cdp": [ { "name": "System name", "value": "MS350-24X - Test" } ], "lldp": [ { "name": "System name", "value": "MS350-24X - Test" } ] } ] } ], "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": [ "switch:telemetry:read" ] } ], "summary": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", "tags": [ "switch", "monitor", "ports", "topology", "discovery", "byDevice" ] } }, "/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval": { "get": { "description": "List the historical usage and traffic data of switchports in an organization.", "operationId": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval", "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 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. If interval is provided, the timespan will be autocalculated.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "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": "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": "configurationUpdatedAfter", "in": "query", "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp.", "schema": { "type": "string", "format": "date-time" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter items to switches with MAC addresses that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Optional parameter to filter items to switches with names that contain the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter items to switches in one of the provided networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "portProfileIds", "in": "query", "description": "Optional parameter to filter items to switches that contain switchports belonging to one of the specified port profiles.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter items to switches with serial number that contains the search term or are an exact match.", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter items to switches that have one of the provided serials.", "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": { "name": { "type": "string", "description": "The name of the switch." }, "serial": { "type": "string", "description": "The serial number of the switch." }, "mac": { "type": "string", "description": "The MAC address of the switch." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the network." }, "id": { "type": "string", "description": "The ID of the network." } }, "description": "Identifying information of the switch's network." }, "model": { "type": "string", "description": "The model of the switch." }, "ports": { "type": "array", "items": { "type": "object", "properties": { "portId": { "type": "string", "description": "The string identifier of this port on the switch. This is commonly just the port number but may contain additional identifying information such as the slot and module-type if the port is located on a port module." }, "intervals": { "type": "array", "items": { "type": "object", "properties": { "startTs": { "type": "string", "format": "date-time", "description": "The starting timestamp of the given interval." }, "endTs": { "type": "string", "format": "date-time", "description": "The end timestamp of the given interval." }, "data": { "type": "object", "properties": { "usage": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total amount of data sent and received (in kilobytes)." }, "upstream": { "type": "integer", "description": "The amount of data sent (in kilobytes)." }, "downstream": { "type": "integer", "description": "The amount of data received (in kilobytes)." } }, "description": "Usage data for the given interval." } }, "description": "A breakdown of how many kilobytes have passed through this port during the interval timespan." }, "bandwidth": { "type": "object", "properties": { "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "The average speed of the data sent and received (in kilobits-per-second)." }, "upstream": { "type": "number", "format": "float", "description": "The average speed of the data sent (in kilobits-per-second)." }, "downstream": { "type": "number", "format": "float", "description": "The average speed of the data received (in kilobits-per-second)." } }, "description": "Bandwidth usage data for the given interval." } }, "description": "A breakdown of the average speed of data that has passed through this port during the interval." }, "energy": { "type": "object", "properties": { "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "The total energy in watt-hours delivered by this port during the interval" } }, "description": "Energy data for the given interval." } }, "description": "How much energy (in watt-hours) has been delivered by this port during the interval." } } }, "description": "An array of intervals for a port with bandwidth, traffic, and power usage data." } } }, "description": "The number of ports on the switch with usage data." } } }, "description": "Switches" }, "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": [ { "name": "Example Switch", "serial": "Q555-5555-5555", "mac": "01:23:45:67:ab:cd", "network": { "name": "Example Network", "id": "L_12345" }, "model": "MS120-8", "ports": [ { "portId": "1", "intervals": [ { "startTs": "2024-02-11T00:00:00.090210Z", "endTs": "2024-02-11T00:20:00.090210Z", "data": { "usage": { "total": 40867, "upstream": 23008, "downstream": 17859 } }, "bandwidth": { "usage": { "total": 2.2, "upstream": 1.2, "downstream": 1.0 } }, "energy": { "usage": { "total": 2.2 } } } ] } ] } ], "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": [ "switch:telemetry:read" ] } ], "summary": "List the historical usage and traffic data of switchports in an organization.", "tags": [ "switch", "monitor", "ports", "usage", "history", "byDevice", "byInterval" ] } } } }