diff --git a/openapi/spec2.json b/openapi/spec2.json index 5e4d8d9..acbc5a7 100644 --- a/openapi/spec2.json +++ b/openapi/spec2.json @@ -1,9 +1,9 @@ { "swagger": "2.0", "info": { - "version": "1.53.0", + "version": "1.54.0", "title": "Meraki Dashboard API", - "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 04 December, 2024\n>\n> [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n", + "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 01 January, 2025\n>\n> [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" @@ -11395,14 +11395,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -11435,8 +11427,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } ] @@ -11648,14 +11638,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -11686,8 +11668,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -11810,14 +11790,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -11848,8 +11820,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -12067,14 +12037,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -12105,8 +12067,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -17443,11 +17403,7 @@ }, "uplink": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "portRules": { "type": "array", @@ -17686,11 +17642,7 @@ }, "uplink": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "allowedInbound": { "type": "array", @@ -65596,14 +65548,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -65636,8 +65580,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } ] @@ -65862,14 +65804,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -65900,8 +65834,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -66032,17 +65964,260 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" + "defaultGateway": { + "type": "string", + "description": "IPv4 default gateway" + } + } + }, + "examples": { + "application/json": { + "interfaceId": "1234", + "name": "L3 interface", + "subnet": "192.168.1.0/24", + "interfaceIp": "192.168.1.2", + "multicastRouting": "disabled", + "vlanId": 100, + "ospfSettings": { + "area": "0", + "cost": 1, + "isPassiveEnabled": true }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" + "ospfV3": { + "area": "1", + "cost": 2, + "isPassiveEnabled": true + }, + "ipv6": { + "assignmentMode": "static", + "address": "1:2:3:4::1", + "prefix": "1:2:3:4::/48", + "gateway": "1:2:3:4::2" + }, + "defaultGateway": "192.168.1.1" + } + } + } + }, + "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", + "type": "string", + "required": true + }, + { + "name": "switchStackId", + "in": "path", + "description": "Switch stack ID", + "type": "string", + "required": true + }, + { + "name": "interfaceId", + "in": "path", + "description": "Interface ID", + "type": "string", + "required": true + }, + { + "name": "updateNetworkSwitchStackRoutingInterface", + "in": "body", + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A friendly name or description for the interface or VLAN." + }, + "subnet": { + "type": "string", + "description": "The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24)." + }, + "interfaceIp": { + "type": "string", + "description": "The IP address this switch stack will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP." + }, + "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'." + }, + "vlanId": { + "type": "integer", + "description": "The VLAN this routed interface is on. VLAN must be between 1 and 4094." }, "defaultGateway": { "type": "string", - "description": "IPv4 default gateway" + "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 routed 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." + }, + "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." + } + }, + "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'." + }, + "prefix": { + "type": "string", + "description": "The IPv6 prefix of the interface. Required if IPv6 object is included and interface does not already have ipv6.prefix configured" + }, + "address": { + "type": "string", + "description": "The IPv6 address of the interface. Required if assignmentMode is included and set as 'static'. Must not be included if assignmentMode is 'eui-64'." + }, + "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 for the stack." + } + }, + "description": "The IPv6 settings of the interface." + } + }, + "example": { + "name": "L3 interface", + "subnet": "192.168.1.0/24", + "interfaceIp": "192.168.1.2", + "multicastRouting": "disabled", + "vlanId": 100, + "defaultGateway": "192.168.1.1", + "ospfSettings": { + "area": "0", + "cost": 1, + "isPassiveEnabled": true + }, + "ipv6": { + "assignmentMode": "static", + "prefix": "1:2:3:4::/48", + "address": "1:2:3:4::1", + "gateway": "1:2:3:4::2" + } + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "interfaceId": { + "type": "string", + "description": "The id" + }, + "name": { + "type": "string", + "description": "The name" + }, + "subnet": { + "type": "string", + "description": "IPv4 subnet" + }, + "interfaceIp": { + "type": "string", + "description": "IPv4 address" + }, + "multicastRouting": { + "type": "string", + "description": "Multicast routing status" + }, + "vlanId": { + "type": "integer", + "description": "VLAN id" + }, + "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" + } + }, + "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" + } + }, + "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" } } }, @@ -66069,273 +66244,10 @@ "address": "1:2:3:4::1", "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" - }, - "uplinkV4": false, - "uplinkV6": false, - "defaultGateway": "192.168.1.1" - } - } - } - }, - "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", - "type": "string", - "required": true - }, - { - "name": "switchStackId", - "in": "path", - "description": "Switch stack ID", - "type": "string", - "required": true - }, - { - "name": "interfaceId", - "in": "path", - "description": "Interface ID", - "type": "string", - "required": true - }, - { - "name": "updateNetworkSwitchStackRoutingInterface", - "in": "body", - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "A friendly name or description for the interface or VLAN." - }, - "subnet": { - "type": "string", - "description": "The network that this routed interface is on, in CIDR notation (ex. 10.1.1.0/24)." - }, - "interfaceIp": { - "type": "string", - "description": "The IP address this switch stack will use for layer 3 routing on this VLAN or subnet. This cannot be the same as the switch's management IP." - }, - "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'." - }, - "vlanId": { - "type": "integer", - "description": "The VLAN this routed 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 routed 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." - }, - "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." - } - }, - "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'." - }, - "prefix": { - "type": "string", - "description": "The IPv6 prefix of the interface. Required if IPv6 object is included and interface does not already have ipv6.prefix configured" - }, - "address": { - "type": "string", - "description": "The IPv6 address of the interface. Required if assignmentMode is included and set as 'static'. Must not be included if assignmentMode is 'eui-64'." - }, - "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 for the stack." - } - }, - "description": "The IPv6 settings of the interface." - } - }, - "example": { - "name": "L3 interface", - "subnet": "192.168.1.0/24", - "interfaceIp": "192.168.1.2", - "multicastRouting": "disabled", - "vlanId": 100, - "defaultGateway": "192.168.1.1", - "ospfSettings": { - "area": "0", - "cost": 1, - "isPassiveEnabled": true - }, - "ipv6": { - "assignmentMode": "static", - "prefix": "1:2:3:4::/48", - "address": "1:2:3:4::1", - "gateway": "1:2:3:4::2" } } } } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "properties": { - "interfaceId": { - "type": "string", - "description": "The id" - }, - "name": { - "type": "string", - "description": "The name" - }, - "subnet": { - "type": "string", - "description": "IPv4 subnet" - }, - "interfaceIp": { - "type": "string", - "description": "IPv4 address" - }, - "multicastRouting": { - "type": "string", - "description": "Multicast routing status" - }, - "vlanId": { - "type": "integer", - "description": "VLAN id" - }, - "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" - } - }, - "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" - } - }, - "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" - }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - } - } - }, - "examples": { - "application/json": { - "interfaceId": "1234", - "name": "L3 interface", - "subnet": "192.168.1.0/24", - "interfaceIp": "192.168.1.2", - "multicastRouting": "disabled", - "vlanId": 100, - "ospfSettings": { - "area": "0", - "cost": 1, - "isPassiveEnabled": true - }, - "ospfV3": { - "area": "1", - "cost": 2, - "isPassiveEnabled": true - }, - "ipv6": { - "assignmentMode": "static", - "address": "1:2:3:4::1", - "prefix": "1:2:3:4::/48", - "gateway": "1:2:3:4::2" - }, - "uplinkV4": false, - "uplinkV6": false - } - } - } }, "summary": "Update a layer 3 interface for a switch stack", "tags": [ @@ -83996,6 +83908,23 @@ "type": "boolean", "description": "Whether or not higher priority RADIUS servers should be retried after 60 seconds." }, + "radiusRadsec": { + "type": "object", + "properties": { + "tlsTunnel": { + "type": "object", + "properties": { + "timeout": { + "type": "integer", + "description": "The interval (in seconds) to determines how long a TLS session can remain idle for a RADSec server before it is automatically terminated" + } + }, + "description": "RADSec TLS tunnel settings" + } + }, + "x-release-stage": "general_availability", + "description": "The current settings for RADIUS RADSec" + }, "radiusCoaEnabled": { "type": "boolean", "description": "If true, Meraki devices will act as a RADIUS Dynamic Authorization Server and will respond to RADIUS Change-of-Authorization and Disconnect messages sent by the RADIUS server." @@ -84385,6 +84314,11 @@ "radiusServerTimeout": 5, "radiusServerAttemptsLimit": 5, "radiusFallbackEnabled": true, + "radiusRadsec": { + "tlsTunnel": { + "timeout": 600 + } + }, "radiusCoaEnabled": true, "radiusFailoverPolicy": "Deny access", "radiusLoadBalancingPolicy": "Round robin", @@ -90436,6 +90370,14 @@ "dstPort": { "type": "string", "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } } }, @@ -90466,7 +90408,9 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", @@ -90540,304 +90484,14 @@ "dstPort": { "type": "string", "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." - } - }, - "required": [ - "policy", - "protocol" - ] - }, - "description": "An ordered array of the adaptive policy ACL rules." - }, - "ipVersion": { - "type": "string", - "enum": [ - "any", - "ipv4", - "ipv6" - ], - "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" - } - }, - "example": { - "name": "Block sensitive web traffic", - "description": "Blocks sensitive web traffic", - "rules": [ - { - "policy": "deny", - "protocol": "tcp", - "srcPort": "1,33", - "dstPort": "22-30" - } - ], - "ipVersion": "ipv6" - }, - "required": [ - "name", - "rules", - "ipVersion" - ] - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "properties": { - "aclId": { - "type": "string", - "description": "ID of the adaptive policy ACL" - }, - "name": { - "type": "string", - "description": "Name of the adaptive policy ACL" - }, - "description": { - "type": "string", - "description": "Description of the adaptive policy ACL" - }, - "ipVersion": { - "type": "string", - "description": "IP version of adpative policy ACL" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "'allow' or 'deny' traffic specified by this rule" }, - "protocol": { - "type": "string", - "description": "The type of protocol" - }, - "srcPort": { - "type": "string", - "description": "Source port" - }, - "dstPort": { - "type": "string", - "description": "Destination port" - } - } - }, - "description": "An ordered array of the adaptive policy ACL rules" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was created" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was last updated" - } - } - }, - "examples": { - "application/json": { - "aclId": "12345678", - "name": "Block sensitive web traffic", - "description": "Blocks sensitive web traffic", - "ipVersion": "ipv6", - "rules": [ - { - "policy": "deny", - "protocol": "tcp", - "srcPort": "1,33", - "dstPort": "22-30" - } - ], - "createdAt": "2021-05-19T17:08:25Z", - "updatedAt": "2021-05-19T17:11:54Z" - } - } - } - }, - "summary": "Creates new adaptive policy ACL", - "tags": [ - "organizations", - "configure", - "adaptivePolicy", - "acls" - ] - } - }, - "/organizations/{organizationId}/adaptivePolicy/acls/{aclId}": { - "get": { - "description": "Returns the adaptive policy ACL information", - "operationId": "getOrganizationAdaptivePolicyAcl", - "parameters": [ - { - "name": "organizationId", - "in": "path", - "description": "Organization ID", - "type": "string", - "required": true - }, - { - "name": "aclId", - "in": "path", - "description": "Acl ID", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "properties": { - "aclId": { - "type": "string", - "description": "ID of the adaptive policy ACL" - }, - "name": { - "type": "string", - "description": "Name of the adaptive policy ACL" - }, - "description": { - "type": "string", - "description": "Description of the adaptive policy ACL" - }, - "ipVersion": { - "type": "string", - "description": "IP version of adpative policy ACL" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "'allow' or 'deny' traffic specified by this rule" - }, - "protocol": { - "type": "string", - "description": "The type of protocol" - }, - "srcPort": { - "type": "string", - "description": "Source port" - }, - "dstPort": { - "type": "string", - "description": "Destination port" - } - } - }, - "description": "An ordered array of the adaptive policy ACL rules" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was created" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was last updated" - } - } - }, - "examples": { - "application/json": { - "aclId": "12345678", - "name": "Block sensitive web traffic", - "description": "Blocks sensitive web traffic", - "ipVersion": "ipv6", - "rules": [ - { - "policy": "deny", - "protocol": "tcp", - "srcPort": "1,33", - "dstPort": "22-30" - } - ], - "createdAt": "2021-05-19T17:08:25Z", - "updatedAt": "2021-05-19T17:11:54Z" - } - } - } - }, - "summary": "Returns the adaptive policy ACL information", - "tags": [ - "organizations", - "configure", - "adaptivePolicy", - "acls" - ] - }, - "put": { - "description": "Updates an adaptive policy ACL", - "operationId": "updateOrganizationAdaptivePolicyAcl", - "parameters": [ - { - "name": "organizationId", - "in": "path", - "description": "Organization ID", - "type": "string", - "required": true - }, - { - "name": "aclId", - "in": "path", - "description": "Acl ID", - "type": "string", - "required": true - }, - { - "name": "updateOrganizationAdaptivePolicyAcl", - "in": "body", - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the adaptive policy ACL" - }, - "description": { - "type": "string", - "description": "Description of the adaptive policy ACL" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "enum": [ - "allow", - "deny" - ], - "description": "'allow' or 'deny' traffic specified by this rule." - }, - "protocol": { - "type": "string", - "enum": [ - "any", - "icmp", - "tcp", - "udp" - ], - "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." - }, - "srcPort": { - "type": "string", - "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, - "dstPort": { - "type": "string", - "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } }, "required": [ @@ -90845,7 +90499,7 @@ "protocol" ] }, - "description": "An ordered array of the adaptive policy ACL rules. An empty array will clear the rules." + "description": "An ordered array of the adaptive policy ACL rules." }, "ipVersion": { "type": "string", @@ -90865,13 +90519,139 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "ipVersion": "ipv6" + }, + "required": [ + "name", + "rules", + "ipVersion" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "aclId": { + "type": "string", + "description": "ID of the adaptive policy ACL" + }, + "name": { + "type": "string", + "description": "Name of the adaptive policy ACL" + }, + "description": { + "type": "string", + "description": "Description of the adaptive policy ACL" + }, + "ipVersion": { + "type": "string", + "description": "IP version of adpative policy ACL" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "'allow' or 'deny' traffic specified by this rule" + }, + "protocol": { + "type": "string", + "description": "The type of protocol" + }, + "srcPort": { + "type": "string", + "description": "Source port" + }, + "dstPort": { + "type": "string", + "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" + } + } + }, + "description": "An ordered array of the adaptive policy ACL rules" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was created" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was last updated" + } + } + }, + "examples": { + "application/json": { + "aclId": "12345678", + "name": "Block sensitive web traffic", + "description": "Blocks sensitive web traffic", + "ipVersion": "ipv6", + "rules": [ + { + "policy": "deny", + "protocol": "tcp", + "srcPort": "1,33", + "dstPort": "22-30", + "log": true, + "tcpEstablished": true + } + ], + "createdAt": "2021-05-19T17:08:25Z", + "updatedAt": "2021-05-19T17:11:54Z" } } } + }, + "summary": "Creates new adaptive policy ACL", + "tags": [ + "organizations", + "configure", + "adaptivePolicy", + "acls" + ] + } + }, + "/organizations/{organizationId}/adaptivePolicy/acls/{aclId}": { + "get": { + "description": "Returns the adaptive policy ACL information", + "operationId": "getOrganizationAdaptivePolicyAcl", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "name": "aclId", + "in": "path", + "description": "Acl ID", + "type": "string", + "required": true + } ], "responses": { "200": { @@ -90915,6 +90695,218 @@ "dstPort": { "type": "string", "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" + } + } + }, + "description": "An ordered array of the adaptive policy ACL rules" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was created" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was last updated" + } + } + }, + "examples": { + "application/json": { + "aclId": "12345678", + "name": "Block sensitive web traffic", + "description": "Blocks sensitive web traffic", + "ipVersion": "ipv6", + "rules": [ + { + "policy": "deny", + "protocol": "tcp", + "srcPort": "1,33", + "dstPort": "22-30", + "log": true, + "tcpEstablished": true + } + ], + "createdAt": "2021-05-19T17:08:25Z", + "updatedAt": "2021-05-19T17:11:54Z" + } + } + } + }, + "summary": "Returns the adaptive policy ACL information", + "tags": [ + "organizations", + "configure", + "adaptivePolicy", + "acls" + ] + }, + "put": { + "description": "Updates an adaptive policy ACL", + "operationId": "updateOrganizationAdaptivePolicyAcl", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "name": "aclId", + "in": "path", + "description": "Acl ID", + "type": "string", + "required": true + }, + { + "name": "updateOrganizationAdaptivePolicyAcl", + "in": "body", + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the adaptive policy ACL" + }, + "description": { + "type": "string", + "description": "Description of the adaptive policy ACL" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "enum": [ + "allow", + "deny" + ], + "description": "'allow' or 'deny' traffic specified by this rule." + }, + "protocol": { + "type": "string", + "enum": [ + "any", + "icmp", + "tcp", + "udp" + ], + "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." + }, + "srcPort": { + "type": "string", + "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + }, + "dstPort": { + "type": "string", + "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" + } + }, + "required": [ + "policy", + "protocol" + ] + }, + "description": "An ordered array of the adaptive policy ACL rules. An empty array will clear the rules." + }, + "ipVersion": { + "type": "string", + "enum": [ + "any", + "ipv4", + "ipv6" + ], + "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" + } + }, + "example": { + "name": "Block sensitive web traffic", + "description": "Blocks sensitive web traffic", + "rules": [ + { + "policy": "deny", + "protocol": "tcp", + "srcPort": "1,33", + "dstPort": "22-30", + "log": true, + "tcpEstablished": true + } + ], + "ipVersion": "ipv6" + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "aclId": { + "type": "string", + "description": "ID of the adaptive policy ACL" + }, + "name": { + "type": "string", + "description": "Name of the adaptive policy ACL" + }, + "description": { + "type": "string", + "description": "Description of the adaptive policy ACL" + }, + "ipVersion": { + "type": "string", + "description": "IP version of adpative policy ACL" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "'allow' or 'deny' traffic specified by this rule" + }, + "protocol": { + "type": "string", + "description": "The type of protocol" + }, + "srcPort": { + "type": "string", + "description": "Source port" + }, + "dstPort": { + "type": "string", + "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } } }, @@ -90943,7 +90935,9 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", @@ -96811,6 +96805,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -96833,8 +96828,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -96857,6 +96850,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -96888,6 +96882,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -96937,9 +96932,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -97381,6 +97374,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -97403,8 +97397,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -97427,6 +97419,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -97458,6 +97451,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -97507,9 +97501,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -97789,6 +97781,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -97811,8 +97804,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -97835,6 +97826,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -97866,6 +97858,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -97915,9 +97908,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -98244,6 +98235,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -98266,8 +98258,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -98290,6 +98280,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -98321,6 +98312,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -98370,9 +98362,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -98657,6 +98647,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -98679,8 +98670,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -98703,6 +98692,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -98734,6 +98724,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -98783,9 +98774,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -107278,6 +107267,265 @@ ] } }, + "/organizations/{organizationId}/devices/controller/migrations": { + "post": { + "description": "Migrate devices to another controller or management mode", + "operationId": "createOrganizationDevicesControllerMigration", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "name": "createOrganizationDevicesControllerMigration", + "in": "body", + "schema": { + "type": "object", + "properties": { + "serials": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of Meraki Serials to migrate" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The controller or management mode to which the devices will be migrated" + } + }, + "example": { + "serials": [ + "QABC-DEFG-HIJK" + ], + "target": "wirelessController" + }, + "required": [ + "serials", + "target" + ] + }, + "required": true + } + ], + "responses": { + "201": { + "description": "Successful operation", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "The device serial" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The migration target destination" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The time at which a migration was created" + }, + "migratedAt": { + "type": "string", + "format": "date-time", + "description": "The time at which the device initiated migration" + } + } + } + }, + "examples": { + "application/json": [ + { + "serial": "QXYZ-DEFG-HIJK", + "target": "wirelessController", + "createdAt": "2020-10-21T02:00:00Z", + "migratedAt": "2020-10-21T03:00:00Z" + } + ] + } + } + }, + "summary": "Migrate devices to another controller or management mode", + "tags": [ + "organizations", + "configure", + "devices", + "controller", + "migrations" + ] + }, + "get": { + "description": "Retrieve device migration statuses in an organization", + "operationId": "getOrganizationDevicesControllerMigrations", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "serials", + "in": "query", + "description": "A list of Meraki Serials for which to retrieve migrations" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "networkIds", + "in": "query", + "description": "Filter device migrations by network IDs" + }, + { + "type": "string", + "enum": [ + "wirelessController" + ], + "name": "target", + "in": "query", + "description": "Filter device migrations by target destination" + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100." + }, + { + "type": "string", + "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." + }, + { + "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." + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "The device serial" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The migration target destination" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The time at which a migration was created" + }, + "migratedAt": { + "type": "string", + "format": "date-time", + "description": "The time at which the device initiated migration" + } + } + }, + "description": "List of migrations for the specified devices" + }, + "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" + } + } + }, + "headers": { + "Link": { + "type": "string", + "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." + } + }, + "examples": { + "application/json": { + "items": [ + { + "serial": "QXYZ-DEFG-HIJK", + "target": "wirelessController", + "createdAt": "2020-10-21T02:00:00Z", + "migratedAt": "2020-10-21T03:00:00Z" + } + ], + "meta": { + "counts": { + "items": { + "total": 10, + "remaining": 0 + } + } + } + } + } + } + }, + "summary": "Retrieve device migration statuses in an organization", + "tags": [ + "organizations", + "configure", + "devices", + "controller", + "migrations" + ] + } + }, "/organizations/{organizationId}/devices/details/bulkUpdate": { "post": { "description": "Updating device details (currently only used for Catalyst devices)", @@ -122800,112 +123048,415 @@ "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": { + "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" + } + } + }, + "headers": { + "Link": { + "type": "string", + "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." + } + }, + "examples": { + "application/json": { + "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 + } + } + } + } + } + } + }, + "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", + "type": "string", + "required": true + }, + { + "type": "string", + "name": "t0", + "in": "query", + "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today." + }, + { + "type": "number", + "format": "float", + "maximum": 2678400, + "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." + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 20. Default is 10." + }, + { + "type": "string", + "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." + }, + { + "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." + }, + { + "type": "string", + "format": "date-time", + "name": "configurationUpdatedAfter", + "in": "query", + "description": "Optional parameter to filter items to switches where the configuration has been updated after the given timestamp." + }, + { + "type": "string", + "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." + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "macs", + "in": "query", + "description": "Optional parameter to filter items to switches that have one of the provided MAC addresses." + }, + { + "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." + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter items to switches in one of the provided networks." + }, + { + "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." + }, + { + "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." + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "serials", + "in": "query", + "description": "Optional parameter to filter items to switches that have one of the provided serials." + } + ], + "responses": { + "200": { + "description": "Successful operation", + "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", - "enum": [ - "Connected", - "Disabled", - "Disconnected" - ], - "description": "The current connection status of the port." - }, - "isUplink": { - "type": "boolean", - "description": "Whether the port is the switch's uplink." + "description": "Timestamp for most recent discovery info on this port." }, - "errors": { + "cdp": { "type": "array", "items": { - "type": "string" + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "CDP RFC/official name of TLV" + }, + "value": { + "type": "string", + "description": "Value of the named TLV." + } + } }, - "description": "All errors present on the port." + "description": "The Cisco Discovery Protocol (CDP) information of the connected device." }, - "warnings": { + "lldp": { "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" + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "LLDP RFC/official name of TLV" }, - "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." + "value": { + "type": "string", + "description": "Value of the named TLV." + } } }, - "description": "The Secure Port status of the port." + "description": "The Link Layer Discovery Protocol (LLDP) information of the connected device." } } }, - "description": "The statuses of the ports on the switch." + "description": "Ports belonging to the switch with LLDP/CDP discovery info." } } }, @@ -122960,32 +123511,19 @@ "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" + "lastUpdatedAt": "ISO8061Z", + "cdp": [ + { + "name": "System name", + "value": "MS350-24X - Test" + } ], - "speed": "10 Gbps", - "duplex": "full", - "spanningTree": { - "statuses": [ - "Learning" - ] - }, - "poe": { - "isAllocated": false - }, - "securePort": { - "active": true, - "authenticationStatus": "Authentication in progress" - } + "lldp": [ + { + "name": "System name", + "value": "MS350-24X - Test" + } + ] } ] } @@ -123002,20 +123540,21 @@ } } }, - "summary": "List the switchports in an organization", + "summary": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", "tags": [ "switch", "monitor", "ports", - "statuses", - "bySwitch" + "topology", + "discovery", + "byDevice" ] } }, - "/organizations/{organizationId}/switch/ports/topology/discovery/byDevice": { + "/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval": { "get": { - "description": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", - "operationId": "getOrganizationSwitchPortsTopologyDiscoveryByDevice", + "description": "List the historical usage and traffic data of switchports in an organization.", + "operationId": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval", "parameters": [ { "name": "organizationId", @@ -123030,19 +123569,31 @@ "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today." }, + { + "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." + }, { "type": "number", "format": "float", "maximum": 2678400, "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." + "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." + }, + { + "type": "integer", + "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." }, { "type": "integer", "name": "perPage", "in": "query", - "description": "The number of entries per page returned. Acceptable range is 3 - 20. Default is 10." + "description": "The number of entries per page returned. Acceptable range is 3 - 50. Default is 10." }, { "type": "string", @@ -123168,47 +123719,96 @@ "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": { + "intervals": { "type": "array", "items": { "type": "object", "properties": { - "name": { + "startTs": { "type": "string", - "description": "CDP RFC/official name of TLV" + "format": "date-time", + "description": "The starting timestamp of the given interval." }, - "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": { + "endTs": { "type": "string", - "description": "LLDP RFC/official name of TLV" + "format": "date-time", + "description": "The end timestamp of the given interval." }, - "value": { - "type": "string", - "description": "Value of the named TLV." + "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": "The Link Layer Discovery Protocol (LLDP) information of the connected device." + "description": "An array of intervals for a port with bandwidth, traffic, and power usage data." } } }, - "description": "Ports belonging to the switch with LLDP/CDP discovery info." + "description": "The number of ports on the switch with usage data." } } }, @@ -123263,17 +123863,29 @@ "ports": [ { "portId": "1", - "lastUpdatedAt": "ISO8061Z", - "cdp": [ + "intervals": [ { - "name": "System name", - "value": "MS350-24X - Test" - } - ], - "lldp": [ - { - "name": "System name", - "value": "MS350-24X - Test" + "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 + } + } } ] } @@ -123292,14 +123904,15 @@ } } }, - "summary": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", + "summary": "List the historical usage and traffic data of switchports in an organization.", "tags": [ "switch", "monitor", "ports", - "topology", - "discovery", - "byDevice" + "usage", + "history", + "byDevice", + "byInterval" ] } }, @@ -130392,6 +131005,9 @@ { "name": "contentFiltering" }, + { + "name": "controller" + }, { "name": "coterm" }, @@ -130638,6 +131254,9 @@ { "name": "meshStatuses" }, + { + "name": "migrations" + }, { "name": "models" }, @@ -131081,6 +131700,12 @@ } ], "x-batchable-actions": [ + { + "group": "", + "summary": "Migrate devices to another controller or management mode", + "resource": "/organizations/{organizationId}/devices/controller/migrations", + "operation": "mr/actions/migrate" + }, { "group": "Adaptive policy", "summary": "Add an Adaptive Policy", diff --git a/openapi/spec3.json b/openapi/spec3.json index e3445f2..020c91d 100644 --- a/openapi/spec3.json +++ b/openapi/spec3.json @@ -2,12 +2,12 @@ "openapi": "3.0.1", "info": { "title": "Meraki Dashboard API", - "description": "A RESTful API to programmatically manage and monitor Cisco Meraki networks at scale.\n\n> Date: 04 December, 2024\n>\n> [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n", + "description": "A RESTful API to programmatically manage and monitor Cisco Meraki networks at scale.\n\n> Date: 01 January, 2025\n>\n> [Recent Updates](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" }, - "version": "1.53.0" + "version": "1.54.0" }, "servers": [ { @@ -12865,14 +12865,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -12904,8 +12896,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } ] @@ -13125,14 +13115,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -13162,8 +13144,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -13293,14 +13273,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -13330,8 +13302,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -13559,14 +13529,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -13596,8 +13558,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -19243,11 +19203,7 @@ }, "uplink": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "portRules": { "type": "array", @@ -19496,11 +19452,7 @@ }, "uplink": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "The physical WAN interface on which the traffic will arrive, formatted as 'internetN' where N is an integer representing a valid uplink for the network's appliance" }, "allowedInbound": { "type": "array", @@ -69289,14 +69241,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -69328,8 +69272,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } ] @@ -69563,14 +69505,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -69600,8 +69534,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -69741,14 +69673,6 @@ }, "description": "IPv6 addressing" }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" - }, "defaultGateway": { "type": "string", "description": "IPv4 default gateway" @@ -69778,8 +69702,6 @@ "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" }, - "uplinkV4": false, - "uplinkV6": false, "defaultGateway": "192.168.1.1" } } @@ -70016,14 +69938,6 @@ } }, "description": "IPv6 addressing" - }, - "uplinkV4": { - "type": "boolean", - "description": "Whether this is the switch's IPv4 uplink" - }, - "uplinkV6": { - "type": "boolean", - "description": "Whether this is the switch's IPv6 uplink" } } }, @@ -70049,9 +69963,7 @@ "address": "1:2:3:4::1", "prefix": "1:2:3:4::/48", "gateway": "1:2:3:4::2" - }, - "uplinkV4": false, - "uplinkV6": false + } } } } @@ -88509,6 +88421,23 @@ "type": "boolean", "description": "Whether or not higher priority RADIUS servers should be retried after 60 seconds." }, + "radiusRadsec": { + "type": "object", + "properties": { + "tlsTunnel": { + "type": "object", + "properties": { + "timeout": { + "type": "integer", + "description": "The interval (in seconds) to determines how long a TLS session can remain idle for a RADSec server before it is automatically terminated" + } + }, + "description": "RADSec TLS tunnel settings" + } + }, + "x-release-stage": "general_availability", + "description": "The current settings for RADIUS RADSec" + }, "radiusCoaEnabled": { "type": "boolean", "description": "If true, Meraki devices will act as a RADIUS Dynamic Authorization Server and will respond to RADIUS Change-of-Authorization and Disconnect messages sent by the RADIUS server." @@ -88898,6 +88827,11 @@ "radiusServerTimeout": 5, "radiusServerAttemptsLimit": 5, "radiusFallbackEnabled": true, + "radiusRadsec": { + "tlsTunnel": { + "timeout": 600 + } + }, "radiusCoaEnabled": true, "radiusFailoverPolicy": "Deny access", "radiusLoadBalancingPolicy": "Round robin", @@ -95371,6 +95305,14 @@ "dstPort": { "type": "string", "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } } }, @@ -95400,7 +95342,9 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", @@ -95478,6 +95422,14 @@ "dstPort": { "type": "string", "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } }, "required": [ @@ -95505,7 +95457,9 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "ipVersion": "ipv6" @@ -95564,6 +95518,14 @@ "dstPort": { "type": "string", "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } } }, @@ -95591,7 +95553,9 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", @@ -95678,199 +95642,14 @@ "dstPort": { "type": "string", "description": "Destination port" - } - } - }, - "description": "An ordered array of the adaptive policy ACL rules" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was created" - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "description": "When the adaptive policy ACL was last updated" - } - } - }, - "example": { - "aclId": "12345678", - "name": "Block sensitive web traffic", - "description": "Blocks sensitive web traffic", - "ipVersion": "ipv6", - "rules": [ - { - "policy": "deny", - "protocol": "tcp", - "srcPort": "1,33", - "dstPort": "22-30" - } - ], - "createdAt": "2021-05-19T17:08:25Z", - "updatedAt": "2021-05-19T17:11:54Z" - } - } - } - } - }, - "summary": "Returns the adaptive policy ACL information", - "tags": [ - "organizations", - "configure", - "adaptivePolicy", - "acls" - ] - }, - "put": { - "description": "Updates an adaptive policy ACL", - "operationId": "updateOrganizationAdaptivePolicyAcl", - "parameters": [ - { - "name": "organizationId", - "in": "path", - "description": "Organization ID", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "aclId", - "in": "path", - "description": "Acl ID", - "schema": { - "type": "string" - }, - "required": true - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Name of the adaptive policy ACL" - }, - "description": { - "type": "string", - "description": "Description of the adaptive policy ACL" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "enum": [ - "allow", - "deny" - ], - "description": "'allow' or 'deny' traffic specified by this rule." - }, - "protocol": { - "type": "string", - "enum": [ - "any", - "icmp", - "tcp", - "udp" - ], - "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." - }, - "srcPort": { - "type": "string", - "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." - }, - "dstPort": { - "type": "string", - "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." - } - }, - "required": [ - "policy", - "protocol" - ] - }, - "description": "An ordered array of the adaptive policy ACL rules. An empty array will clear the rules." - }, - "ipVersion": { - "type": "string", - "enum": [ - "any", - "ipv4", - "ipv6" - ], - "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" - } - }, - "example": { - "name": "Block sensitive web traffic", - "description": "Blocks sensitive web traffic", - "rules": [ - { - "policy": "deny", - "protocol": "tcp", - "srcPort": "1,33", - "dstPort": "22-30" - } - ], - "ipVersion": "ipv6" - } - } - } - }, - "required": false - }, - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "aclId": { - "type": "string", - "description": "ID of the adaptive policy ACL" - }, - "name": { - "type": "string", - "description": "Name of the adaptive policy ACL" - }, - "description": { - "type": "string", - "description": "Description of the adaptive policy ACL" - }, - "ipVersion": { - "type": "string", - "description": "IP version of adpative policy ACL" - }, - "rules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "policy": { - "type": "string", - "description": "'allow' or 'deny' traffic specified by this rule" - }, - "protocol": { - "type": "string", - "description": "The type of protocol" }, - "srcPort": { - "type": "string", - "description": "Source port" + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, - "dstPort": { - "type": "string", - "description": "Destination port" + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" } } }, @@ -95898,7 +95677,222 @@ "policy": "deny", "protocol": "tcp", "srcPort": "1,33", - "dstPort": "22-30" + "dstPort": "22-30", + "log": true, + "tcpEstablished": true + } + ], + "createdAt": "2021-05-19T17:08:25Z", + "updatedAt": "2021-05-19T17:11:54Z" + } + } + } + } + }, + "summary": "Returns the adaptive policy ACL information", + "tags": [ + "organizations", + "configure", + "adaptivePolicy", + "acls" + ] + }, + "put": { + "description": "Updates an adaptive policy ACL", + "operationId": "updateOrganizationAdaptivePolicyAcl", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "aclId", + "in": "path", + "description": "Acl ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the adaptive policy ACL" + }, + "description": { + "type": "string", + "description": "Description of the adaptive policy ACL" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "enum": [ + "allow", + "deny" + ], + "description": "'allow' or 'deny' traffic specified by this rule." + }, + "protocol": { + "type": "string", + "enum": [ + "any", + "icmp", + "tcp", + "udp" + ], + "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." + }, + "srcPort": { + "type": "string", + "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + }, + "dstPort": { + "type": "string", + "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" + } + }, + "required": [ + "policy", + "protocol" + ] + }, + "description": "An ordered array of the adaptive policy ACL rules. An empty array will clear the rules." + }, + "ipVersion": { + "type": "string", + "enum": [ + "any", + "ipv4", + "ipv6" + ], + "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" + } + }, + "example": { + "name": "Block sensitive web traffic", + "description": "Blocks sensitive web traffic", + "rules": [ + { + "policy": "deny", + "protocol": "tcp", + "srcPort": "1,33", + "dstPort": "22-30", + "log": true, + "tcpEstablished": true + } + ], + "ipVersion": "ipv6" + } + } + } + }, + "required": false + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "aclId": { + "type": "string", + "description": "ID of the adaptive policy ACL" + }, + "name": { + "type": "string", + "description": "Name of the adaptive policy ACL" + }, + "description": { + "type": "string", + "description": "Description of the adaptive policy ACL" + }, + "ipVersion": { + "type": "string", + "description": "IP version of adpative policy ACL" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "policy": { + "type": "string", + "description": "'allow' or 'deny' traffic specified by this rule" + }, + "protocol": { + "type": "string", + "description": "The type of protocol" + }, + "srcPort": { + "type": "string", + "description": "Source port" + }, + "dstPort": { + "type": "string", + "description": "Destination port" + }, + "log": { + "type": "boolean", + "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" + }, + "tcpEstablished": { + "type": "boolean", + "description": "If enabled, means TCP connection with this node must be established.\n" + } + } + }, + "description": "An ordered array of the adaptive policy ACL rules" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was created" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "When the adaptive policy ACL was last updated" + } + } + }, + "example": { + "aclId": "12345678", + "name": "Block sensitive web traffic", + "description": "Blocks sensitive web traffic", + "ipVersion": "ipv6", + "rules": [ + { + "policy": "deny", + "protocol": "tcp", + "srcPort": "1,33", + "dstPort": "22-30", + "log": true, + "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", @@ -102107,6 +102101,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -102129,8 +102124,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -102153,6 +102146,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -102184,6 +102178,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -102233,9 +102228,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -102715,6 +102708,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -102737,8 +102731,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -102761,6 +102753,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -102792,6 +102785,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -102841,9 +102835,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -103161,6 +103153,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -103183,8 +103176,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -103207,6 +103198,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -103238,6 +103230,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -103287,9 +103280,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -103656,6 +103647,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -103678,8 +103670,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -103702,6 +103692,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -103733,6 +103724,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -103782,9 +103774,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -104105,6 +104095,7 @@ "afc_height_empty", "afc_status_bad", "all_auto_vpn_peers_down", + "ap_became_repeater", "ap_noauth", "arp_failure", "asymmetry", @@ -104127,8 +104118,6 @@ "console_error_timeout", "country_mismatch", "crc_errors", - "crc_errors_error", - "crc_errors_warning", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", @@ -104151,6 +104140,7 @@ "high_cpu_mx", "high_interference", "high_memory_mx", + "high_temperature_mx", "http_acl_ipv6_conflict", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", @@ -104182,6 +104172,7 @@ "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", + "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", @@ -104231,9 +104222,7 @@ "stp_bpduguard_active", "stp_loopguard_active", "stp_rootguard_active", - "stp_tcn_error", "stp_tcn_errors", - "stp_tcn_warning", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switchport_allowed_vlans_missing", @@ -113236,6 +113225,289 @@ ] } }, + "/organizations/{organizationId}/devices/controller/migrations": { + "post": { + "description": "Migrate devices to another controller or management mode", + "operationId": "createOrganizationDevicesControllerMigration", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "serials": { + "type": "array", + "items": { + "type": "string" + }, + "description": "A list of Meraki Serials to migrate" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The controller or management mode to which the devices will be migrated" + } + }, + "example": { + "serials": [ + "QABC-DEFG-HIJK" + ], + "target": "wirelessController" + }, + "required": [ + "serials", + "target" + ] + } + } + }, + "required": true + }, + "responses": { + "201": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "The device serial" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The migration target destination" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The time at which a migration was created" + }, + "migratedAt": { + "type": "string", + "format": "date-time", + "description": "The time at which the device initiated migration" + } + } + } + }, + "example": [ + { + "serial": "QXYZ-DEFG-HIJK", + "target": "wirelessController", + "createdAt": "2020-10-21T02:00:00Z", + "migratedAt": "2020-10-21T03:00:00Z" + } + ] + } + } + } + }, + "summary": "Migrate devices to another controller or management mode", + "tags": [ + "organizations", + "configure", + "devices", + "controller", + "migrations" + ] + }, + "get": { + "description": "Retrieve device migration statuses in an organization", + "operationId": "getOrganizationDevicesControllerMigrations", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "serials", + "in": "query", + "description": "A list of Meraki Serials for which to retrieve migrations", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "networkIds", + "in": "query", + "description": "Filter device migrations by network IDs", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "target", + "in": "query", + "description": "Filter device migrations by target destination", + "schema": { + "type": "string", + "enum": [ + "wirelessController" + ] + } + }, + { + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", + "schema": { + "type": "integer" + } + }, + { + "name": "startingAfter", + "in": "query", + "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "endingBefore", + "in": "query", + "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "The device serial" + }, + "target": { + "type": "string", + "enum": [ + "wirelessController" + ], + "description": "The migration target destination" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "The time at which a migration was created" + }, + "migratedAt": { + "type": "string", + "format": "date-time", + "description": "The time at which the device initiated migration" + } + } + }, + "description": "List of migrations for the specified devices" + }, + "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": [ + { + "serial": "QXYZ-DEFG-HIJK", + "target": "wirelessController", + "createdAt": "2020-10-21T02:00:00Z", + "migratedAt": "2020-10-21T03:00:00Z" + } + ], + "meta": { + "counts": { + "items": { + "total": 10, + "remaining": 0 + } + } + } + } + } + }, + "headers": { + "Link": { + "schema": { + "type": "string" + }, + "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." + } + } + } + }, + "summary": "Retrieve device migration statuses in an organization", + "tags": [ + "organizations", + "configure", + "devices", + "controller", + "migrations" + ] + } + }, "/organizations/{organizationId}/devices/details/bulkUpdate": { "post": { "description": "Updating device details (currently only used for Catalyst devices)", @@ -129885,112 +130157,447 @@ "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": { + "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." + } + } + } + }, + "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", - "enum": [ - "Connected", - "Disabled", - "Disconnected" - ], - "description": "The current connection status of the port." - }, - "isUplink": { - "type": "boolean", - "description": "Whether the port is the switch's uplink." + "description": "Timestamp for most recent discovery info on this port." }, - "errors": { + "cdp": { "type": "array", "items": { - "type": "string" + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "CDP RFC/official name of TLV" + }, + "value": { + "type": "string", + "description": "Value of the named TLV." + } + } }, - "description": "All errors present on the port." + "description": "The Cisco Discovery Protocol (CDP) information of the connected device." }, - "warnings": { + "lldp": { "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" + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "LLDP RFC/official name of TLV" }, - "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." + "value": { + "type": "string", + "description": "Value of the named TLV." + } } }, - "description": "The Secure Port status of the port." + "description": "The Link Layer Discovery Protocol (LLDP) information of the connected device." } } }, - "description": "The statuses of the ports on the switch." + "description": "Ports belonging to the switch with LLDP/CDP discovery info." } } }, @@ -130038,32 +130645,19 @@ "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" + "lastUpdatedAt": "ISO8061Z", + "cdp": [ + { + "name": "System name", + "value": "MS350-24X - Test" + } ], - "speed": "10 Gbps", - "duplex": "full", - "spanningTree": { - "statuses": [ - "Learning" - ] - }, - "poe": { - "isAllocated": false - }, - "securePort": { - "active": true, - "authenticationStatus": "Authentication in progress" - } + "lldp": [ + { + "name": "System name", + "value": "MS350-24X - Test" + } + ] } ] } @@ -130089,20 +130683,21 @@ } } }, - "summary": "List the switchports in an organization", + "summary": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", "tags": [ "switch", "monitor", "ports", - "statuses", - "bySwitch" + "topology", + "discovery", + "byDevice" ] } }, - "/organizations/{organizationId}/switch/ports/topology/discovery/byDevice": { + "/organizations/{organizationId}/switch/ports/usage/history/byDevice/byInterval": { "get": { - "description": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", - "operationId": "getOrganizationSwitchPortsTopologyDiscoveryByDevice", + "description": "List the historical usage and traffic data of switchports in an organization.", + "operationId": "getOrganizationSwitchPortsUsageHistoryByDeviceByInterval", "parameters": [ { "name": "organizationId", @@ -130121,20 +130716,36 @@ "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 parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.", + "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 - 20. Default is 10.", + "description": "The number of entries per page returned. Acceptable range is 3 - 50. Default is 10.", "schema": { "type": "integer" } @@ -130285,47 +130896,96 @@ "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": { + "intervals": { "type": "array", "items": { "type": "object", "properties": { - "name": { + "startTs": { "type": "string", - "description": "CDP RFC/official name of TLV" + "format": "date-time", + "description": "The starting timestamp of the given interval." }, - "value": { + "endTs": { "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" + "format": "date-time", + "description": "The end timestamp of the given interval." }, - "value": { - "type": "string", - "description": "Value of the named TLV." + "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": "The Link Layer Discovery Protocol (LLDP) information of the connected device." + "description": "An array of intervals for a port with bandwidth, traffic, and power usage data." } } }, - "description": "Ports belonging to the switch with LLDP/CDP discovery info." + "description": "The number of ports on the switch with usage data." } } }, @@ -130373,17 +131033,29 @@ "ports": [ { "portId": "1", - "lastUpdatedAt": "ISO8061Z", - "cdp": [ - { - "name": "System name", - "value": "MS350-24X - Test" - } - ], - "lldp": [ + "intervals": [ { - "name": "System name", - "value": "MS350-24X - Test" + "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 + } + } } ] } @@ -130411,14 +131083,15 @@ } } }, - "summary": "List most recently seen LLDP/CDP discovery and topology information per switch port in an organization.", + "summary": "List the historical usage and traffic data of switchports in an organization.", "tags": [ "switch", "monitor", "ports", - "topology", - "discovery", - "byDevice" + "usage", + "history", + "byDevice", + "byInterval" ] } }, @@ -138167,6 +138840,9 @@ { "name": "contentFiltering" }, + { + "name": "controller" + }, { "name": "coterm" }, @@ -138413,6 +139089,9 @@ { "name": "meshStatuses" }, + { + "name": "migrations" + }, { "name": "models" }, @@ -138856,6 +139535,12 @@ } ], "x-batchable-actions": [ + { + "group": "", + "summary": "Migrate devices to another controller or management mode", + "resource": "/organizations/{organizationId}/devices/controller/migrations", + "operation": "mr/actions/migrate" + }, { "group": "Adaptive policy", "summary": "Add an Adaptive Policy",