From 41fb10741ec108adc518dae5c8a342de11103fad Mon Sep 17 00:00:00 2001 From: mdurban Date: Wed, 6 Nov 2024 12:06:32 +0000 Subject: [PATCH] API version v1.52.0-beta.0 --- openapi/spec2.json | 2219 ++++++++++++++++++++++++++++++++++----- openapi/spec3.json | 2449 ++++++++++++++++++++++++++++++++++++++------ 2 files changed, 4089 insertions(+), 579 deletions(-) diff --git a/openapi/spec2.json b/openapi/spec2.json index 234ee47..8209d39 100644 --- a/openapi/spec2.json +++ b/openapi/spec2.json @@ -1,9 +1,9 @@ { "swagger": "2.0", "info": { - "version": "1.51.1-beta.2", + "version": "1.52.0-beta.0", "title": "Meraki Dashboard API", - "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 30 October, 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: 06 November, 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", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" @@ -11498,6 +11498,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } } @@ -11564,6 +11578,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } ] @@ -12766,6 +12784,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -12830,6 +12862,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -13290,6 +13326,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -13354,6 +13404,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -20166,71 +20220,10 @@ ] } }, - "/networks/{networkId}/appliance/firewall/oneToManyNatRules": { - "get": { - "description": "Return the 1:Many NAT mapping rules for an MX network", - "operationId": "getNetworkApplianceFirewallOneToManyNatRules", - "parameters": [ - { - "name": "networkId", - "in": "path", - "description": "Network ID", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object" - }, - "examples": { - "application/json": { - "rules": [ - { - "publicIp": "146.11.11.13", - "uplink": "internet1", - "portRules": [ - { - "name": "Rule 1", - "protocol": "tcp", - "publicPort": "9443", - "localIp": "192.168.128.1", - "localPort": "443", - "allowedIps": [ - "any" - ] - }, - { - "name": "Rule 2", - "protocol": "tcp", - "publicPort": "8080", - "localIp": "192.168.128.1", - "localPort": "80", - "allowedIps": [ - "10.82.110.0/24", - "10.82.111.0/24" - ] - } - ] - } - ] - } - } - } - }, - "summary": "Return the 1:Many NAT mapping rules for an MX network", - "tags": [ - "appliance", - "configure", - "firewall", - "oneToManyNatRules" - ] - }, + "/networks/{networkId}/appliance/firewall/multicastForwarding": { "put": { - "description": "Set the 1:Many NAT mapping rules for an MX network", - "operationId": "updateNetworkApplianceFirewallOneToManyNatRules", + "description": "Update static multicast forward rules for a network", + "operationId": "updateNetworkApplianceFirewallMulticastForwarding", "parameters": [ { "name": "networkId", @@ -20240,7 +20233,7 @@ "required": true }, { - "name": "updateNetworkApplianceFirewallOneToManyNatRules", + "name": "updateNetworkApplianceFirewallMulticastForwarding", "in": "body", "schema": { "type": "object", @@ -20250,95 +20243,38 @@ "items": { "type": "object", "properties": { - "publicIp": { + "description": { "type": "string", - "description": "The IP address that will be used to access the internal resource from the WAN" + "description": "Forwarding rule description." }, - "uplink": { + "address": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "IP address" }, - "portRules": { + "vlanIds": { "type": "array", "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "A description of the rule" - }, - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "description": "'tcp' or 'udp'" - }, - "publicPort": { - "type": "string", - "description": "Destination port of the traffic that is arriving on the WAN" - }, - "localIp": { - "type": "string", - "description": "Local IP address to which traffic will be forwarded" - }, - "localPort": { - "type": "string", - "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" - }, - "allowedIps": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" - } - } + "type": "string" }, - "description": "An array of associated forwarding rules" + "description": "List of VLAN IDs" } }, "required": [ - "publicIp", - "uplink", - "portRules" + "description", + "address", + "vlanIds" ] }, - "description": "An array of 1:Many nat rules" + "description": "Static multicast forwarding rules. Pass an empty array to clear all rules." } }, "example": { "rules": [ { - "publicIp": "146.11.11.13", - "uplink": "internet1", - "portRules": [ - { - "name": "Rule 1", - "protocol": "tcp", - "publicPort": "9443", - "localIp": "192.168.128.1", - "localPort": "443", - "allowedIps": [ - "any" - ] - }, - { - "name": "Rule 2", - "protocol": "tcp", - "publicPort": "8080", - "localIp": "192.168.128.1", - "localPort": "80", - "allowedIps": [ - "10.82.110.0/24", - "10.82.111.0/24" - ] - } + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" ] } ] @@ -20354,36 +20290,73 @@ "200": { "description": "Successful operation", "schema": { - "type": "object" + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the network whose multicast forwarding settings are returned." + }, + "name": { + "type": "string", + "description": "Name of the network whose multicast forwarding settings are returned." + } + }, + "required": [ + "id", + "name" + ], + "description": "Network details" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Forwarding rule description." + }, + "address": { + "type": "string", + "description": "IP address" + }, + "vlanIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VLAN IDs" + } + }, + "required": [ + "description", + "address", + "vlanIds" + ] + }, + "description": "Static multicast forwarding rules." + } + }, + "required": [ + "network", + "rules" + ] }, "examples": { "application/json": { + "network": { + "id": "N_24329156", + "name": "Main Office" + }, "rules": [ { - "publicIp": "146.11.11.13", - "uplink": "internet1", - "portRules": [ - { - "name": "Rule 1", - "protocol": "tcp", - "publicPort": "9443", - "localIp": "192.168.128.1", - "localPort": "443", - "allowedIps": [ - "any" - ] - }, - { - "name": "Rule 2", - "protocol": "tcp", - "publicPort": "8080", - "localIp": "192.168.128.1", - "localPort": "80", - "allowedIps": [ - "10.82.110.0/24", - "10.82.111.0/24" - ] - } + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" ] } ] @@ -20391,19 +20364,20 @@ } } }, - "summary": "Set the 1:Many NAT mapping rules for an MX network", + "summary": "Update static multicast forward rules for a network", "tags": [ "appliance", "configure", "firewall", - "oneToManyNatRules" - ] + "multicastForwarding" + ], + "x-release-stage": "beta" } }, - "/networks/{networkId}/appliance/firewall/oneToOneNatRules": { + "/networks/{networkId}/appliance/firewall/oneToManyNatRules": { "get": { - "description": "Return the 1:1 NAT mapping rules for an MX network", - "operationId": "getNetworkApplianceFirewallOneToOneNatRules", + "description": "Return the 1:Many NAT mapping rules for an MX network", + "operationId": "getNetworkApplianceFirewallOneToManyNatRules", "parameters": [ { "name": "networkId", @@ -20423,29 +20397,28 @@ "application/json": { "rules": [ { - "name": "Service behind NAT", - "lanIp": "192.168.128.22", - "publicIp": "146.12.3.33", + "publicIp": "146.11.11.13", "uplink": "internet1", - "allowedInbound": [ + "portRules": [ { + "name": "Rule 1", "protocol": "tcp", - "destinationPorts": [ - "80" - ], + "publicPort": "9443", + "localIp": "192.168.128.1", + "localPort": "443", "allowedIps": [ - "10.82.112.0/24", - "10.82.0.0/16" + "any" ] }, { - "protocol": "udp", - "destinationPorts": [ - "8080" - ], + "name": "Rule 2", + "protocol": "tcp", + "publicPort": "8080", + "localIp": "192.168.128.1", + "localPort": "80", "allowedIps": [ - "10.81.110.5", - "10.81.0.0/16" + "10.82.110.0/24", + "10.82.111.0/24" ] } ] @@ -20455,17 +20428,17 @@ } } }, - "summary": "Return the 1:1 NAT mapping rules for an MX network", + "summary": "Return the 1:Many NAT mapping rules for an MX network", "tags": [ "appliance", "configure", "firewall", - "oneToOneNatRules" + "oneToManyNatRules" ] }, "put": { - "description": "Set the 1:1 NAT mapping rules for an MX network", - "operationId": "updateNetworkApplianceFirewallOneToOneNatRules", + "description": "Set the 1:Many NAT mapping rules for an MX network", + "operationId": "updateNetworkApplianceFirewallOneToManyNatRules", "parameters": [ { "name": "networkId", @@ -20475,7 +20448,7 @@ "required": true }, { - "name": "updateNetworkApplianceFirewallOneToOneNatRules", + "name": "updateNetworkApplianceFirewallOneToManyNatRules", "in": "body", "schema": { "type": "object", @@ -20485,18 +20458,10 @@ "items": { "type": "object", "properties": { - "name": { - "type": "string", - "description": "A descriptive name for the rule" - }, "publicIp": { "type": "string", "description": "The IP address that will be used to access the internal resource from the WAN" }, - "lanIp": { - "type": "string", - "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" - }, "uplink": { "type": "string", "enum": [ @@ -20505,73 +20470,316 @@ ], "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" }, - "allowedInbound": { + "portRules": { "type": "array", "items": { "type": "object", "properties": { + "name": { + "type": "string", + "description": "A description of the rule" + }, "protocol": { "type": "string", "enum": [ - "any", - "icmp-ping", "tcp", "udp" ], - "description": "Either of the following: 'tcp', 'udp', 'icmp-ping' or 'any'" + "description": "'tcp' or 'udp'" }, - "destinationPorts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of ports or port ranges that will be forwarded to the host on the LAN" + "publicPort": { + "type": "string", + "description": "Destination port of the traffic that is arriving on the WAN" + }, + "localIp": { + "type": "string", + "description": "Local IP address to which traffic will be forwarded" + }, + "localPort": { + "type": "string", + "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" }, "allowedIps": { "type": "array", "items": { "type": "string" }, - "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges, or 'any'" + "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" } } }, - "description": "The ports this mapping will provide access on, and the remote IPs that will be allowed access to the resource" + "description": "An array of associated forwarding rules" } }, "required": [ - "lanIp" + "publicIp", + "uplink", + "portRules" ] }, - "description": "An array of 1:1 nat rules" + "description": "An array of 1:Many nat rules" } }, "example": { "rules": [ { - "name": "Service behind NAT", - "lanIp": "192.168.128.22", - "publicIp": "146.12.3.33", + "publicIp": "146.11.11.13", "uplink": "internet1", - "allowedInbound": [ + "portRules": [ { + "name": "Rule 1", "protocol": "tcp", - "destinationPorts": [ - "80" - ], + "publicPort": "9443", + "localIp": "192.168.128.1", + "localPort": "443", "allowedIps": [ - "10.82.112.0/24", - "10.82.0.0/16" + "any" ] }, { - "protocol": "udp", - "destinationPorts": [ - "8080" - ], + "name": "Rule 2", + "protocol": "tcp", + "publicPort": "8080", + "localIp": "192.168.128.1", + "localPort": "80", "allowedIps": [ - "10.81.110.5", - "10.81.0.0/16" + "10.82.110.0/24", + "10.82.111.0/24" + ] + } + ] + } + ] + }, + "required": [ + "rules" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object" + }, + "examples": { + "application/json": { + "rules": [ + { + "publicIp": "146.11.11.13", + "uplink": "internet1", + "portRules": [ + { + "name": "Rule 1", + "protocol": "tcp", + "publicPort": "9443", + "localIp": "192.168.128.1", + "localPort": "443", + "allowedIps": [ + "any" + ] + }, + { + "name": "Rule 2", + "protocol": "tcp", + "publicPort": "8080", + "localIp": "192.168.128.1", + "localPort": "80", + "allowedIps": [ + "10.82.110.0/24", + "10.82.111.0/24" + ] + } + ] + } + ] + } + } + } + }, + "summary": "Set the 1:Many NAT mapping rules for an MX network", + "tags": [ + "appliance", + "configure", + "firewall", + "oneToManyNatRules" + ] + } + }, + "/networks/{networkId}/appliance/firewall/oneToOneNatRules": { + "get": { + "description": "Return the 1:1 NAT mapping rules for an MX network", + "operationId": "getNetworkApplianceFirewallOneToOneNatRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object" + }, + "examples": { + "application/json": { + "rules": [ + { + "name": "Service behind NAT", + "lanIp": "192.168.128.22", + "publicIp": "146.12.3.33", + "uplink": "internet1", + "allowedInbound": [ + { + "protocol": "tcp", + "destinationPorts": [ + "80" + ], + "allowedIps": [ + "10.82.112.0/24", + "10.82.0.0/16" + ] + }, + { + "protocol": "udp", + "destinationPorts": [ + "8080" + ], + "allowedIps": [ + "10.81.110.5", + "10.81.0.0/16" + ] + } + ] + } + ] + } + } + } + }, + "summary": "Return the 1:1 NAT mapping rules for an MX network", + "tags": [ + "appliance", + "configure", + "firewall", + "oneToOneNatRules" + ] + }, + "put": { + "description": "Set the 1:1 NAT mapping rules for an MX network", + "operationId": "updateNetworkApplianceFirewallOneToOneNatRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "updateNetworkApplianceFirewallOneToOneNatRules", + "in": "body", + "schema": { + "type": "object", + "properties": { + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A descriptive name for the rule" + }, + "publicIp": { + "type": "string", + "description": "The IP address that will be used to access the internal resource from the WAN" + }, + "lanIp": { + "type": "string", + "description": "The IP address of the server or device that hosts the internal resource that you wish to make available on the WAN" + }, + "uplink": { + "type": "string", + "enum": [ + "internet1", + "internet2" + ], + "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + }, + "allowedInbound": { + "type": "array", + "items": { + "type": "object", + "properties": { + "protocol": { + "type": "string", + "enum": [ + "any", + "icmp-ping", + "tcp", + "udp" + ], + "description": "Either of the following: 'tcp', 'udp', 'icmp-ping' or 'any'" + }, + "destinationPorts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of ports or port ranges that will be forwarded to the host on the LAN" + }, + "allowedIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of ranges of WAN IP addresses that are allowed to make inbound connections on the specified ports or port ranges, or 'any'" + } + } + }, + "description": "The ports this mapping will provide access on, and the remote IPs that will be allowed access to the resource" + } + }, + "required": [ + "lanIp" + ] + }, + "description": "An array of 1:1 nat rules" + } + }, + "example": { + "rules": [ + { + "name": "Service behind NAT", + "lanIp": "192.168.128.22", + "publicIp": "146.12.3.33", + "uplink": "internet1", + "allowedInbound": [ + { + "protocol": "tcp", + "destinationPorts": [ + "80" + ], + "allowedIps": [ + "10.82.112.0/24", + "10.82.0.0/16" + ] + }, + { + "protocol": "udp", + "destinationPorts": [ + "8080" + ], + "allowedIps": [ + "10.81.110.5", + "10.81.0.0/16" ] } ] @@ -30179,10 +30387,42 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } } }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "description": "Configuration of subnet features", + "x-release-stage": "beta" } } }, @@ -30198,9 +30438,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } } } } @@ -30271,6 +30520,21 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } }, "required": [ @@ -30278,6 +30542,23 @@ ] }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "x-release-stage": "beta", + "description": "Configuration of subnet features" } }, "example": { @@ -30291,9 +30572,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } }, "required": [ "mode" @@ -30341,10 +30631,42 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } } }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "description": "Configuration of subnet features", + "x-release-stage": "beta" } } }, @@ -30360,9 +30682,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } } } } @@ -35635,10 +35966,9 @@ }, "summary": "Return the policy assigned to a client on the network", "tags": [ - "networks", + "policy", "configure", - "clients", - "policy" + "clients" ] }, "put": { @@ -35716,10 +36046,9 @@ }, "summary": "Update the policy assigned to a client on the network", "tags": [ - "networks", + "policy", "configure", - "clients", - "policy" + "clients" ] } }, @@ -44165,6 +44494,578 @@ ] } }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/batch": { + "post": { + "description": "Schedule auto locate jobs for one or more floor plans in a network", + "operationId": "batchNetworkFloorPlansAutoLocateJobs", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "batchNetworkFloorPlansAutoLocateJobs", + "in": "body", + "schema": { + "type": "object", + "properties": { + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "floorPlanId": { + "type": "string", + "description": "The ID of the floor plan to run auto locate for" + }, + "refresh": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The types of location data that should be refreshed for this job. The list must either contain both 'gnss' and 'ranging' or be empty, as we currently only support refreshing both 'gnss' and 'ranging', or neither." + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Timestamp in ISO8601 format which indicates when the auto locate job should be run. If omitted, the auto locate job will start immediately." + } + }, + "required": [ + "floorPlanId" + ] + }, + "description": "The list of auto locate jobs to be scheduled. Up to 100 jobs can be provided in a request." + } + }, + "example": { + "jobs": [ + { + "floorPlanId": "g_2176982374", + "refresh": [ + "gnss", + "ranging" + ], + "scheduledAt": "2018-02-11T00:00:00Z" + } + ] + }, + "required": [ + "jobs" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Auto locate job ID" + }, + "networkId": { + "type": "string", + "description": "Network ID" + }, + "floorPlanId": { + "type": "string", + "description": "Floor plan ID" + }, + "status": { + "type": "string", + "description": "Auto locate job status. Possible values: 'scheduled', 'in progress', 'canceling', 'error', 'finished', 'published', 'canceled'" + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Scheduled start time for auto locate job" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Approximate auto locate job completion percentage" + } + }, + "description": "Auto locate job progress information" + }, + "ranging": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Ranging status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'no neighbors'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the ranging process" + } + }, + "description": "Progress information for the ranging process" + } + }, + "description": "Ranging status and progress information" + }, + "gnss": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "GNSS status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'not applicable', 'canceled'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the GNSS acquisition process" + } + }, + "description": "Progress information for the GNSS acquisition process" + } + }, + "description": "GNSS (e.g. GPS) status and progress information" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "The step of the auto locate process when the error occurred. Possible values: 'gnss', 'ranging', 'positioning'" + }, + "type": { + "type": "string", + "description": "The type of error that occurred. Possible values: 'failure', 'no neighbors', 'missing anchors', 'wrong anchors', 'calculation failure', 'scheduling failure'" + } + } + }, + "description": "List of errors that occurred during a failed run of auto locate" + } + } + }, + "description": "The newly created jobs" + } + } + }, + "examples": { + "application/json": { + "jobs": [ + { + "id": "1234", + "networkId": "N_24329156", + "floorPlanId": "g_2176982374", + "status": "error", + "scheduledAt": "2018-02-11T00:00:00Z", + "completed": { + "percentage": 50 + }, + "ranging": { + "status": "in progress", + "completed": { + "percentage": 24 + } + }, + "gnss": { + "status": "in progress", + "completed": { + "percentage": 4 + } + }, + "errors": [ + { + "source": "ranging", + "type": "missing anchors" + } + ] + } + ] + } + } + } + }, + "summary": "Schedule auto locate jobs for one or more floor plans in a network", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/cancel": { + "post": { + "description": "Cancel a scheduled or running auto locate job", + "operationId": "cancelNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "type": "string", + "required": true + } + ], + "responses": { + "204": { + "description": "Successful operation" + } + }, + "summary": "Cancel a scheduled or running auto locate job", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/publish": { + "post": { + "description": "Update the status of a finished auto locate job to be published, and update device locations", + "operationId": "publishNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "type": "string", + "required": true + }, + { + "name": "publishNetworkFloorPlansAutoLocateJob", + "in": "body", + "schema": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial for device to publish position for" + }, + "lat": { + "type": "number", + "format": "float", + "minimum": -90, + "maximum": 90, + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "minimum": -180, + "maximum": 180, + "description": "Longitude" + }, + "autoLocate": { + "type": "object", + "properties": { + "isAnchor": { + "type": "boolean", + "description": "Whether or not this device's location should be saved as a user-defined anchor" + } + }, + "description": "The auto locate position for this device" + } + }, + "required": [ + "serial", + "lat", + "lng" + ] + }, + "description": "The list of devices to publish positions for" + } + }, + "example": { + "devices": [ + { + "serial": "Q234-ABCD-5678", + "lat": 37.4180951010362, + "lng": -122.098531723022, + "autoLocate": { + "isAnchor": true + } + } + ] + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to publish auto locate job" + } + } + }, + "examples": { + "application/json": { + "success": true + } + } + } + }, + "summary": "Update the status of a finished auto locate job to be published, and update device locations", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/recalculate": { + "post": { + "description": "Trigger auto locate recalculation for a job, and optionally set anchors", + "operationId": "recalculateNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "type": "string", + "required": true + }, + { + "name": "recalculateNetworkFloorPlansAutoLocateJob", + "in": "body", + "schema": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial for device to update" + }, + "autoLocate": { + "type": "object", + "properties": { + "isAnchor": { + "type": "boolean", + "description": "Whether or not this location should be saved as a user-defined anchor" + }, + "lat": { + "type": "number", + "format": "float", + "minimum": -90, + "maximum": 90, + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "minimum": -180, + "maximum": 180, + "description": "Longitude" + } + }, + "required": [ + "isAnchor" + ], + "description": "The auto locate position for this device" + } + }, + "required": [ + "serial", + "autoLocate" + ] + }, + "description": "The list of devices to update anchor positions for" + } + }, + "example": { + "devices": [ + { + "serial": "Q234-ABCD-5678", + "autoLocate": { + "isAnchor": true, + "lat": 37.4180951010362, + "lng": -122.098531723022 + } + } + ] + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to trigger auto locate recalculation" + } + } + }, + "examples": { + "application/json": { + "success": true + } + } + } + }, + "summary": "Trigger auto locate recalculation for a job, and optionally set anchors", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/devices/batchUpdate": { + "post": { + "description": "Update floorplan assignments for a batch of devices", + "operationId": "batchNetworkFloorPlansDevicesUpdate", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "type": "string", + "required": true + }, + { + "name": "batchNetworkFloorPlansDevicesUpdate", + "in": "body", + "schema": { + "type": "object", + "properties": { + "assignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial of the device to change the floor plan assignment for" + }, + "floorPlan": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the floor plan to assign the device to, or null to unassign the device from its floor plan" + } + }, + "required": [ + "id" + ], + "description": "Floorplan to be assigned or unassigned" + } + }, + "required": [ + "serial", + "floorPlan" + ] + }, + "description": "List of floorplan assignments to update. Up to 100 floor plan assignments can be provided in a request." + } + }, + "example": { + "assignments": [ + { + "serial": "Q234-ABCD-5678", + "floorPlan": { + "id": "g_2176982374" + } + } + ] + }, + "required": [ + "assignments" + ] + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to update device floorplan assignments" + } + } + }, + "examples": { + "application/json": { + "success": true + } + } + } + }, + "summary": "Update floorplan assignments for a batch of devices", + "tags": [ + "networks", + "configure", + "floorPlans", + "devices" + ] + } + }, "/networks/{networkId}/floorPlans/{floorPlanId}": { "get": { "description": "Find a floor plan by ID", @@ -102462,6 +103363,154 @@ "x-release-stage": "beta" } }, + "/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork": { + "get": { + "description": "List Static Multicasting forwarding settings for MX networks", + "operationId": "getOrganizationApplianceFirewallMulticastForwardingByNetwork", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000." + }, + { + "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": "array", + "items": { + "type": "string" + }, + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter the results by network IDs" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the network whose multicast forwarding settings are returned." + }, + "name": { + "type": "string", + "description": "Name of the network whose multicast forwarding settings are returned." + } + }, + "required": [ + "id", + "name" + ], + "description": "Network details" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Forwarding rule description." + }, + "address": { + "type": "string", + "description": "IP address" + }, + "vlanIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VLAN IDs" + } + }, + "required": [ + "description", + "address", + "vlanIds" + ] + }, + "description": "Static multicast forwarding rules." + } + }, + "required": [ + "network", + "rules" + ] + }, + "description": "Static multicast forwarding settings by network" + } + } + }, + "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": [ + { + "network": { + "id": "N_24329156", + "name": "Main Office" + }, + "rules": [ + { + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" + ] + } + ] + } + ] + } + } + } + }, + "summary": "List Static Multicasting forwarding settings for MX networks", + "tags": [ + "appliance", + "configure", + "firewall", + "multicastForwarding", + "byNetwork" + ], + "x-release-stage": "beta" + } + }, "/organizations/{organizationId}/appliance/sdwan/internetPolicies": { "get": { "description": "Get the SDWAN internet traffic preferences for an MX network", @@ -105073,6 +106122,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -105113,6 +106163,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -105637,6 +106688,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -105677,6 +106729,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -106039,6 +107092,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -106079,6 +107133,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -106488,6 +107543,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -106528,6 +107584,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -106895,6 +107952,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -106935,6 +107993,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -115926,6 +116985,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } } @@ -115986,6 +117059,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } ] @@ -116601,6 +117678,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -116659,6 +117750,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -117103,6 +118198,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -117161,6 +118270,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -118818,10 +119931,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "failed", + "status": "completed", "errorMessage": "Some error message", - "outputType": "upload_to_cloud", - "captureSource": "proactive", + "outputType": "pcap", + "captureSource": "scheduled", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -119081,10 +120194,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "failed", + "status": "completed", "errorMessage": "Some error message", - "outputType": "upload_to_cloud", - "captureSource": "proactive", + "outputType": "pcap", + "captureSource": "scheduled", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -119413,10 +120526,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "failed", + "status": "completed", "errorMessage": "Some error message", - "outputType": "upload_to_cloud", - "captureSource": "proactive", + "outputType": "pcap", + "captureSource": "scheduled", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -121963,6 +123076,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -121975,7 +123092,8 @@ "appliance" ], "name": "Test network", - "enabled": true + "enabled": true, + "eligible": true } ] } @@ -122081,6 +123199,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -122093,7 +123215,8 @@ "appliance" ], "name": "Test network", - "enabled": false + "enabled": false, + "eligible": true } ] } @@ -122199,6 +123322,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -122211,7 +123338,8 @@ "appliance" ], "name": "Test network", - "enabled": true + "enabled": true, + "eligible": true } ] } @@ -122671,6 +123799,538 @@ ] } }, + "/organizations/{organizationId}/floorPlans/autoLocate/devices": { + "get": { + "description": "List auto locate details for each device in your organization", + "operationId": "getOrganizationFloorPlansAutoLocateDevices", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000." + }, + { + "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": "array", + "items": { + "type": "string" + }, + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter devices by one or more network IDs" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "floorPlanIds", + "in": "query", + "description": "Optional parameter to filter devices by one or more floorplan IDs" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Device Name" + }, + "serial": { + "type": "string", + "description": "Device Serial Number" + }, + "mac": { + "type": "string", + "description": "MAC Address" + }, + "model": { + "type": "string", + "description": "Model" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags" + }, + "status": { + "type": "string", + "description": "Device Status" + }, + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID for the network containing this device" + } + }, + "description": "Network info" + }, + "floorPlan": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Floor plan ID" + }, + "status": { + "type": "string", + "description": "Floor plan name" + } + }, + "description": "The assigned floor plan for this device" + }, + "lat": { + "type": "number", + "format": "float", + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "description": "Longitude" + }, + "autoLocate": { + "type": "object", + "properties": { + "lat": { + "type": "number", + "format": "float", + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "description": "Longitude" + } + }, + "description": "The auto locate position for this device" + }, + "type": { + "type": "string", + "description": "The type of auto locate position. Possible values: 'user', 'gnss', and 'calculated'" + }, + "isAnchor": { + "type": "boolean", + "description": "Whether or not this auto locate position is an anchor" + } + } + }, + "description": "Items in the paginated dataset" + }, + "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": "My AP", + "serial": "Q234-ABCD-5678", + "mac": "00:11:22:33:44:55", + "model": "MR34", + "tags": [ + "tag1", + "tag2" + ], + "status": "online", + "network": { + "id": "N_24329156" + }, + "floorPlan": { + "id": "g_2176982374", + "status": "My floor plan" + }, + "lat": 37.4180951010362, + "lng": -122.098531723022, + "autoLocate": { + "lat": 13.23454243, + "lng": 18.12938123 + }, + "type": "user", + "isAnchor": true + } + ], + "meta": { + "counts": { + "items": { + "total": 50, + "remaining": 100 + } + } + } + } + ] + } + } + }, + "summary": "List auto locate details for each device in your organization", + "tags": [ + "organizations", + "configure", + "floorPlans", + "autoLocate", + "devices" + ] + } + }, + "/organizations/{organizationId}/floorPlans/autoLocate/statuses": { + "get": { + "description": "List the status of auto locate for each floorplan in your organization", + "operationId": "getOrganizationFloorPlansAutoLocateStatuses", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "type": "string", + "required": true + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000." + }, + { + "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": "array", + "items": { + "type": "string" + }, + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter floorplans by one or more network IDs" + }, + { + "type": "array", + "items": { + "type": "string" + }, + "name": "floorPlanIds", + "in": "query", + "description": "Optional parameter to filter floorplans by one or more floorplan IDs" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID for the network containing the floorplan" + } + }, + "description": "Network info" + }, + "floorPlanId": { + "type": "string", + "description": "Floor plan ID" + }, + "name": { + "type": "string", + "description": "Floor plan name" + }, + "counts": { + "type": "object", + "properties": { + "devices": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of devices that will participate if an auto locate job is started" + } + }, + "description": "Device counts for this floor plan" + } + }, + "description": "Counts for this floor plan" + }, + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Auto locate job ID" + }, + "status": { + "type": "string", + "description": "Auto locate job status. Possible values: 'scheduled', 'in progress', 'canceling', 'error', 'finished', 'published', 'canceled'" + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Scheduled start time for auto locate job" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Approximate auto locate job completion percentage" + } + }, + "description": "Auto locate job progress information" + }, + "ranging": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Ranging status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'no neighbors'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the ranging process" + } + }, + "description": "Progress information for the ranging process" + } + }, + "description": "Ranging status and progress information" + }, + "gnss": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "GNSS status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'not applicable', 'canceled'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the GNSS acquisition process" + } + }, + "description": "Progress information for the GNSS acquisition process" + } + }, + "description": "GNSS (e.g. GPS) status and progress information" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "The step of the auto locate process when the error occurred. Possible values: 'gnss', 'ranging', 'positioning'" + }, + "type": { + "type": "string", + "description": "The type of error that occurred. Possible values: 'failure', 'no neighbors', 'missing anchors', 'wrong anchors', 'calculation failure', 'scheduling failure'" + } + } + }, + "description": "List of errors that occurred during a failed run of auto locate" + } + } + }, + "description": "The most recent job for this floor plan" + } + } + }, + "description": "Items in the paginated dataset" + }, + "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": [ + { + "network": { + "id": "N_24329156" + }, + "floorPlanId": "g_2176982374", + "name": "My Floorplan", + "counts": { + "devices": { + "total": 120 + } + }, + "jobs": [ + { + "id": "1234", + "status": "error", + "scheduledAt": "2018-02-11T00:00:00Z", + "completed": { + "percentage": 50 + }, + "ranging": { + "status": "in progress", + "completed": { + "percentage": 24 + } + }, + "gnss": { + "status": "in progress", + "completed": { + "percentage": 4 + } + }, + "errors": [ + { + "source": "ranging", + "type": "missing anchors" + } + ] + } + ] + } + ], + "meta": { + "counts": { + "items": { + "total": 50, + "remaining": 100 + } + } + } + } + ] + } + } + }, + "summary": "List the status of auto locate for each floorplan in your organization", + "tags": [ + "organizations", + "configure", + "floorPlans", + "autoLocate", + "statuses" + ] + } + }, "/organizations/{organizationId}/insight/applications": { "get": { "description": "List all Insight tracked applications", @@ -141710,6 +143370,12 @@ "in": "query", "description": "Returns the list of static switchports that are assgined to the switchport profile" }, + { + "type": "string", + "name": "searchQuery", + "in": "query", + "description": "Optional parameter to filter the result set by the search query" + }, { "type": "integer", "name": "perPage", @@ -156863,6 +158529,9 @@ { "name": "wirelessController" }, + { + "name": "policy" + }, { "name": "accessControlLists" }, @@ -156959,6 +158628,9 @@ { "name": "authenticationToken" }, + { + "name": "autoLocate" + }, { "name": "autoRf" }, @@ -157361,6 +159033,9 @@ { "name": "ipv6" }, + { + "name": "jobs" + }, { "name": "keys" }, @@ -157475,6 +159150,9 @@ { "name": "multicast" }, + { + "name": "multicastForwarding" + }, { "name": "netflow" }, @@ -157556,9 +159234,6 @@ { "name": "policies" }, - { - "name": "policy" - }, { "name": "policyObjects" }, @@ -158083,6 +159758,12 @@ "resource": "/networks/{networkId}/appliance/ssids/{number}", "operation": "update" }, + { + "group": "Appliance/actions/firewall/multicast forwarding", + "summary": "Update static multicast forward rules for a network", + "resource": "/networks/{networkId}/appliance/firewall/multicastForwarding", + "operation": "update" + }, { "group": "Billing", "summary": "Update the billing settings", @@ -158665,6 +160346,36 @@ "resource": "/networks/{networkId}/wireless/ethernet/ports/profiles", "operation": "default" }, + { + "group": "Mr/actions/autolocation job", + "summary": "Cancel a scheduled or running auto locate job", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "cancel" + }, + { + "group": "Mr/actions/autolocation job", + "summary": "Update the status of a finished auto locate job to be published, and update device locations", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "publish" + }, + { + "group": "Mr/actions/autolocation job", + "summary": "Trigger auto locate recalculation for a job, and optionally set anchors", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "recalculate" + }, + { + "group": "Mr/actions/autolocation jobs bulk", + "summary": "Schedule auto locate jobs for one or more floor plans in a network", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs", + "operation": "batch_create" + }, + { + "group": "Mr/actions/device floorplan assignments batch", + "summary": "Update floorplan assignments for a batch of devices", + "resource": "/networks/{networkId}/floorPlans/devices", + "operation": "batch_update" + }, { "group": "Mr/actions/rf auto channel", "summary": "Recalculates automatically assigned channels for every AP within specified the specified network(s). Note: This could cause a brief loss in connectivity for wireless clients.", diff --git a/openapi/spec3.json b/openapi/spec3.json index eca7dbd..76f071e 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: 30 October, 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: 06 November, 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", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" }, - "version": "1.51.1-beta.2" + "version": "1.52.0-beta.0" }, "servers": [ { @@ -13696,6 +13696,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } } @@ -13761,6 +13775,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } ] @@ -14998,6 +15016,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -15061,6 +15093,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -15531,6 +15567,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -15594,6 +15644,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -22763,75 +22817,10 @@ ] } }, - "/networks/{networkId}/appliance/firewall/oneToManyNatRules": { - "get": { - "description": "Return the 1:Many NAT mapping rules for an MX network", - "operationId": "getNetworkApplianceFirewallOneToManyNatRules", - "parameters": [ - { - "name": "networkId", - "in": "path", - "description": "Network ID", - "schema": { - "type": "string" - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object" - }, - "example": { - "rules": [ - { - "publicIp": "146.11.11.13", - "uplink": "internet1", - "portRules": [ - { - "name": "Rule 1", - "protocol": "tcp", - "publicPort": "9443", - "localIp": "192.168.128.1", - "localPort": "443", - "allowedIps": [ - "any" - ] - }, - { - "name": "Rule 2", - "protocol": "tcp", - "publicPort": "8080", - "localIp": "192.168.128.1", - "localPort": "80", - "allowedIps": [ - "10.82.110.0/24", - "10.82.111.0/24" - ] - } - ] - } - ] - } - } - } - } - }, - "summary": "Return the 1:Many NAT mapping rules for an MX network", - "tags": [ - "appliance", - "configure", - "firewall", - "oneToManyNatRules" - ] - }, + "/networks/{networkId}/appliance/firewall/multicastForwarding": { "put": { - "description": "Set the 1:Many NAT mapping rules for an MX network", - "operationId": "updateNetworkApplianceFirewallOneToManyNatRules", + "description": "Update static multicast forward rules for a network", + "operationId": "updateNetworkApplianceFirewallMulticastForwarding", "parameters": [ { "name": "networkId", @@ -22854,95 +22843,320 @@ "items": { "type": "object", "properties": { - "publicIp": { + "description": { "type": "string", - "description": "The IP address that will be used to access the internal resource from the WAN" + "description": "Forwarding rule description." }, - "uplink": { + "address": { "type": "string", - "enum": [ - "internet1", - "internet2" - ], - "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + "description": "IP address" }, - "portRules": { + "vlanIds": { "type": "array", "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "A description of the rule" - }, - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp" - ], - "description": "'tcp' or 'udp'" - }, - "publicPort": { - "type": "string", - "description": "Destination port of the traffic that is arriving on the WAN" - }, - "localIp": { - "type": "string", - "description": "Local IP address to which traffic will be forwarded" - }, - "localPort": { - "type": "string", - "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" - }, - "allowedIps": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" - } - } + "type": "string" }, - "description": "An array of associated forwarding rules" + "description": "List of VLAN IDs" } }, "required": [ - "publicIp", - "uplink", - "portRules" + "description", + "address", + "vlanIds" ] }, - "description": "An array of 1:Many nat rules" + "description": "Static multicast forwarding rules. Pass an empty array to clear all rules." } }, "example": { "rules": [ { - "publicIp": "146.11.11.13", - "uplink": "internet1", - "portRules": [ - { - "name": "Rule 1", - "protocol": "tcp", - "publicPort": "9443", - "localIp": "192.168.128.1", - "localPort": "443", - "allowedIps": [ - "any" - ] - }, - { - "name": "Rule 2", - "protocol": "tcp", - "publicPort": "8080", - "localIp": "192.168.128.1", - "localPort": "80", - "allowedIps": [ - "10.82.110.0/24", - "10.82.111.0/24" - ] - } + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" + ] + } + ] + }, + "required": [ + "rules" + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the network whose multicast forwarding settings are returned." + }, + "name": { + "type": "string", + "description": "Name of the network whose multicast forwarding settings are returned." + } + }, + "required": [ + "id", + "name" + ], + "description": "Network details" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Forwarding rule description." + }, + "address": { + "type": "string", + "description": "IP address" + }, + "vlanIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VLAN IDs" + } + }, + "required": [ + "description", + "address", + "vlanIds" + ] + }, + "description": "Static multicast forwarding rules." + } + }, + "required": [ + "network", + "rules" + ] + }, + "example": { + "network": { + "id": "N_24329156", + "name": "Main Office" + }, + "rules": [ + { + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" + ] + } + ] + } + } + } + } + }, + "summary": "Update static multicast forward rules for a network", + "tags": [ + "appliance", + "configure", + "firewall", + "multicastForwarding" + ], + "x-release-stage": "beta" + } + }, + "/networks/{networkId}/appliance/firewall/oneToManyNatRules": { + "get": { + "description": "Return the 1:Many NAT mapping rules for an MX network", + "operationId": "getNetworkApplianceFirewallOneToManyNatRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object" + }, + "example": { + "rules": [ + { + "publicIp": "146.11.11.13", + "uplink": "internet1", + "portRules": [ + { + "name": "Rule 1", + "protocol": "tcp", + "publicPort": "9443", + "localIp": "192.168.128.1", + "localPort": "443", + "allowedIps": [ + "any" + ] + }, + { + "name": "Rule 2", + "protocol": "tcp", + "publicPort": "8080", + "localIp": "192.168.128.1", + "localPort": "80", + "allowedIps": [ + "10.82.110.0/24", + "10.82.111.0/24" + ] + } + ] + } + ] + } + } + } + } + }, + "summary": "Return the 1:Many NAT mapping rules for an MX network", + "tags": [ + "appliance", + "configure", + "firewall", + "oneToManyNatRules" + ] + }, + "put": { + "description": "Set the 1:Many NAT mapping rules for an MX network", + "operationId": "updateNetworkApplianceFirewallOneToManyNatRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "publicIp": { + "type": "string", + "description": "The IP address that will be used to access the internal resource from the WAN" + }, + "uplink": { + "type": "string", + "enum": [ + "internet1", + "internet2" + ], + "description": "The physical WAN interface on which the traffic will arrive ('internet1' or, if available, 'internet2')" + }, + "portRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "A description of the rule" + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp" + ], + "description": "'tcp' or 'udp'" + }, + "publicPort": { + "type": "string", + "description": "Destination port of the traffic that is arriving on the WAN" + }, + "localIp": { + "type": "string", + "description": "Local IP address to which traffic will be forwarded" + }, + "localPort": { + "type": "string", + "description": "Destination port of the forwarded traffic that will be sent from the MX to the specified host on the LAN. If you simply wish to forward the traffic without translating the port, this should be the same as the Public port" + }, + "allowedIps": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Remote IP addresses or ranges that are permitted to access the internal resource via this port forwarding rule, or 'any'" + } + } + }, + "description": "An array of associated forwarding rules" + } + }, + "required": [ + "publicIp", + "uplink", + "portRules" + ] + }, + "description": "An array of 1:Many nat rules" + } + }, + "example": { + "rules": [ + { + "publicIp": "146.11.11.13", + "uplink": "internet1", + "portRules": [ + { + "name": "Rule 1", + "protocol": "tcp", + "publicPort": "9443", + "localIp": "192.168.128.1", + "localPort": "443", + "allowedIps": [ + "any" + ] + }, + { + "name": "Rule 2", + "protocol": "tcp", + "publicPort": "8080", + "localIp": "192.168.128.1", + "localPort": "80", + "allowedIps": [ + "10.82.110.0/24", + "10.82.111.0/24" + ] + } ] } ] @@ -33158,10 +33372,42 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } } }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "description": "Configuration of subnet features", + "x-release-stage": "beta" } } }, @@ -33176,9 +33422,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } } } } @@ -33253,6 +33508,21 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } }, "required": [ @@ -33260,6 +33530,23 @@ ] }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "x-release-stage": "beta", + "description": "Configuration of subnet features" } }, "example": { @@ -33273,9 +33560,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } }, "required": [ "mode" @@ -33326,10 +33622,42 @@ "useVpn": { "type": "boolean", "description": "Indicates the presence of the subnet in the VPN" + }, + "nat": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not VPN subnet translation is enabled for the subnet" + }, + "remoteSubnet": { + "type": "string", + "description": "The translated subnet to be used in the VPN" + } + }, + "description": "Configuration of NAT for the subnet", + "x-release-stage": "beta" } } }, "description": "The list of subnets and their VPN presence." + }, + "subnet": { + "type": "object", + "properties": { + "nat": { + "type": "object", + "properties": { + "isAllowed": { + "type": "boolean", + "description": "If enabled, VPN subnet translation can be used to translate any local subnets that are allowed to use the VPN into a new subnet with the same number of addresses." + } + }, + "description": "Configuration of NAT for subnets" + } + }, + "description": "Configuration of subnet features", + "x-release-stage": "beta" } } }, @@ -33344,9 +33672,18 @@ "subnets": [ { "localSubnet": "192.168.1.0/24", - "useVpn": true + "useVpn": true, + "nat": { + "enabled": true, + "remoteSubnet": "192.168.2.0/24" + } } - ] + ], + "subnet": { + "nat": { + "isAllowed": true + } + } } } } @@ -38904,10 +39241,9 @@ }, "summary": "Return the policy assigned to a client on the network", "tags": [ - "networks", + "policy", "configure", - "clients", - "policy" + "clients" ] }, "put": { @@ -38993,10 +39329,9 @@ }, "summary": "Update the policy assigned to a client on the network", "tags": [ - "networks", + "policy", "configure", - "clients", - "policy" + "clients" ] } }, @@ -47634,6 +47969,612 @@ ] } }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/batch": { + "post": { + "description": "Schedule auto locate jobs for one or more floor plans in a network", + "operationId": "batchNetworkFloorPlansAutoLocateJobs", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "floorPlanId": { + "type": "string", + "description": "The ID of the floor plan to run auto locate for" + }, + "refresh": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The types of location data that should be refreshed for this job. The list must either contain both 'gnss' and 'ranging' or be empty, as we currently only support refreshing both 'gnss' and 'ranging', or neither." + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Timestamp in ISO8601 format which indicates when the auto locate job should be run. If omitted, the auto locate job will start immediately." + } + }, + "required": [ + "floorPlanId" + ] + }, + "description": "The list of auto locate jobs to be scheduled. Up to 100 jobs can be provided in a request." + } + }, + "example": { + "jobs": [ + { + "floorPlanId": "g_2176982374", + "refresh": [ + "gnss", + "ranging" + ], + "scheduledAt": "2018-02-11T00:00:00Z" + } + ] + }, + "required": [ + "jobs" + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "jobs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Auto locate job ID" + }, + "networkId": { + "type": "string", + "description": "Network ID" + }, + "floorPlanId": { + "type": "string", + "description": "Floor plan ID" + }, + "status": { + "type": "string", + "description": "Auto locate job status. Possible values: 'scheduled', 'in progress', 'canceling', 'error', 'finished', 'published', 'canceled'" + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Scheduled start time for auto locate job" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Approximate auto locate job completion percentage" + } + }, + "description": "Auto locate job progress information" + }, + "ranging": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Ranging status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'no neighbors'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the ranging process" + } + }, + "description": "Progress information for the ranging process" + } + }, + "description": "Ranging status and progress information" + }, + "gnss": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "GNSS status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'not applicable', 'canceled'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the GNSS acquisition process" + } + }, + "description": "Progress information for the GNSS acquisition process" + } + }, + "description": "GNSS (e.g. GPS) status and progress information" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "The step of the auto locate process when the error occurred. Possible values: 'gnss', 'ranging', 'positioning'" + }, + "type": { + "type": "string", + "description": "The type of error that occurred. Possible values: 'failure', 'no neighbors', 'missing anchors', 'wrong anchors', 'calculation failure', 'scheduling failure'" + } + } + }, + "description": "List of errors that occurred during a failed run of auto locate" + } + } + }, + "description": "The newly created jobs" + } + } + }, + "example": { + "jobs": [ + { + "id": "1234", + "networkId": "N_24329156", + "floorPlanId": "g_2176982374", + "status": "error", + "scheduledAt": "2018-02-11T00:00:00Z", + "completed": { + "percentage": 50 + }, + "ranging": { + "status": "in progress", + "completed": { + "percentage": 24 + } + }, + "gnss": { + "status": "in progress", + "completed": { + "percentage": 4 + } + }, + "errors": [ + { + "source": "ranging", + "type": "missing anchors" + } + ] + } + ] + } + } + } + } + }, + "summary": "Schedule auto locate jobs for one or more floor plans in a network", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/cancel": { + "post": { + "description": "Cancel a scheduled or running auto locate job", + "operationId": "cancelNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "responses": { + "204": { + "description": "Successful operation" + } + }, + "summary": "Cancel a scheduled or running auto locate job", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/publish": { + "post": { + "description": "Update the status of a finished auto locate job to be published, and update device locations", + "operationId": "publishNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial for device to publish position for" + }, + "lat": { + "type": "number", + "format": "float", + "minimum": -90, + "maximum": 90, + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "minimum": -180, + "maximum": 180, + "description": "Longitude" + }, + "autoLocate": { + "type": "object", + "properties": { + "isAnchor": { + "type": "boolean", + "description": "Whether or not this device's location should be saved as a user-defined anchor" + } + }, + "description": "The auto locate position for this device" + } + }, + "required": [ + "serial", + "lat", + "lng" + ] + }, + "description": "The list of devices to publish positions for" + } + }, + "example": { + "devices": [ + { + "serial": "Q234-ABCD-5678", + "lat": 37.4180951010362, + "lng": -122.098531723022, + "autoLocate": { + "isAnchor": true + } + } + ] + } + } + } + }, + "required": false + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to publish auto locate job" + } + } + }, + "example": { + "success": true + } + } + } + } + }, + "summary": "Update the status of a finished auto locate job to be published, and update device locations", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}/recalculate": { + "post": { + "description": "Trigger auto locate recalculation for a job, and optionally set anchors", + "operationId": "recalculateNetworkFloorPlansAutoLocateJob", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "jobId", + "in": "path", + "description": "Job ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "devices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial for device to update" + }, + "autoLocate": { + "type": "object", + "properties": { + "isAnchor": { + "type": "boolean", + "description": "Whether or not this location should be saved as a user-defined anchor" + }, + "lat": { + "type": "number", + "format": "float", + "minimum": -90, + "maximum": 90, + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "minimum": -180, + "maximum": 180, + "description": "Longitude" + } + }, + "required": [ + "isAnchor" + ], + "description": "The auto locate position for this device" + } + }, + "required": [ + "serial", + "autoLocate" + ] + }, + "description": "The list of devices to update anchor positions for" + } + }, + "example": { + "devices": [ + { + "serial": "Q234-ABCD-5678", + "autoLocate": { + "isAnchor": true, + "lat": 37.4180951010362, + "lng": -122.098531723022 + } + } + ] + } + } + } + }, + "required": false + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to trigger auto locate recalculation" + } + } + }, + "example": { + "success": true + } + } + } + } + }, + "summary": "Trigger auto locate recalculation for a job, and optionally set anchors", + "tags": [ + "networks", + "configure", + "floorPlans", + "autoLocate", + "jobs" + ] + } + }, + "/networks/{networkId}/floorPlans/devices/batchUpdate": { + "post": { + "description": "Update floorplan assignments for a batch of devices", + "operationId": "batchNetworkFloorPlansDevicesUpdate", + "parameters": [ + { + "name": "networkId", + "in": "path", + "description": "Network ID", + "schema": { + "type": "string" + }, + "required": true + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "assignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial of the device to change the floor plan assignment for" + }, + "floorPlan": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the floor plan to assign the device to, or null to unassign the device from its floor plan" + } + }, + "required": [ + "id" + ], + "description": "Floorplan to be assigned or unassigned" + } + }, + "required": [ + "serial", + "floorPlan" + ] + }, + "description": "List of floorplan assignments to update. Up to 100 floor plan assignments can be provided in a request." + } + }, + "example": { + "assignments": [ + { + "serial": "Q234-ABCD-5678", + "floorPlan": { + "id": "g_2176982374" + } + } + ] + }, + "required": [ + "assignments" + ] + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Status of attempt to update device floorplan assignments" + } + } + }, + "example": { + "success": true + } + } + } + } + }, + "summary": "Update floorplan assignments for a batch of devices", + "tags": [ + "networks", + "configure", + "floorPlans", + "devices" + ] + } + }, "/networks/{networkId}/floorPlans/{floorPlanId}": { "get": { "description": "Find a floor plan by ID", @@ -108608,6 +109549,168 @@ "x-release-stage": "beta" } }, + "/organizations/{organizationId}/appliance/firewall/multicastForwarding/byNetwork": { + "get": { + "description": "List Static Multicasting forwarding settings for MX networks", + "operationId": "getOrganizationApplianceFirewallMulticastForwardingByNetwork", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", + "schema": { + "type": "integer" + } + }, + { + "name": "startingAfter", + "in": "query", + "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "endingBefore", + "in": "query", + "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter the results by network IDs", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the network whose multicast forwarding settings are returned." + }, + "name": { + "type": "string", + "description": "Name of the network whose multicast forwarding settings are returned." + } + }, + "required": [ + "id", + "name" + ], + "description": "Network details" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "description": { + "type": "string", + "description": "Forwarding rule description." + }, + "address": { + "type": "string", + "description": "IP address" + }, + "vlanIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of VLAN IDs" + } + }, + "required": [ + "description", + "address", + "vlanIds" + ] + }, + "description": "Static multicast forwarding rules." + } + }, + "required": [ + "network", + "rules" + ] + }, + "description": "Static multicast forwarding settings by network" + } + } + }, + "example": { + "items": [ + { + "network": { + "id": "N_24329156", + "name": "Main Office" + }, + "rules": [ + { + "description": "test", + "address": "192.168.1.0", + "vlanIds": [ + "1" + ] + } + ] + } + ] + } + } + }, + "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 Static Multicasting forwarding settings for MX networks", + "tags": [ + "appliance", + "configure", + "firewall", + "multicastForwarding", + "byNetwork" + ], + "x-release-stage": "beta" + } + }, "/organizations/{organizationId}/appliance/sdwan/internetPolicies": { "get": { "description": "Get the SDWAN internet traffic preferences for an MX network", @@ -111540,6 +112643,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -111580,6 +112684,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -112142,6 +113247,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -112182,6 +113288,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -112582,6 +113689,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -112622,6 +113730,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -113071,6 +114180,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -113111,6 +114221,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -113514,6 +114625,7 @@ "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", + "openroaming_firmware_incompatible", "over_recommended_site_to_site_vpn_tunnels", "pcc_apns_check_cert", "pcc_apns_expired", @@ -113554,6 +114666,7 @@ "stp_tcn_errors", "stp_tcn_warning", "switch_not_setup_as_stack", + "switch_required_vlans_missing", "temperature_cable_disconnect", "thousand_eyes_application_alert", "traffic_shaping_rule_saturation", @@ -123045,6 +124158,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } } @@ -123104,6 +124231,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } ] @@ -123740,6 +124871,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -123797,6 +124942,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -124255,6 +125404,20 @@ } }, "description": "dot3az settings for the port" + }, + "stackwiseVirtual": { + "type": "object", + "properties": { + "isStackWiseVirtualLink": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for StackWise Virtual Link." + }, + "isDualActiveDetector": { + "type": "boolean", + "description": "For SVL devices, whether or not the port is used for Dual Active Detection." + } + }, + "description": "Stackwise Virtual settings for the port" } } }, @@ -124312,6 +125475,10 @@ }, "dot3az": { "enabled": false + }, + "stackwiseVirtual": { + "isStackWiseVirtualLink": false, + "isDualActiveDetector": false } } } @@ -126151,10 +127318,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "completed", + "status": "downloading", "errorMessage": "Some error message", - "outputType": "cloudshark", - "captureSource": "proactive", + "outputType": "text", + "captureSource": "manual", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -126428,10 +127595,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "completed", + "status": "downloading", "errorMessage": "Some error message", - "outputType": "cloudshark", - "captureSource": "proactive", + "outputType": "text", + "captureSource": "manual", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -126778,10 +127945,10 @@ "name": "file_name", "startTime": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", - "status": "completed", + "status": "downloading", "errorMessage": "Some error message", - "outputType": "cloudshark", - "captureSource": "proactive", + "outputType": "text", + "captureSource": "manual", "captureReason": "capture reason", "fileSize": 1066, "duration": 60, @@ -129535,6 +130702,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -129546,7 +130717,8 @@ "appliance" ], "name": "Test network", - "enabled": true + "enabled": true, + "eligible": true } ] } @@ -129659,6 +130831,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -129670,7 +130846,8 @@ "appliance" ], "name": "Test network", - "enabled": false + "enabled": false, + "eligible": true } ] } @@ -129783,6 +130960,10 @@ "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" + }, + "eligible": { + "type": "boolean", + "description": "Represents whether the network is eligible for XDR" } } } @@ -129794,7 +130975,8 @@ "appliance" ], "name": "Test network", - "enabled": true + "enabled": true, + "eligible": true } ] } @@ -130069,7 +131251,530 @@ { "name": "networkIds", "in": "query", - "description": "Optional parameter to filter by network", + "description": "Optional parameter to filter by network", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "serials", + "in": "query", + "description": "Optional parameter to filter by serial number. All returned devices will have a serial number that is an exact match.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "macs", + "in": "query", + "description": "Optional parameter to filter by one or more MAC addresses belonging to devices. All devices returned belong to MAC addresses that are an exact match.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "firmwareUpgradeBatchIds", + "in": "query", + "description": "Optional parameter to filter by firmware upgrade batch ids.", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "upgradeStatuses", + "in": "query", + "description": "Optional parameter to filter by firmware upgrade statuses.", + "schema": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "canceled", + "completed", + "scheduled", + "started" + ] + } + } + }, + { + "name": "currentUpgradesOnly", + "in": "query", + "description": "Optional parameter to filter to only current or pending upgrade statuses", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "serial": { + "type": "string", + "description": "Serial of the device" + }, + "name": { + "type": "string", + "description": "Name assigned to the device" + }, + "deviceStatus": { + "type": "string", + "description": "Status of the device upgrade" + }, + "upgrade": { + "type": "object", + "properties": { + "time": { + "type": "string", + "description": "Start time of the upgrade" + }, + "fromVersion": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the initial firmware version" + }, + "shortName": { + "type": "string", + "description": "Firmware version short name" + }, + "releaseType": { + "type": "string", + "description": "Release type of the firmware version" + }, + "releaseDate": { + "type": "string", + "description": "Release date of the firmware version" + } + }, + "description": "The initial version of the device" + }, + "toVersion": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID of the initial firmware version" + }, + "shortName": { + "type": "string", + "description": "Firmware version short name" + }, + "releaseType": { + "type": "string", + "description": "Release type of the firmware version" + }, + "releaseDate": { + "type": "string", + "description": "Release date of the firmware version" + } + }, + "description": "Version the device is upgrading to" + }, + "status": { + "type": "string", + "description": "Status of the upgrade" + }, + "id": { + "type": "string", + "description": "ID of the upgrade" + }, + "upgradeBatchId": { + "type": "string", + "description": "ID of the upgrade batch" + }, + "staged": { + "type": "object", + "properties": { + "group": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Id of the staged upgrade group" + } + }, + "description": "The staged upgrade group" + } + }, + "description": "Staged upgrade" + } + }, + "description": "The devices upgrade details and status" + } + } + } + }, + "example": [ + { + "serial": "Q234-ABCD-5678", + "name": "My switch", + "deviceStatus": "completed", + "upgrade": { + "time": "2018-02-11T00:00:00.090210Z", + "fromVersion": { + "id": "1234", + "shortName": "MS 16.7", + "releaseType": "stable", + "releaseDate": "2018-02-11T00:00:00.090210Z" + }, + "toVersion": { + "id": "1234", + "shortName": "MS 16.7.1", + "releaseType": "stable", + "releaseDate": "2018-02-11T00:00:00.090210Z" + }, + "status": "Completed", + "id": "1234", + "upgradeBatchId": "1234", + "staged": { + "group": { + "id": "1234" + } + } + } + } + ] + } + }, + "headers": { + "Link": { + "schema": { + "type": "string" + }, + "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." + } + } + } + }, + "summary": "Get firmware upgrade status for the filtered devices", + "tags": [ + "organizations", + "configure", + "firmware", + "upgrades", + "byDevice" + ] + } + }, + "/organizations/{organizationId}/floorPlans/autoLocate/devices": { + "get": { + "description": "List auto locate details for each device in your organization", + "operationId": "getOrganizationFloorPlansAutoLocateDevices", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000.", + "schema": { + "type": "integer" + } + }, + { + "name": "startingAfter", + "in": "query", + "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "endingBefore", + "in": "query", + "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter devices by one or more network IDs", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "floorPlanIds", + "in": "query", + "description": "Optional parameter to filter devices by one or more floorplan IDs", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Device Name" + }, + "serial": { + "type": "string", + "description": "Device Serial Number" + }, + "mac": { + "type": "string", + "description": "MAC Address" + }, + "model": { + "type": "string", + "description": "Model" + }, + "tags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tags" + }, + "status": { + "type": "string", + "description": "Device Status" + }, + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID for the network containing this device" + } + }, + "description": "Network info" + }, + "floorPlan": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Floor plan ID" + }, + "status": { + "type": "string", + "description": "Floor plan name" + } + }, + "description": "The assigned floor plan for this device" + }, + "lat": { + "type": "number", + "format": "float", + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "description": "Longitude" + }, + "autoLocate": { + "type": "object", + "properties": { + "lat": { + "type": "number", + "format": "float", + "description": "Latitude" + }, + "lng": { + "type": "number", + "format": "float", + "description": "Longitude" + } + }, + "description": "The auto locate position for this device" + }, + "type": { + "type": "string", + "description": "The type of auto locate position. Possible values: 'user', 'gnss', and 'calculated'" + }, + "isAnchor": { + "type": "boolean", + "description": "Whether or not this auto locate position is an anchor" + } + } + }, + "description": "Items in the paginated dataset" + }, + "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": "My AP", + "serial": "Q234-ABCD-5678", + "mac": "00:11:22:33:44:55", + "model": "MR34", + "tags": [ + "tag1", + "tag2" + ], + "status": "online", + "network": { + "id": "N_24329156" + }, + "floorPlan": { + "id": "g_2176982374", + "status": "My floor plan" + }, + "lat": 37.4180951010362, + "lng": -122.098531723022, + "autoLocate": { + "lat": 13.23454243, + "lng": 18.12938123 + }, + "type": "user", + "isAnchor": true + } + ], + "meta": { + "counts": { + "items": { + "total": 50, + "remaining": 100 + } + } + } + } + ] + } + }, + "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 auto locate details for each device in your organization", + "tags": [ + "organizations", + "configure", + "floorPlans", + "autoLocate", + "devices" + ] + } + }, + "/organizations/{organizationId}/floorPlans/autoLocate/statuses": { + "get": { + "description": "List the status of auto locate for each floorplan in your organization", + "operationId": "getOrganizationFloorPlansAutoLocateStatuses", + "parameters": [ + { + "name": "organizationId", + "in": "path", + "description": "Organization ID", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000.", + "schema": { + "type": "integer" + } + }, + { + "name": "startingAfter", + "in": "query", + "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "endingBefore", + "in": "query", + "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", + "schema": { + "type": "string" + } + }, + { + "name": "networkIds", + "in": "query", + "description": "Optional parameter to filter floorplans by one or more network IDs", "schema": { "type": "array", "items": { @@ -130078,62 +131783,15 @@ } }, { - "name": "serials", + "name": "floorPlanIds", "in": "query", - "description": "Optional parameter to filter by serial number. All returned devices will have a serial number that is an exact match.", + "description": "Optional parameter to filter floorplans by one or more floorplan IDs", "schema": { "type": "array", "items": { "type": "string" } } - }, - { - "name": "macs", - "in": "query", - "description": "Optional parameter to filter by one or more MAC addresses belonging to devices. All devices returned belong to MAC addresses that are an exact match.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "firmwareUpgradeBatchIds", - "in": "query", - "description": "Optional parameter to filter by firmware upgrade batch ids.", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "upgradeStatuses", - "in": "query", - "description": "Optional parameter to filter by firmware upgrade statuses.", - "schema": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "canceled", - "completed", - "scheduled", - "started" - ] - } - } - }, - { - "name": "currentUpgradesOnly", - "in": "query", - "description": "Optional parameter to filter to only current or pending upgrade statuses", - "schema": { - "type": "boolean" - } } ], "responses": { @@ -130146,128 +131804,216 @@ "items": { "type": "object", "properties": { - "serial": { - "type": "string", - "description": "Serial of the device" - }, - "name": { - "type": "string", - "description": "Name assigned to the device" - }, - "deviceStatus": { - "type": "string", - "description": "Status of the device upgrade" - }, - "upgrade": { - "type": "object", - "properties": { - "time": { - "type": "string", - "description": "Start time of the upgrade" - }, - "fromVersion": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the initial firmware version" - }, - "shortName": { - "type": "string", - "description": "Firmware version short name" - }, - "releaseType": { - "type": "string", - "description": "Release type of the firmware version" + "items": { + "type": "array", + "items": { + "type": "object", + "properties": { + "network": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "ID for the network containing the floorplan" + } }, - "releaseDate": { - "type": "string", - "description": "Release date of the firmware version" - } + "description": "Network info" }, - "description": "The initial version of the device" - }, - "toVersion": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "ID of the initial firmware version" - }, - "shortName": { - "type": "string", - "description": "Firmware version short name" - }, - "releaseType": { - "type": "string", - "description": "Release type of the firmware version" + "floorPlanId": { + "type": "string", + "description": "Floor plan ID" + }, + "name": { + "type": "string", + "description": "Floor plan name" + }, + "counts": { + "type": "object", + "properties": { + "devices": { + "type": "object", + "properties": { + "total": { + "type": "integer", + "description": "The total number of devices that will participate if an auto locate job is started" + } + }, + "description": "Device counts for this floor plan" + } }, - "releaseDate": { - "type": "string", - "description": "Release date of the firmware version" - } + "description": "Counts for this floor plan" }, - "description": "Version the device is upgrading to" - }, - "status": { - "type": "string", - "description": "Status of the upgrade" - }, - "id": { - "type": "string", - "description": "ID of the upgrade" - }, - "upgradeBatchId": { - "type": "string", - "description": "ID of the upgrade batch" - }, - "staged": { - "type": "object", - "properties": { - "group": { + "jobs": { + "type": "array", + "items": { "type": "object", "properties": { "id": { "type": "string", - "description": "Id of the staged upgrade group" + "description": "Auto locate job ID" + }, + "status": { + "type": "string", + "description": "Auto locate job status. Possible values: 'scheduled', 'in progress', 'canceling', 'error', 'finished', 'published', 'canceled'" + }, + "scheduledAt": { + "type": "string", + "format": "date-time", + "description": "Scheduled start time for auto locate job" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Approximate auto locate job completion percentage" + } + }, + "description": "Auto locate job progress information" + }, + "ranging": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "Ranging status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'no neighbors'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the ranging process" + } + }, + "description": "Progress information for the ranging process" + } + }, + "description": "Ranging status and progress information" + }, + "gnss": { + "type": "object", + "properties": { + "status": { + "type": "string", + "description": "GNSS status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'not applicable', 'canceled'" + }, + "completed": { + "type": "object", + "properties": { + "percentage": { + "type": "integer", + "description": "Completion percentage of the GNSS acquisition process" + } + }, + "description": "Progress information for the GNSS acquisition process" + } + }, + "description": "GNSS (e.g. GPS) status and progress information" + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { + "type": "string", + "description": "The step of the auto locate process when the error occurred. Possible values: 'gnss', 'ranging', 'positioning'" + }, + "type": { + "type": "string", + "description": "The type of error that occurred. Possible values: 'failure', 'no neighbors', 'missing anchors', 'wrong anchors', 'calculation failure', 'scheduling failure'" + } + } + }, + "description": "List of errors that occurred during a failed run of auto locate" + } + } + }, + "description": "The most recent job for this floor plan" + } + } + }, + "description": "Items in the paginated dataset" + }, + "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": "The staged upgrade group" + "description": "Counts relating to the paginated items" } }, - "description": "Staged upgrade" + "description": "Counts relating to the paginated dataset" } }, - "description": "The devices upgrade details and status" + "description": "Metadata relevant to the paginated dataset" } } } }, "example": [ { - "serial": "Q234-ABCD-5678", - "name": "My switch", - "deviceStatus": "completed", - "upgrade": { - "time": "2018-02-11T00:00:00.090210Z", - "fromVersion": { - "id": "1234", - "shortName": "MS 16.7", - "releaseType": "stable", - "releaseDate": "2018-02-11T00:00:00.090210Z" - }, - "toVersion": { - "id": "1234", - "shortName": "MS 16.7.1", - "releaseType": "stable", - "releaseDate": "2018-02-11T00:00:00.090210Z" - }, - "status": "Completed", - "id": "1234", - "upgradeBatchId": "1234", - "staged": { - "group": { - "id": "1234" + "items": [ + { + "network": { + "id": "N_24329156" + }, + "floorPlanId": "g_2176982374", + "name": "My Floorplan", + "counts": { + "devices": { + "total": 120 + } + }, + "jobs": [ + { + "id": "1234", + "status": "error", + "scheduledAt": "2018-02-11T00:00:00Z", + "completed": { + "percentage": 50 + }, + "ranging": { + "status": "in progress", + "completed": { + "percentage": 24 + } + }, + "gnss": { + "status": "in progress", + "completed": { + "percentage": 4 + } + }, + "errors": [ + { + "source": "ranging", + "type": "missing anchors" + } + ] + } + ] + } + ], + "meta": { + "counts": { + "items": { + "total": 50, + "remaining": 100 } } } @@ -130285,13 +132031,13 @@ } } }, - "summary": "Get firmware upgrade status for the filtered devices", + "summary": "List the status of auto locate for each floorplan in your organization", "tags": [ "organizations", "configure", - "firmware", - "upgrades", - "byDevice" + "floorPlans", + "autoLocate", + "statuses" ] } }, @@ -150810,6 +152556,14 @@ "type": "boolean" } }, + { + "name": "searchQuery", + "in": "query", + "description": "Optional parameter to filter the result set by the search query", + "schema": { + "type": "string" + } + }, { "name": "perPage", "in": "query", @@ -167040,6 +168794,9 @@ { "name": "wirelessController" }, + { + "name": "policy" + }, { "name": "accessControlLists" }, @@ -167136,6 +168893,9 @@ { "name": "authenticationToken" }, + { + "name": "autoLocate" + }, { "name": "autoRf" }, @@ -167538,6 +169298,9 @@ { "name": "ipv6" }, + { + "name": "jobs" + }, { "name": "keys" }, @@ -167652,6 +169415,9 @@ { "name": "multicast" }, + { + "name": "multicastForwarding" + }, { "name": "netflow" }, @@ -167733,9 +169499,6 @@ { "name": "policies" }, - { - "name": "policy" - }, { "name": "policyObjects" }, @@ -168260,6 +170023,12 @@ "resource": "/networks/{networkId}/appliance/ssids/{number}", "operation": "update" }, + { + "group": "Appliance/actions/firewall/multicast forwarding", + "summary": "Update static multicast forward rules for a network", + "resource": "/networks/{networkId}/appliance/firewall/multicastForwarding", + "operation": "update" + }, { "group": "Billing", "summary": "Update the billing settings", @@ -168842,6 +170611,36 @@ "resource": "/networks/{networkId}/wireless/ethernet/ports/profiles", "operation": "default" }, + { + "group": "Mr/actions/autolocation job", + "summary": "Cancel a scheduled or running auto locate job", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "cancel" + }, + { + "group": "Mr/actions/autolocation job", + "summary": "Update the status of a finished auto locate job to be published, and update device locations", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "publish" + }, + { + "group": "Mr/actions/autolocation job", + "summary": "Trigger auto locate recalculation for a job, and optionally set anchors", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs/{jobId}", + "operation": "recalculate" + }, + { + "group": "Mr/actions/autolocation jobs bulk", + "summary": "Schedule auto locate jobs for one or more floor plans in a network", + "resource": "/networks/{networkId}/floorPlans/autoLocate/jobs", + "operation": "batch_create" + }, + { + "group": "Mr/actions/device floorplan assignments batch", + "summary": "Update floorplan assignments for a batch of devices", + "resource": "/networks/{networkId}/floorPlans/devices", + "operation": "batch_update" + }, { "group": "Mr/actions/rf auto channel", "summary": "Recalculates automatically assigned channels for every AP within specified the specified network(s). Note: This could cause a brief loss in connectivity for wireless clients.",