diff --git a/openapi/spec2.json b/openapi/spec2.json index 3acf386..9d9db5e 100644 --- a/openapi/spec2.json +++ b/openapi/spec2.json @@ -1,9 +1,9 @@ { "swagger": "2.0", "info": { - "version": "1.0.0-beta.0", + "version": "1.0.0-beta.1", "title": "Meraki Dashboard API", - "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 17 March, 2020\n>\n> [What's New](https://meraki.io/whats-new/)\n\n---\n\n[API Documentation](https://meraki.io/api)\n\n[Community Support](https://meraki.io/community)\n\n[Meraki Homepage](https://www.meraki.com)\n", + "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 01 April, 2020\n>\n> [What's New](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", "x-codegen-settings": { "appendContentHeaders": true, "brandLabel": "meraki", @@ -618,10 +618,10 @@ ] } }, - "/devices/{serial}/camera/qualityAndRetentionSettings": { + "/devices/{serial}/camera/qualityAndRetention": { "get": { "description": "Returns quality and retention settings for the given camera", - "operationId": "getDeviceCameraQualityAndRetentionSettings", + "operationId": "getDeviceCameraQualityAndRetention", "parameters": [ { "name": "serial", @@ -657,7 +657,7 @@ }, "put": { "description": "Update quality and retention settings for the given camera", - "operationId": "updateDeviceCameraQualityAndRetentionSettings", + "operationId": "updateDeviceCameraQualityAndRetention", "parameters": [ { "name": "serial", @@ -666,7 +666,7 @@ "required": true }, { - "name": "updateDeviceCameraQualityAndRetentionSettings", + "name": "updateDeviceCameraQualityAndRetention", "in": "body", "schema": { "type": "object", @@ -1386,10 +1386,10 @@ ] } }, - "/devices/{serial}/managementInterfaceSettings": { + "/devices/{serial}/managementInterface": { "get": { "description": "Return the management interface settings for a device", - "operationId": "getDeviceManagementInterfaceSettings", + "operationId": "getDeviceManagementInterface", "parameters": [ { "name": "serial", @@ -1440,7 +1440,7 @@ }, "put": { "description": "Update the management interface settings for a device", - "operationId": "updateDeviceManagementInterfaceSettings", + "operationId": "updateDeviceManagementInterface", "parameters": [ { "name": "serial", @@ -1449,7 +1449,7 @@ "required": true }, { - "name": "updateDeviceManagementInterfaceSettings", + "name": "updateDeviceManagementInterface", "in": "body", "schema": { "type": "object", @@ -2985,6 +2985,114 @@ ] } }, + "/networks/{networkId}/appliance/clients/{clientId}/security/events": { + "get": { + "description": "List the security events for a client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", + "operationId": "getNetworkApplianceClientSecurityEvents", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "clientId", + "in": "path", + "type": "string", + "required": true + }, + { + "type": "string", + "name": "t0", + "in": "query", + "description": "The beginning of the timespan for the data. The maximum lookback period is 791 days from today." + }, + { + "type": "string", + "name": "t1", + "in": "query", + "description": "The end of the timespan for the data. t1 can be a maximum of 791 days after t0." + }, + { + "type": "number", + "format": "float", + "name": "timespan", + "in": "query", + "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 791 days. The default is 31 days." + }, + { + "type": "integer", + "name": "perPage", + "in": "query", + "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100." + }, + { + "type": "string", + "name": "startingAfter", + "in": "query", + "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it." + }, + { + "type": "string", + "name": "endingBefore", + "in": "query", + "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it." + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "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": [ + { + "ts": "2018-02-11T00:00:00.090210Z", + "deviceMac": "00:18:0a:01:02:03", + "clientMac": "A1:B2:C3:D4:E5:F6", + "srcIp": "1.2.3.4:34195", + "destIp": "10.20.30.40:80", + "protocol": "tcp/ip", + "priority": "2", + "classification": "4", + "blocked": true, + "message": "SERVER-WEBAPP JBoss JMX console access attempt", + "signature": "1:21516:9", + "sigSource": "" + }, + { + "ts": "2018-02-11T00:00:00.090210Z", + "deviceMac": "00:18:0a:01:02:03", + "clientMac": "A1:B2:C3:D4:E5:F6", + "srcIp": "1.2.3.4:56023", + "destIp": "10.20.30.40:80", + "protocol": "tcp/ip", + "priority": "1", + "classification": "33", + "blocked": true, + "message": "POLICY-OTHER Adobe ColdFusion admin interface access attempt", + "signature": "1:25975:2", + "sigSource": "" + } + ] + } + } + }, + "summary": "List the security events for a client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", + "tags": [ + "Security events" + ] + } + }, "/networks/{networkId}/appliance/connectivityMonitoringDestinations": { "get": { "description": "Return the connectivity testing destinations for an MX network", @@ -4698,31 +4806,10 @@ ] } }, - "/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth": { - "get": { - "description": "Returns the uplink bandwidth settings for your MX network.", - "operationId": "getNetworkApplianceTrafficShapingUplinkBandwidth", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation" - } - }, - "summary": "Returns the uplink bandwidth settings for your MX network.", - "tags": [ - "Uplink settings" - ] - }, + "/networks/{networkId}/appliance/trafficShaping/rules": { "put": { - "description": "Updates the uplink bandwidth settings for your MX network.", - "operationId": "updateNetworkApplianceTrafficShapingUplinkBandwidth", + "description": "Update the traffic shaping settings for an MX network", + "operationId": "updateNetworkApplianceTrafficShapingRules", "parameters": [ { "name": "networkId", @@ -4731,74 +4818,405 @@ "required": true }, { - "name": "updateNetworkApplianceTrafficShapingUplinkBandwidth", + "name": "updateNetworkApplianceTrafficShapingRules", "in": "body", "schema": { "type": "object", "properties": { - "bandwidthLimits": { - "type": "object", - "properties": { - "wan1": { - "type": "object", - "properties": { - "limitUp": { - "type": "integer", - "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" + "defaultRulesEnabled": { + "type": "boolean", + "description": " Whether default traffic shaping rules are enabled (true) or disabled (false).\n There are 4 default rules, which can\n be seen on your network's traffic shaping page. Note that default rules\n count against the rule limit of 8.\n" + }, + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "definitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "application", + "applicationCategory", + "host", + "port", + "ipRange", + "localNet" + ], + "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." + }, + "value": { + "type": "string", + "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" + } + }, + "required": [ + "type", + "value" + ] }, - "limitDown": { - "type": "integer", - "description": "The maximum download limit (integer, in Kbps). null indicates no limit" - } + "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" }, - "description": "The bandwidth settings for the 'wan1' uplink" - }, - "wan2": { - "type": "object", - "properties": { - "limitUp": { - "type": "integer", - "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" + "perClientBandwidthLimits": { + "type": "object", + "properties": { + "settings": { + "type": "string", + "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." + }, + "bandwidthLimits": { + "type": "object", + "properties": { + "limitUp": { + "type": "integer", + "description": "The maximum upload limit (integer, in Kbps)." + }, + "limitDown": { + "type": "integer", + "description": "The maximum download limit (integer, in Kbps)." + } + }, + "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." + } }, - "limitDown": { - "type": "integer", - "description": "The maximum download limit (integer, in Kbps). null indicates no limit" - } + "description": " An object describing the bandwidth settings for your rule.\n" }, - "description": "The bandwidth settings for the 'wan2' uplink" - }, - "cellular": { - "type": "object", - "properties": { - "limitUp": { - "type": "integer", - "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" - }, - "limitDown": { - "type": "integer", - "description": "The maximum download limit (integer, in Kbps). null indicates no limit" - } + "dscpTagValue": { + "type": "integer", + "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n" }, - "description": "The bandwidth settings for the 'cellular' uplink" - } + "priority": { + "type": "string", + "description": " A string, indicating the priority level for packets bound to your rule.\n Can be 'low', 'normal' or 'high'.\n" + } + }, + "required": [ + "definitions" + ] }, - "description": "A mapping of uplinks to their bandwidth settings (be sure to check which uplinks are supported for your network)" + "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" } }, "example": { - "bandwidthLimits": { - "wan1": { - "limitUp": 1000000, - "limitDown": 1000000 - }, - "wan2": { - "limitUp": 1000000, - "limitDown": 1000000 - }, - "cellular": { - "limitUp": 51200, - "limitDown": 51200 - } + "defaultRulesEnabled": true, + "rules": [ + { + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" + }, + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } + }, + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 + } + }, + "dscpTagValue": null, + "priority": "normal" + } + ] + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "defaultRulesEnabled": true, + "rules": [ + { + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" + }, + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } + }, + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 + } + }, + "dscpTagValue": null, + "priority": "normal" + } + ] + } + } + } + }, + "summary": "Update the traffic shaping settings for an MX network", + "tags": [ + "Traffic shaping" + ] + }, + "get": { + "description": "Display the traffic shaping settings for an MX network", + "operationId": "getNetworkApplianceTrafficShapingRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "defaultRulesEnabled": true, + "rules": [ + { + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" + }, + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } + }, + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 + } + }, + "dscpTagValue": null, + "priority": "normal" + } + ] + } + } + } + }, + "summary": "Display the traffic shaping settings for an MX network", + "tags": [ + "Traffic shaping" + ] + } + }, + "/networks/{networkId}/appliance/trafficShaping/uplinkBandwidth": { + "get": { + "description": "Returns the uplink bandwidth settings for your MX network.", + "operationId": "getNetworkApplianceTrafficShapingUplinkBandwidth", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation" + } + }, + "summary": "Returns the uplink bandwidth settings for your MX network.", + "tags": [ + "Uplink settings" + ] + }, + "put": { + "description": "Updates the uplink bandwidth settings for your MX network.", + "operationId": "updateNetworkApplianceTrafficShapingUplinkBandwidth", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "updateNetworkApplianceTrafficShapingUplinkBandwidth", + "in": "body", + "schema": { + "type": "object", + "properties": { + "bandwidthLimits": { + "type": "object", + "properties": { + "wan1": { + "type": "object", + "properties": { + "limitUp": { + "type": "integer", + "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" + }, + "limitDown": { + "type": "integer", + "description": "The maximum download limit (integer, in Kbps). null indicates no limit" + } + }, + "description": "The bandwidth settings for the 'wan1' uplink" + }, + "wan2": { + "type": "object", + "properties": { + "limitUp": { + "type": "integer", + "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" + }, + "limitDown": { + "type": "integer", + "description": "The maximum download limit (integer, in Kbps). null indicates no limit" + } + }, + "description": "The bandwidth settings for the 'wan2' uplink" + }, + "cellular": { + "type": "object", + "properties": { + "limitUp": { + "type": "integer", + "description": "The maximum upload limit (integer, in Kbps). null indicates no limit" + }, + "limitDown": { + "type": "integer", + "description": "The maximum download limit (integer, in Kbps). null indicates no limit" + } + }, + "description": "The bandwidth settings for the 'cellular' uplink" + } + }, + "description": "A mapping of uplinks to their bandwidth settings (be sure to check which uplinks are supported for your network)" + } + }, + "example": { + "bandwidthLimits": { + "wan1": { + "limitUp": 1000000, + "limitDown": 1000000 + }, + "wan2": { + "limitUp": 1000000, + "limitDown": 1000000 + }, + "cellular": { + "limitUp": 51200, + "limitDown": 51200 + } } } } @@ -4829,7 +5247,49 @@ ], "responses": { "200": { - "description": "Successful operation" + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": [ + { + "id": "1234", + "networkId": "N_24329156", + "name": "My VLAN", + "applianceIp": "192.168.1.1", + "subnet": "192.168.1.0/24", + "groupPolicyId": "101", + "fixedIpAssignments": { + "22:33:44:55:66:77": { + "ip": "1.2.3.4", + "name": "Some client name" + } + }, + "reservedIpRanges": [ + { + "start": "192.168.1.0", + "end": "192.168.1.1", + "comment": "A reserved IP range" + } + ], + "dnsNameservers": "google_dns", + "dhcpHandling": "Run a DHCP server", + "dhcpLeaseTime": "1 day", + "dhcpBootOptionsEnabled": false, + "dhcpBootNextServer": null, + "dhcpBootFilename": null, + "dhcpOptions": [ + { + "code": 5, + "type": "text", + "value": "five" + } + ] + } + ] + } } }, "summary": "List the VLANs for an MX network", @@ -4868,13 +5328,18 @@ "applianceIp": { "type": "string", "description": "The local IP of the appliance on the VLAN" + }, + "groupPolicyId": { + "type": "string", + "description": "The id of the desired group policy to apply to the VLAN" } }, "example": { "id": "1234", "name": "My VLAN", "subnet": "192.168.1.0/24", - "applianceIp": "1.2.3.4" + "applianceIp": "192.168.1.1", + "groupPolicyId": "101" }, "required": [ "id", @@ -4898,8 +5363,9 @@ "id": "1234", "networkId": "N_24329156", "name": "My VLAN", - "applianceIp": "1.2.3.4", + "applianceIp": "192.168.1.1", "subnet": "192.168.1.0/24", + "groupPolicyId": "101", "fixedIpAssignments": { }, @@ -4997,35 +5463,75 @@ } } }, - "summary": "Enable/Disable VLANs for the given network", - "tags": [ - "MX VLANs settings" - ] - } - }, - "/networks/{networkId}/appliance/vlans/{vlanId}": { - "get": { - "description": "Return a VLAN", - "operationId": "getNetworkApplianceVlan", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "vlanId", - "in": "path", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation" - } - }, + "summary": "Enable/Disable VLANs for the given network", + "tags": [ + "MX VLANs settings" + ] + } + }, + "/networks/{networkId}/appliance/vlans/{vlanId}": { + "get": { + "description": "Return a VLAN", + "operationId": "getNetworkApplianceVlan", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "vlanId", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "id": "1234", + "networkId": "N_24329156", + "name": "My VLAN", + "applianceIp": "192.168.1.1", + "subnet": "192.168.1.0/24", + "groupPolicyId": "101", + "fixedIpAssignments": { + "22:33:44:55:66:77": { + "ip": "1.2.3.4", + "name": "Some client name" + } + }, + "reservedIpRanges": [ + { + "start": "192.168.1.0", + "end": "192.168.1.1", + "comment": "A reserved IP range" + } + ], + "dnsNameservers": "google_dns", + "dhcpHandling": "Run a DHCP server", + "dhcpLeaseTime": "1 day", + "dhcpBootOptionsEnabled": false, + "dhcpBootNextServer": null, + "dhcpBootFilename": null, + "dhcpOptions": [ + { + "code": 5, + "type": "text", + "value": "five" + } + ] + } + } + } + }, "summary": "Return a VLAN", "tags": [ "VLANs" @@ -5065,6 +5571,10 @@ "type": "string", "description": "The local IP of the appliance on the VLAN" }, + "groupPolicyId": { + "type": "string", + "description": "The id of the desired group policy to apply to the VLAN" + }, "vpnNatSubnet": { "type": "string", "description": "The translated VPN subnet if VPN and VPN subnet translation are enabled on the VLAN" @@ -5181,8 +5691,54 @@ }, "example": { "name": "My VLAN", - "applianceIp": "1.2.3.4", + "applianceIp": "192.168.1.1", + "subnet": "192.168.1.0/24", + "groupPolicyId": "101", + "fixedIpAssignments": { + "22:33:44:55:66:77": { + "ip": "1.2.3.4", + "name": "Some client name" + } + }, + "reservedIpRanges": [ + { + "start": "192.168.1.0", + "end": "192.168.1.1", + "comment": "A reserved IP range" + } + ], + "dnsNameservers": "google_dns", + "dhcpHandling": "Run a DHCP server", + "dhcpLeaseTime": "1 day", + "dhcpBootOptionsEnabled": false, + "dhcpBootNextServer": null, + "dhcpBootFilename": null, + "dhcpOptions": [ + { + "code": 5, + "type": "text", + "value": "five" + } + ] + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "id": "1234", + "networkId": "N_24329156", + "name": "My VLAN", + "applianceIp": "192.168.1.1", "subnet": "192.168.1.0/24", + "groupPolicyId": "101", "fixedIpAssignments": { "22:33:44:55:66:77": { "ip": "1.2.3.4", @@ -5191,63 +5747,245 @@ }, "reservedIpRanges": [ { - "start": "192.168.1.0", - "end": "192.168.1.1", - "comment": "A reserved IP range" + "start": "192.168.1.0", + "end": "192.168.1.1", + "comment": "A reserved IP range" + } + ], + "dnsNameservers": "google_dns", + "dhcpHandling": "Run a DHCP server", + "dhcpLeaseTime": "1 day", + "dhcpBootOptionsEnabled": false, + "dhcpBootNextServer": null, + "dhcpBootFilename": null, + "dhcpOptions": [ + { + "code": 5, + "type": "text", + "value": "five" + } + ] + } + } + } + }, + "summary": "Update a VLAN", + "tags": [ + "VLANs" + ] + }, + "delete": { + "description": "Delete a VLAN from a network", + "operationId": "deleteNetworkApplianceVlan", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "vlanId", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "204": { + "description": "Successful operation" + } + }, + "summary": "Delete a VLAN from a network", + "tags": [ + "VLANs" + ] + } + }, + "/networks/{networkId}/appliance/vpn/siteToSiteVpn": { + "get": { + "description": "Return the site-to-site VPN settings of a network. Only valid for MX networks.", + "operationId": "getNetworkApplianceVpnSiteToSiteVpn", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "mode": "spoke", + "hubs": [ + { + "hubId": "N_4901849", + "useDefaultRoute": true + }, + { + "hubId": "N_1892489", + "useDefaultRoute": false + } + ], + "subnets": [ + { + "localSubnet": "192.168.1.0/24", + "useVpn": true + }, + { + "localSubnet": "192.168.128.0/24", + "useVpn": true + } + ] + } + } + } + }, + "summary": "Return the site-to-site VPN settings of a network. Only valid for MX networks.", + "tags": [ + "Networks" + ] + }, + "put": { + "description": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", + "operationId": "updateNetworkApplianceVpnSiteToSiteVpn", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "updateNetworkApplianceVpnSiteToSiteVpn", + "in": "body", + "schema": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "enum": [ + "none", + "spoke", + "hub" + ], + "description": "The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'" + }, + "hubs": { + "type": "array", + "items": { + "type": "object", + "properties": { + "hubId": { + "type": "string", + "description": "The network ID of the hub." + }, + "useDefaultRoute": { + "type": "boolean", + "description": "Only valid in 'spoke' mode. Indicates whether default route traffic should be sent to this hub." + } + }, + "required": [ + "hubId" + ] + }, + "description": "The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required." + }, + "subnets": { + "type": "array", + "items": { + "type": "object", + "properties": { + "localSubnet": { + "type": "string", + "description": "The CIDR notation subnet used within the VPN" + }, + "useVpn": { + "type": "boolean", + "description": "Indicates the presence of the subnet in the VPN" + } + }, + "required": [ + "localSubnet" + ] + }, + "description": "The list of subnets and their VPN presence." + } + }, + "example": { + "mode": "spoke", + "hubs": [ + { + "hubId": "N_4901849", + "useDefaultRoute": true + }, + { + "hubId": "N_1892489", + "useDefaultRoute": false } ], - "dnsNameservers": "google_dns", - "dhcpHandling": "Run a DHCP server", - "dhcpLeaseTime": "1 day", - "dhcpBootOptionsEnabled": false, - "dhcpBootNextServer": null, - "dhcpBootFilename": null, - "dhcpOptions": [ + "subnets": [ { - "code": 5, - "type": "text", - "value": "five" + "localSubnet": "192.168.1.0/24", + "useVpn": true + }, + { + "localSubnet": "192.168.128.0/24", + "useVpn": true } ] - } - } - } - ], - "responses": { - "200": { - "description": "Successful operation" - } - }, - "summary": "Update a VLAN", - "tags": [ - "VLANs" - ] - }, - "delete": { - "description": "Delete a VLAN from a network", - "operationId": "deleteNetworkApplianceVlan", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "vlanId", - "in": "path", - "type": "string", + }, + "required": [ + "mode" + ] + }, "required": true } ], "responses": { - "204": { - "description": "Successful operation" + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "mode": "spoke", + "hubs": [ + { + "hubId": "N_4901849", + "useDefaultRoute": true + }, + { + "hubId": "N_1892489", + "useDefaultRoute": false + } + ], + "subnets": [ + { + "localSubnet": "192.168.1.0/24", + "useVpn": true + }, + { + "localSubnet": "192.168.128.0/24", + "useVpn": true + } + ] + } + } } }, - "summary": "Delete a VLAN from a network", + "summary": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", "tags": [ - "VLANs" + "Networks" ] } }, @@ -7292,76 +8030,6 @@ ] } }, - "/networks/{networkId}/clients/{clientId}/events": { - "get": { - "description": "Return the events associated with this client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", - "operationId": "getNetworkClientEvents", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "clientId", - "in": "path", - "type": "string", - "required": true - }, - { - "type": "integer", - "name": "perPage", - "in": "query", - "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100." - }, - { - "type": "string", - "name": "startingAfter", - "in": "query", - "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it." - }, - { - "type": "string", - "name": "endingBefore", - "in": "query", - "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it." - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "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": [ - { - "deviceSerial": "Q234-ABCD-5678", - "occurredAt": "2018-02-11T00:00:00Z", - "type": "l3roaming_assoc_start", - "details": { - "vap": "1", - "on_packet": "true" - } - } - ] - } - } - }, - "summary": "Return the events associated with this client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", - "tags": [ - "Clients" - ] - } - }, "/networks/{networkId}/clients/{clientId}/policy": { "get": { "description": "Return the policy assigned to a client on the network. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", @@ -7404,121 +8072,44 @@ "put": { "description": "Update the policy assigned to a client on the network. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", "operationId": "updateNetworkClientPolicy", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "clientId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "updateNetworkClientPolicy", - "in": "body", - "schema": { - "type": "object", - "properties": { - "devicePolicy": { - "type": "string", - "description": "The policy to assign. Can be 'Whitelisted', 'Blocked', 'Normal' or 'Group policy'. Required." - }, - "groupPolicyId": { - "type": "string", - "description": "[optional] If 'devicePolicy' is set to 'Group policy' this param is used to specify the group policy ID." - } - }, - "example": { - "mac": "00:11:22:33:44:55", - "type": "Group policy", - "groupPolicyId": "101" - }, - "required": [ - "devicePolicy" - ] - }, - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "mac": "00:11:22:33:44:55", - "type": "Group policy", - "groupPolicyId": "101" - } - } - } - }, - "summary": "Update the policy assigned to a client on the network. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", - "tags": [ - "Clients" - ] - } - }, - "/networks/{networkId}/clients/{clientId}/securityEvents": { - "get": { - "description": "List the security events for a client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", - "operationId": "getNetworkClientSecurityEvents", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "clientId", - "in": "path", - "type": "string", - "required": true - }, - { - "type": "string", - "name": "t0", - "in": "query", - "description": "The beginning of the timespan for the data. The maximum lookback period is 791 days from today." - }, - { - "type": "string", - "name": "t1", - "in": "query", - "description": "The end of the timespan for the data. t1 can be a maximum of 791 days after t0." - }, - { - "type": "number", - "format": "float", - "name": "timespan", - "in": "query", - "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 791 days. The default is 31 days." - }, + "parameters": [ { - "type": "integer", - "name": "perPage", - "in": "query", - "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100." + "name": "networkId", + "in": "path", + "type": "string", + "required": true }, { + "name": "clientId", + "in": "path", "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." + "required": true }, { - "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." + "name": "updateNetworkClientPolicy", + "in": "body", + "schema": { + "type": "object", + "properties": { + "devicePolicy": { + "type": "string", + "description": "The policy to assign. Can be 'Whitelisted', 'Blocked', 'Normal' or 'Group policy'. Required." + }, + "groupPolicyId": { + "type": "string", + "description": "[optional] If 'devicePolicy' is set to 'Group policy' this param is used to specify the group policy ID." + } + }, + "example": { + "mac": "00:11:22:33:44:55", + "type": "Group policy", + "groupPolicyId": "101" + }, + "required": [ + "devicePolicy" + ] + }, + "required": true } ], "responses": { @@ -7528,49 +8119,18 @@ "type": "object", "x-is-dynamic": true }, - "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": [ - { - "ts": "2018-02-11T00:00:00.090210Z", - "deviceMac": "00:18:0a:01:02:03", - "clientMac": "A1:B2:C3:D4:E5:F6", - "srcIp": "1.2.3.4:34195", - "destIp": "10.20.30.40:80", - "protocol": "tcp/ip", - "priority": "2", - "classification": "4", - "blocked": true, - "message": "SERVER-WEBAPP JBoss JMX console access attempt", - "signature": "1:21516:9", - "sigSource": "" - }, - { - "ts": "2018-02-11T00:00:00.090210Z", - "deviceMac": "00:18:0a:01:02:03", - "clientMac": "A1:B2:C3:D4:E5:F6", - "srcIp": "1.2.3.4:56023", - "destIp": "10.20.30.40:80", - "protocol": "tcp/ip", - "priority": "1", - "classification": "33", - "blocked": true, - "message": "POLICY-OTHER Adobe ColdFusion admin interface access attempt", - "signature": "1:25975:2", - "sigSource": "" - } - ] + "application/json": { + "mac": "00:11:22:33:44:55", + "type": "Group policy", + "groupPolicyId": "101" + } } } }, - "summary": "List the security events for a client. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", + "summary": "Update the policy assigned to a client on the network. Clients can be identified by a client key or either the MAC or IP depending on whether the network uses Track-by-IP.", "tags": [ - "Security events" + "Clients" ] } }, @@ -12796,178 +13356,10 @@ } }, "example": { - "localStatusPageEnabled": true, - "remoteStatusPageEnabled": true - } - } - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "localStatusPageEnabled": true, - "remoteStatusPageEnabled": true - } - } - } - }, - "summary": "Update the settings for a network", - "tags": [ - "Network settings" - ] - } - }, - "/networks/{networkId}/siteToSiteVpn": { - "get": { - "description": "Return the site-to-site VPN settings of a network. Only valid for MX networks.", - "operationId": "getNetworkSiteToSiteVpn", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "mode": "spoke", - "hubs": [ - { - "hubId": "N_4901849", - "useDefaultRoute": true - }, - { - "hubId": "N_1892489", - "useDefaultRoute": false - } - ], - "subnets": [ - { - "localSubnet": "192.168.1.0/24", - "useVpn": true - }, - { - "localSubnet": "192.168.128.0/24", - "useVpn": true - } - ] - } - } - } - }, - "summary": "Return the site-to-site VPN settings of a network. Only valid for MX networks.", - "tags": [ - "Networks" - ] - }, - "put": { - "description": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", - "operationId": "updateNetworkSiteToSiteVpn", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "updateNetworkSiteToSiteVpn", - "in": "body", - "schema": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "none", - "spoke", - "hub" - ], - "description": "The site-to-site VPN mode. Can be one of 'none', 'spoke' or 'hub'" - }, - "hubs": { - "type": "array", - "items": { - "type": "object", - "properties": { - "hubId": { - "type": "string", - "description": "The network ID of the hub." - }, - "useDefaultRoute": { - "type": "boolean", - "description": "Only valid in 'spoke' mode. Indicates whether default route traffic should be sent to this hub." - } - }, - "required": [ - "hubId" - ] - }, - "description": "The list of VPN hubs, in order of preference. In spoke mode, at least 1 hub is required." - }, - "subnets": { - "type": "array", - "items": { - "type": "object", - "properties": { - "localSubnet": { - "type": "string", - "description": "The CIDR notation subnet used within the VPN" - }, - "useVpn": { - "type": "boolean", - "description": "Indicates the presence of the subnet in the VPN" - } - }, - "required": [ - "localSubnet" - ] - }, - "description": "The list of subnets and their VPN presence." - } - }, - "example": { - "mode": "spoke", - "hubs": [ - { - "hubId": "N_4901849", - "useDefaultRoute": true - }, - { - "hubId": "N_1892489", - "useDefaultRoute": false - } - ], - "subnets": [ - { - "localSubnet": "192.168.1.0/24", - "useVpn": true - }, - { - "localSubnet": "192.168.128.0/24", - "useVpn": true - } - ] - }, - "required": [ - "mode" - ] - }, - "required": true + "localStatusPageEnabled": true, + "remoteStatusPageEnabled": true + } + } } ], "responses": { @@ -12979,34 +13371,15 @@ }, "examples": { "application/json": { - "mode": "spoke", - "hubs": [ - { - "hubId": "N_4901849", - "useDefaultRoute": true - }, - { - "hubId": "N_1892489", - "useDefaultRoute": false - } - ], - "subnets": [ - { - "localSubnet": "192.168.1.0/24", - "useVpn": true - }, - { - "localSubnet": "192.168.128.0/24", - "useVpn": true - } - ] + "localStatusPageEnabled": true, + "remoteStatusPageEnabled": true } } } }, - "summary": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", + "summary": "Update the settings for a network", "tags": [ - "Networks" + "Network settings" ] } }, @@ -15129,374 +15502,52 @@ "required": true }, { - "name": "updateNetworkSnmpSettings", - "in": "body", - "schema": { - "type": "object", - "properties": { - "access": { - "type": "string", - "enum": [ - "none", - "community", - "users" - ], - "description": "The type of SNMP access. Can be one of 'none' (disabled), 'community' (V1/V2c), or 'users' (V3)." - }, - "communityString": { - "type": "string", - "description": "The SNMP community string. Only relevant if 'access' is set to 'community'." - }, - "users": { - "type": "array", - "items": { - "type": "object", - "properties": { - "username": { - "type": "string", - "description": "The username for the SNMP user. Required." - }, - "passphrase": { - "type": "string", - "description": "The passphrase for the SNMP user. Required." - } - }, - "required": [ - "username", - "passphrase" - ] - }, - "description": "The list of SNMP users. Only relevant if 'access' is set to 'users'." - } - }, - "example": { - "access": "users", - "users": [ - { - "username": "AzureDiamond", - "passphrase": "hunter2" - } - ] - } - } - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "access": "users", - "users": [ - { - "username": "AzureDiamond", - "passphrase": "hunter2" - } - ] - } - } - } - }, - "summary": "Update the SNMP settings for a network", - "tags": [ - "SNMP settings" - ] - } - }, - "/networks/{networkId}/splashLoginAttempts": { - "get": { - "description": "List the splash login attempts for a network", - "operationId": "getNetworkSplashLoginAttempts", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "type": "integer", - "enum": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ], - "name": "ssidNumber", - "in": "query", - "description": "Only return the login attempts for the specified SSID" - }, - { - "type": "string", - "name": "loginIdentifier", - "in": "query", - "description": "The username, email, or phone number used during login" - }, - { - "type": "integer", - "name": "timespan", - "in": "query", - "description": "The timespan, in seconds, for the login attempts. The period will be from [timespan] seconds ago until now. The maximum timespan is 3 months" - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": [ - { - "name": "Miles Meraki", - "login": "miles@meraki.com", - "ssid": "My SSID", - "loginAt": "2018-02-11T00:00:00.090210Z", - "gatewayDeviceMac": "00:11:22:33:44:55", - "clientMac": "22:33:44:55:66:77", - "clientId": "k74272e", - "authorization": "success" - } - ] - } - } - }, - "summary": "List the splash login attempts for a network", - "tags": [ - "Splash login attempts" - ] - } - }, - "/networks/{networkId}/split": { - "post": { - "description": "Split a combined network into individual networks for each type of device", - "operationId": "splitNetwork", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "resultingNetworks": [ - { - "id": "N_1234", - "organizationId": "2930418", - "name": "Long Island Office - switch", - "timeZone": "America/Los_Angeles", - "tags": " tag1 tag2 ", - "productTypes": [ - "switch" - ], - "enrollmentString": "long-island-office" - }, - { - "id": "N_5678", - "organizationId": "2930418", - "name": "Long Island Office - wireless", - "timeZone": "America/Los_Angeles", - "tags": " tag1 tag2 ", - "productTypes": [ - "wireless" - ], - "enrollmentString": "long-island-office" - } - ] - } - } - } - }, - "summary": "Split a combined network into individual networks for each type of device", - "tags": [ - "Networks" - ] - } - }, - "/networks/{networkId}/ssids/{number}/trafficShaping": { - "put": { - "description": "Update the traffic shaping settings for an SSID on an MR network", - "operationId": "updateNetworkSsidTrafficShaping", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "number", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "updateNetworkSsidTrafficShaping", + "name": "updateNetworkSnmpSettings", "in": "body", "schema": { "type": "object", "properties": { - "trafficShapingEnabled": { - "type": "boolean", - "description": "Whether traffic shaping rules are applied to clients on your SSID." + "access": { + "type": "string", + "enum": [ + "none", + "community", + "users" + ], + "description": "The type of SNMP access. Can be one of 'none' (disabled), 'community' (V1/V2c), or 'users' (V3)." }, - "defaultRulesEnabled": { - "type": "boolean", - "description": " Whether default traffic shaping rules are enabled (true) or disabled (false).\n There are 4 default rules, which can\n be seen on your network's traffic shaping page. Note that default rules\n count against the rule limit of 8.\n" + "communityString": { + "type": "string", + "description": "The SNMP community string. Only relevant if 'access' is set to 'community'." }, - "rules": { + "users": { "type": "array", "items": { "type": "object", "properties": { - "definitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "application", - "applicationCategory", - "host", - "port", - "ipRange", - "localNet" - ], - "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." - }, - "value": { - "type": "string", - "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" - } - }, - "required": [ - "type", - "value" - ] - }, - "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" - }, - "perClientBandwidthLimits": { - "type": "object", - "properties": { - "settings": { - "type": "string", - "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." - }, - "bandwidthLimits": { - "type": "object", - "properties": { - "limitUp": { - "type": "integer", - "description": "The maximum upload limit (integer, in Kbps)." - }, - "limitDown": { - "type": "integer", - "description": "The maximum download limit (integer, in Kbps)." - } - }, - "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." - } - }, - "description": " An object describing the bandwidth settings for your rule.\n" - }, - "dscpTagValue": { - "type": "integer", - "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n" + "username": { + "type": "string", + "description": "The username for the SNMP user. Required." }, - "pcpTagValue": { - "type": "integer", - "description": " The PCP tag applied by your rule. Can be 0 (lowest priority) through 7 (highest priority).\n null means 'Do not set PCP tag'.\n" + "passphrase": { + "type": "string", + "description": "The passphrase for the SNMP user. Required." } }, "required": [ - "definitions" + "username", + "passphrase" ] }, - "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" + "description": "The list of SNMP users. Only relevant if 'access' is set to 'users'." } }, "example": { - "trafficShapingEnabled": true, - "defaultRulesEnabled": true, - "rules": [ + "access": "users", + "users": [ { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } - ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "pcpTagValue": null + "username": "AzureDiamond", + "passphrase": "hunter2" } ] } @@ -15512,85 +15563,109 @@ }, "examples": { "application/json": { - "trafficShapingEnabled": true, - "defaultRulesEnabled": true, - "rules": [ + "access": "users", + "users": [ { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } - ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "pcpTagValue": null + "username": "AzureDiamond", + "passphrase": "hunter2" } ] } } } }, - "summary": "Update the traffic shaping settings for an SSID on an MR network", + "summary": "Update the SNMP settings for a network", + "tags": [ + "SNMP settings" + ] + } + }, + "/networks/{networkId}/splashLoginAttempts": { + "get": { + "description": "List the splash login attempts for a network", + "operationId": "getNetworkSplashLoginAttempts", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "type": "integer", + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ], + "name": "ssidNumber", + "in": "query", + "description": "Only return the login attempts for the specified SSID" + }, + { + "type": "string", + "name": "loginIdentifier", + "in": "query", + "description": "The username, email, or phone number used during login" + }, + { + "type": "integer", + "name": "timespan", + "in": "query", + "description": "The timespan, in seconds, for the login attempts. The period will be from [timespan] seconds ago until now. The maximum timespan is 3 months" + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": [ + { + "name": "Miles Meraki", + "login": "miles@meraki.com", + "ssid": "My SSID", + "loginAt": "2018-02-11T00:00:00.090210Z", + "gatewayDeviceMac": "00:11:22:33:44:55", + "clientMac": "22:33:44:55:66:77", + "clientId": "k74272e", + "authorization": "success" + } + ] + } + } + }, + "summary": "List the splash login attempts for a network", "tags": [ - "Traffic shaping" + "Splash login attempts" ] - }, - "get": { - "description": "Display the traffic shaping settings for a SSID on an MR network", - "operationId": "getNetworkSsidTrafficShaping", + } + }, + "/networks/{networkId}/split": { + "post": { + "description": "Split a combined network into individual networks for each type of device", + "operationId": "splitNetwork", "parameters": [ { "name": "networkId", "in": "path", "type": "string", "required": true - }, - { - "name": "number", - "in": "path", - "type": "string", - "required": true } ], "responses": { @@ -15602,68 +15677,37 @@ }, "examples": { "application/json": { - "trafficShapingEnabled": true, - "defaultRulesEnabled": true, - "rules": [ + "resultingNetworks": [ { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } + "id": "N_1234", + "organizationId": "2930418", + "name": "Long Island Office - switch", + "timeZone": "America/Los_Angeles", + "tags": " tag1 tag2 ", + "productTypes": [ + "switch" ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "pcpTagValue": null + "enrollmentString": "long-island-office" + }, + { + "id": "N_5678", + "organizationId": "2930418", + "name": "Long Island Office - wireless", + "timeZone": "America/Los_Angeles", + "tags": " tag1 tag2 ", + "productTypes": [ + "wireless" + ], + "enrollmentString": "long-island-office" } ] } } } }, - "summary": "Display the traffic shaping settings for a SSID on an MR network", + "summary": "Split a combined network into individual networks for each type of device", "tags": [ - "Traffic shaping" + "Networks" ] } }, @@ -19162,9 +19206,15 @@ }, { "type": "string", + "enum": [ + "combined", + "wireless", + "switch", + "appliance" + ], "name": "deviceType", "in": "query", - "description": " Filter the data by device type: combined (default), wireless, switch, appliance.\n When using combined, for each rule the data will come from the device type with the most usage.\n" + "description": " Filter the data by device type: 'combined', 'wireless', 'switch' or 'appliance'. Defaults to 'combined'.\n When using 'combined', for each rule the data will come from the device type with the most usage.\n" } ], "responses": { @@ -19254,148 +19304,10 @@ "tags": [ "Traffic analysis settings" ] - }, - "put": { - "description": "Update the traffic analysis settings for a network", - "operationId": "updateNetworkTrafficAnalysisSettings", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "updateNetworkTrafficAnalysisSettings", - "in": "body", - "schema": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "enum": [ - "disabled", - "basic", - "detailed" - ], - "description": " The traffic analysis mode for the network. Can be one of 'disabled' (do not collect traffic types),\n 'basic' (collect generic traffic categories), or 'detailed' (collect destination hostnames).\n" - }, - "customPieChartItems": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of the custom pie chart item." - }, - "type": { - "type": "string", - "enum": [ - "host", - "port", - "ipRange" - ], - "description": " The signature type for the custom pie chart item. Can be one of 'host', 'port' or 'ipRange'.\n" - }, - "value": { - "type": "string", - "description": " The value of the custom pie chart item. Valid syntax depends on the signature type of the chart item\n (see sample request/response for more details).\n" - } - }, - "required": [ - "name", - "type", - "value" - ] - }, - "description": "The list of items that make up the custom pie chart for traffic reporting." - } - }, - "example": { - "mode": "detailed", - "customPieChartItems": [ - { - "name": "Item from hostname", - "type": "host", - "value": "example.com" - }, - { - "name": "Item from port", - "type": "port", - "value": "440" - }, - { - "name": "Item from IP", - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "name": "Item from IP range (CIDR)", - "type": "ipRange", - "value": "192.2.0.0/16" - }, - { - "name": "Item from IP range with port", - "type": "ipRange", - "value": "192.3.0.0/16:80" - } - ] - } - } - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "mode": "detailed", - "customPieChartItems": [ - { - "name": "Item from hostname", - "type": "host", - "value": "example.com" - }, - { - "name": "Item from port", - "type": "port", - "value": "440" - }, - { - "name": "Item from IP", - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "name": "Item from IP range (CIDR)", - "type": "ipRange", - "value": "192.2.0.0/16" - }, - { - "name": "Item from IP range with port", - "type": "ipRange", - "value": "192.3.0.0/16:80" - } - ] - } - } - } - }, - "summary": "Update the traffic analysis settings for a network", - "tags": [ - "Traffic analysis settings" - ] - } - }, - "/networks/{networkId}/trafficShaping": { + }, "put": { - "description": "Update the traffic shaping settings for an MX network", - "operationId": "updateNetworkTrafficShaping", + "description": "Update the traffic analysis settings for a network", + "operationId": "updateNetworkTrafficAnalysisSettings", "parameters": [ { "name": "networkId", @@ -19404,230 +19316,84 @@ "required": true }, { - "name": "updateNetworkTrafficShaping", + "name": "updateNetworkTrafficAnalysisSettings", "in": "body", "schema": { "type": "object", "properties": { - "defaultRulesEnabled": { - "type": "boolean", - "description": " Whether default traffic shaping rules are enabled (true) or disabled (false).\n There are 4 default rules, which can\n be seen on your network's traffic shaping page. Note that default rules\n count against the rule limit of 8.\n" + "mode": { + "type": "string", + "enum": [ + "disabled", + "basic", + "detailed" + ], + "description": " The traffic analysis mode for the network. Can be one of 'disabled' (do not collect traffic types),\n 'basic' (collect generic traffic categories), or 'detailed' (collect destination hostnames).\n" }, - "rules": { + "customPieChartItems": { "type": "array", "items": { "type": "object", "properties": { - "definitions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "application", - "applicationCategory", - "host", - "port", - "ipRange", - "localNet" - ], - "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." - }, - "value": { - "type": "string", - "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" - } - }, - "required": [ - "type", - "value" - ] - }, - "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" - }, - "perClientBandwidthLimits": { - "type": "object", - "properties": { - "settings": { - "type": "string", - "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." - }, - "bandwidthLimits": { - "type": "object", - "properties": { - "limitUp": { - "type": "integer", - "description": "The maximum upload limit (integer, in Kbps)." - }, - "limitDown": { - "type": "integer", - "description": "The maximum download limit (integer, in Kbps)." - } - }, - "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." - } - }, - "description": " An object describing the bandwidth settings for your rule.\n" + "name": { + "type": "string", + "description": "The name of the custom pie chart item." }, - "dscpTagValue": { - "type": "integer", - "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n" + "type": { + "type": "string", + "enum": [ + "host", + "port", + "ipRange" + ], + "description": " The signature type for the custom pie chart item. Can be one of 'host', 'port' or 'ipRange'.\n" }, - "priority": { + "value": { "type": "string", - "description": " A string, indicating the priority level for packets bound to your rule.\n Can be 'low', 'normal' or 'high'.\n" + "description": " The value of the custom pie chart item. Valid syntax depends on the signature type of the chart item\n (see sample request/response for more details).\n" } }, "required": [ - "definitions" + "name", + "type", + "value" ] }, - "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" + "description": "The list of items that make up the custom pie chart for traffic reporting." } }, "example": { - "defaultRulesEnabled": true, - "rules": [ + "mode": "detailed", + "customPieChartItems": [ { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } - ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "priority": "normal" - } - ] - } - } - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "defaultRulesEnabled": true, - "rules": [ + "name": "Item from hostname", + "type": "host", + "value": "example.com" + }, { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } - ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "priority": "normal" + "name": "Item from port", + "type": "port", + "value": "440" + }, + { + "name": "Item from IP", + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "name": "Item from IP range (CIDR)", + "type": "ipRange", + "value": "192.2.0.0/16" + }, + { + "name": "Item from IP range with port", + "type": "ipRange", + "value": "192.3.0.0/16:80" } ] } } } - }, - "summary": "Update the traffic shaping settings for an MX network", - "tags": [ - "Traffic shaping" - ] - }, - "get": { - "description": "Display the traffic shaping settings for an MX network", - "operationId": "getNetworkTrafficShaping", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - } ], "responses": { "200": { @@ -19638,67 +19404,41 @@ }, "examples": { "application/json": { - "defaultRulesEnabled": true, - "rules": [ + "mode": "detailed", + "customPieChartItems": [ + { + "name": "Item from hostname", + "type": "host", + "value": "example.com" + }, { - "definitions": [ - { - "type": "host", - "value": "google.com" - }, - { - "type": "port", - "value": "9090" - }, - { - "type": "ipRange", - "value": "192.1.0.0" - }, - { - "type": "ipRange", - "value": "192.1.0.0/16" - }, - { - "type": "ipRange", - "value": "10.1.0.0/16:80" - }, - { - "type": "localNet", - "value": "192.168.0.0/16" - }, - { - "type": "applicationCategory", - "value": { - "id": "meraki:layer7/category/2", - "name": "Blogging" - } - }, - { - "type": "application", - "value": { - "id": "meraki:layer7/application/133", - "name": "Battle.net" - } - } - ], - "perClientBandwidthLimits": { - "settings": "custom", - "bandwidthLimits": { - "limitUp": 1000000, - "limitDown": 1000000 - } - }, - "dscpTagValue": null, - "priority": "normal" + "name": "Item from port", + "type": "port", + "value": "440" + }, + { + "name": "Item from IP", + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "name": "Item from IP range (CIDR)", + "type": "ipRange", + "value": "192.2.0.0/16" + }, + { + "name": "Item from IP range with port", + "type": "ipRange", + "value": "192.3.0.0/16:80" } ] } } } }, - "summary": "Display the traffic shaping settings for an MX network", + "summary": "Update the traffic analysis settings for a network", "tags": [ - "Traffic shaping" + "Traffic analysis settings" ] } }, @@ -22319,6 +22059,21 @@ "lanIsolationEnabled": { "type": "boolean", "description": "Boolean indicating whether Layer 2 LAN isolation should be enabled or disabled. Only configurable when ipAssignmentMode is 'Bridge mode'." + }, + "visible": { + "type": "boolean", + "description": "Boolean indicating whether APs should advertise or hide this SSID. APs will only broadcast this SSID if set to true" + }, + "availableOnAllAps": { + "type": "boolean", + "description": "Boolean indicating whether all APs should broadcast the SSID or if it should be restricted to APs matching any availability tags. Can only be false if the SSID has availability tags." + }, + "availabilityTags": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Accepts a list of tags for this SSID. If availableOnAllAps is false, then the SSID will only be broadcast by APs with tags matching any of the tags in this list." } }, "example": { @@ -22337,51 +22092,209 @@ }, "examples": { "application/json": { - "number": 0, - "name": "My SSID", - "enabled": true, - "splashPage": "Click-through splash page", - "ssidAdminAccessible": false, - "authMode": "8021x-radius", - "encryptionMode": "wpa-eap", - "wpaEncryptionMode": "WPA2 only", - "radiusServers": [ + "number": 0, + "name": "My SSID", + "enabled": true, + "splashPage": "Click-through splash page", + "ssidAdminAccessible": false, + "authMode": "8021x-radius", + "encryptionMode": "wpa-eap", + "wpaEncryptionMode": "WPA2 only", + "radiusServers": [ + { + "host": "0.0.0.0", + "port": 3000 + } + ], + "radiusAccountingEnabled": false, + "radiusEnabled": true, + "radiusAttributeForGroupPolicies": "Filter-Id", + "radiusFailoverPolicy": "null", + "radiusLoadBalancingPolicy": "null", + "ipAssignmentMode": "NAT mode", + "adminSplashUrl": "http://example.com", + "splashTimeout": "30 minutes", + "walledGardenEnabled": true, + "walledGardenRanges": [ + "example.com", + "1.1.1.1\u001A" + ], + "minBitrate": 11, + "bandSelection": "5 GHz band only", + "perClientBandwidthLimitUp": 0, + "perClientBandwidthLimitDown": 0 + } + } + } + }, + "summary": "Update the attributes of an SSID", + "tags": [ + "SSIDs" + ] + } + }, + "/networks/{networkId}/wireless/ssids/{number}/firewall/l3FirewallRules": { + "get": { + "description": "Return the L3 firewall rules for an SSID on an MR network", + "operationId": "getNetworkWirelessSsidFirewallL3FirewallRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "number", + "in": "path", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "rules": [ + { + "comment": "Allow TCP traffic to subnet with HTTP servers.", + "policy": "allow", + "protocol": "tcp", + "destPort": 443, + "destCidr": "192.168.1.0/24" + } + ] + } + } + } + }, + "summary": "Return the L3 firewall rules for an SSID on an MR network", + "tags": [ + "MR L3 firewall" + ] + }, + "put": { + "description": "Update the L3 firewall rules of an SSID on an MR network", + "operationId": "updateNetworkWirelessSsidFirewallL3FirewallRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "number", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "updateNetworkWirelessSsidFirewallL3FirewallRules", + "in": "body", + "schema": { + "type": "object", + "properties": { + "rules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "comment": { + "type": "string", + "description": "Description of the rule (optional)" + }, + "policy": { + "type": "string", + "enum": [ + "allow", + "deny" + ], + "description": "'allow' or 'deny' traffic specified by this rule" + }, + "protocol": { + "type": "string", + "enum": [ + "tcp", + "udp", + "icmp", + "any" + ], + "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')" + }, + "destPort": { + "type": "string", + "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" + }, + "destCidr": { + "type": "string", + "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" + } + }, + "required": [ + "policy", + "protocol", + "destCidr" + ] + }, + "description": "An ordered array of the firewall rules for this SSID (not including the local LAN access rule or the default rule)" + }, + "allowLanAccess": { + "type": "boolean", + "description": "Allow wireless client access to local LAN (boolean value - true allows access and false denies access) (optional)" + } + }, + "example": { + "rules": [ + { + "comment": "Allow TCP traffic to subnet with HTTP servers.", + "policy": "allow", + "protocol": "tcp", + "destPort": 443, + "destCidr": "192.168.1.0/24" + } + ] + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "rules": [ { - "host": "0.0.0.0", - "port": 3000 + "comment": "Allow TCP traffic to subnet with HTTP servers.", + "policy": "allow", + "protocol": "tcp", + "destPort": 443, + "destCidr": "192.168.1.0/24" } - ], - "radiusAccountingEnabled": false, - "radiusEnabled": true, - "radiusAttributeForGroupPolicies": "Filter-Id", - "radiusFailoverPolicy": "null", - "radiusLoadBalancingPolicy": "null", - "ipAssignmentMode": "NAT mode", - "adminSplashUrl": "http://example.com", - "splashTimeout": "30 minutes", - "walledGardenEnabled": true, - "walledGardenRanges": [ - "example.com", - "1.1.1.1\u001A" - ], - "minBitrate": 11, - "bandSelection": "5 GHz band only", - "perClientBandwidthLimitUp": 0, - "perClientBandwidthLimitDown": 0 + ] } } } }, - "summary": "Update the attributes of an SSID", + "summary": "Update the L3 firewall rules of an SSID on an MR network", "tags": [ - "SSIDs" + "MR L3 firewall" ] } }, - "/networks/{networkId}/wireless/ssids/{number}/firewall/l3FirewallRules": { + "/networks/{networkId}/wireless/ssids/{number}/splash/settings": { "get": { - "description": "Return the L3 firewall rules for an SSID on an MR network", - "operationId": "getNetworkWirelessSsidFirewallL3FirewallRules", + "description": "Display the splash page settings for the given SSID", + "operationId": "getNetworkWirelessSsidSplashSettings", "parameters": [ { "name": "networkId", @@ -22405,27 +22318,22 @@ }, "examples": { "application/json": { - "rules": [ - { - "comment": "Allow TCP traffic to subnet with HTTP servers.", - "policy": "allow", - "protocol": "tcp", - "destPort": 443, - "destCidr": "192.168.1.0/24" - } - ] + "ssidNumber": 0, + "splashPage": "Click-through splash page", + "splashUrl": "https://www.custom_splash_url.com", + "useSplashUrl": true } } } }, - "summary": "Return the L3 firewall rules for an SSID on an MR network", + "summary": "Display the splash page settings for the given SSID", "tags": [ - "MR L3 firewall" + "Splash settings" ] }, "put": { - "description": "Update the L3 firewall rules of an SSID on an MR network", - "operationId": "updateNetworkWirelessSsidFirewallL3FirewallRules", + "description": "Modify the splash page settings for the given SSID", + "operationId": "updateNetworkWirelessSsidSplashSettings", "parameters": [ { "name": "networkId", @@ -22440,68 +22348,209 @@ "required": true }, { - "name": "updateNetworkWirelessSsidFirewallL3FirewallRules", + "name": "updateNetworkWirelessSsidSplashSettings", + "in": "body", + "schema": { + "type": "object", + "properties": { + "splashUrl": { + "type": "string", + "description": "[optional] The custom splash URL of the click-through splash page. Note that the URL can be configured without necessarily being used. In order to enable the custom URL, see 'useSplashUrl'" + }, + "useSplashUrl": { + "type": "boolean", + "description": "[optional] Boolean indicating whether the user will be redirected to the custom splash url. A custom splash URL must be set if this is true. Note that depending on your SSID's access control settings, it may not be possible to use the custom splash URL." + } + }, + "example": { + "splashUrl": "https://www.custom_splash_url.com", + "useSplashUrl": true + } + } + } + ], + "responses": { + "200": { + "description": "Successful operation", + "schema": { + "type": "object", + "x-is-dynamic": true + }, + "examples": { + "application/json": { + "ssidNumber": 0, + "splashPage": "Click-through splash page", + "splashUrl": "https://www.custom_splash_url.com", + "useSplashUrl": true + } + } + } + }, + "summary": "Modify the splash page settings for the given SSID", + "tags": [ + "Splash settings" + ] + } + }, + "/networks/{networkId}/wireless/ssids/{number}/trafficShaping/rules": { + "put": { + "description": "Update the traffic shaping settings for an SSID on an MR network", + "operationId": "updateNetworkWirelessSsidTrafficShapingRules", + "parameters": [ + { + "name": "networkId", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "number", + "in": "path", + "type": "string", + "required": true + }, + { + "name": "updateNetworkWirelessSsidTrafficShapingRules", "in": "body", "schema": { "type": "object", "properties": { + "trafficShapingEnabled": { + "type": "boolean", + "description": "Whether traffic shaping rules are applied to clients on your SSID." + }, + "defaultRulesEnabled": { + "type": "boolean", + "description": " Whether default traffic shaping rules are enabled (true) or disabled (false).\n There are 4 default rules, which can\n be seen on your network's traffic shaping page. Note that default rules\n count against the rule limit of 8.\n" + }, "rules": { "type": "array", "items": { "type": "object", "properties": { - "comment": { - "type": "string", - "description": "Description of the rule (optional)" + "definitions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "application", + "applicationCategory", + "host", + "port", + "ipRange", + "localNet" + ], + "description": "The type of definition. Can be one of 'application', 'applicationCategory', 'host', 'port', 'ipRange' or 'localNet'." + }, + "value": { + "type": "string", + "description": " If \"type\" is 'host', 'port', 'ipRange' or 'localNet', then \"value\" must be a string, matching either\n a hostname (e.g. \"somesite.com\"), a port (e.g. 8080), or an IP range (\"192.1.0.0\",\n \"192.1.0.0/16\", or \"10.1.0.0/16:80\"). 'localNet' also supports CIDR notation, excluding\n custom ports.\n If \"type\" is 'application' or 'applicationCategory', then \"value\" must be an object\n with the structure { \"id\": \"meraki:layer7/...\" }, where \"id\" is the application category or\n application ID (for a list of IDs for your network, use the trafficShaping/applicationCategories\n endpoint).\n" + } + }, + "required": [ + "type", + "value" + ] + }, + "description": " A list of objects describing the definitions of your traffic shaping rule. At least one definition is required.\n" }, - "policy": { - "type": "string", - "enum": [ - "allow", - "deny" - ], - "description": "'allow' or 'deny' traffic specified by this rule" + "perClientBandwidthLimits": { + "type": "object", + "properties": { + "settings": { + "type": "string", + "description": "How bandwidth limits are applied by your rule. Can be one of 'network default', 'ignore' or 'custom'." + }, + "bandwidthLimits": { + "type": "object", + "properties": { + "limitUp": { + "type": "integer", + "description": "The maximum upload limit (integer, in Kbps)." + }, + "limitDown": { + "type": "integer", + "description": "The maximum download limit (integer, in Kbps)." + } + }, + "description": "The bandwidth limits object, specifying the upload ('limitUp') and download ('limitDown') speed in Kbps. These are only enforced if 'settings' is set to 'custom'." + } + }, + "description": " An object describing the bandwidth settings for your rule.\n" }, - "protocol": { - "type": "string", - "enum": [ - "tcp", - "udp", - "icmp", - "any" - ], - "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')" + "dscpTagValue": { + "type": "integer", + "description": " The DSCP tag applied by your rule. null means 'Do not change DSCP tag'.\n For a list of possible tag values, use the trafficShaping/dscpTaggingOptions endpoint.\n" + }, + "pcpTagValue": { + "type": "integer", + "description": " The PCP tag applied by your rule. Can be 0 (lowest priority) through 7 (highest priority).\n null means 'Do not set PCP tag'.\n" + } + }, + "required": [ + "definitions" + ] + }, + "description": " An array of traffic shaping rules. Rules are applied in the order that\n they are specified in. An empty list (or null) means no rules. Note that\n you are allowed a maximum of 8 rules.\n" + } + }, + "example": { + "trafficShapingEnabled": true, + "defaultRulesEnabled": true, + "rules": [ + { + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" }, - "destPort": { - "type": "string", - "description": "Comma-separated list of destination port(s) (integer in the range 1-65535), or 'any'" + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } }, - "destCidr": { - "type": "string", - "description": "Comma-separated list of destination IP address(es) (in IP or CIDR notation), fully-qualified domain names (FQDN) or 'any'" + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 } }, - "required": [ - "policy", - "protocol", - "destCidr" - ] - }, - "description": "An ordered array of the firewall rules for this SSID (not including the local LAN access rule or the default rule)" - }, - "allowLanAccess": { - "type": "boolean", - "description": "Allow wireless client access to local LAN (boolean value - true allows access and false denies access) (optional)" - } - }, - "example": { - "rules": [ - { - "comment": "Allow TCP traffic to subnet with HTTP servers.", - "policy": "allow", - "protocol": "tcp", - "destPort": 443, - "destCidr": "192.168.1.0/24" + "dscpTagValue": null, + "pcpTagValue": null } ] } @@ -22517,68 +22566,73 @@ }, "examples": { "application/json": { + "trafficShapingEnabled": true, + "defaultRulesEnabled": true, "rules": [ { - "comment": "Allow TCP traffic to subnet with HTTP servers.", - "policy": "allow", - "protocol": "tcp", - "destPort": 443, - "destCidr": "192.168.1.0/24" + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" + }, + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } + }, + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 + } + }, + "dscpTagValue": null, + "pcpTagValue": null } ] } } } }, - "summary": "Update the L3 firewall rules of an SSID on an MR network", - "tags": [ - "MR L3 firewall" - ] - } - }, - "/networks/{networkId}/wireless/ssids/{number}/splash/settings": { - "get": { - "description": "Display the splash page settings for the given SSID", - "operationId": "getNetworkWirelessSsidSplashSettings", - "parameters": [ - { - "name": "networkId", - "in": "path", - "type": "string", - "required": true - }, - { - "name": "number", - "in": "path", - "type": "string", - "required": true - } - ], - "responses": { - "200": { - "description": "Successful operation", - "schema": { - "type": "object", - "x-is-dynamic": true - }, - "examples": { - "application/json": { - "ssidNumber": 0, - "splashPage": "Click-through splash page", - "splashUrl": "https://www.custom_splash_url.com", - "useSplashUrl": true - } - } - } - }, - "summary": "Display the splash page settings for the given SSID", + "summary": "Update the traffic shaping settings for an SSID on an MR network", "tags": [ - "Splash settings" + "Traffic shaping" ] }, - "put": { - "description": "Modify the splash page settings for the given SSID", - "operationId": "updateNetworkWirelessSsidSplashSettings", + "get": { + "description": "Display the traffic shaping settings for a SSID on an MR network", + "operationId": "getNetworkWirelessSsidTrafficShapingRules", "parameters": [ { "name": "networkId", @@ -22591,27 +22645,6 @@ "in": "path", "type": "string", "required": true - }, - { - "name": "updateNetworkWirelessSsidSplashSettings", - "in": "body", - "schema": { - "type": "object", - "properties": { - "splashUrl": { - "type": "string", - "description": "[optional] The custom splash URL of the click-through splash page. Note that the URL can be configured without necessarily being used. In order to enable the custom URL, see 'useSplashUrl'" - }, - "useSplashUrl": { - "type": "boolean", - "description": "[optional] Boolean indicating whether the user will be redirected to the custom splash url. A custom splash URL must be set if this is true. Note that depending on your SSID's access control settings, it may not be possible to use the custom splash URL." - } - }, - "example": { - "splashUrl": "https://www.custom_splash_url.com", - "useSplashUrl": true - } - } } ], "responses": { @@ -22623,17 +22656,68 @@ }, "examples": { "application/json": { - "ssidNumber": 0, - "splashPage": "Click-through splash page", - "splashUrl": "https://www.custom_splash_url.com", - "useSplashUrl": true + "trafficShapingEnabled": true, + "defaultRulesEnabled": true, + "rules": [ + { + "definitions": [ + { + "type": "host", + "value": "google.com" + }, + { + "type": "port", + "value": "9090" + }, + { + "type": "ipRange", + "value": "192.1.0.0" + }, + { + "type": "ipRange", + "value": "192.1.0.0/16" + }, + { + "type": "ipRange", + "value": "10.1.0.0/16:80" + }, + { + "type": "localNet", + "value": "192.168.0.0/16" + }, + { + "type": "applicationCategory", + "value": { + "id": "meraki:layer7/category/2", + "name": "Blogging" + } + }, + { + "type": "application", + "value": { + "id": "meraki:layer7/application/133", + "name": "Battle.net" + } + } + ], + "perClientBandwidthLimits": { + "settings": "custom", + "bandwidthLimits": { + "limitUp": 1000000, + "limitDown": 1000000 + } + }, + "dscpTagValue": null, + "pcpTagValue": null + } + ] } } } }, - "summary": "Modify the splash page settings for the given SSID", + "summary": "Display the traffic shaping settings for a SSID on an MR network", "tags": [ - "Splash settings" + "Traffic shaping" ] } }, @@ -24536,7 +24620,7 @@ "/organizations/{organizationId}/claim": { "post": { "description": "Claim a list of devices, licenses, and/or orders into an organization. When claiming by order, all devices and licenses in the order will be claimed; licenses will be added to the organization and devices will be placed in the organization's inventory.", - "operationId": "claimOrganization", + "operationId": "claimIntoOrganization", "parameters": [ { "name": "organizationId", @@ -24545,7 +24629,7 @@ "required": true }, { - "name": "claimOrganization", + "name": "claimIntoOrganization", "in": "body", "schema": { "type": "object", @@ -26966,7 +27050,10 @@ "disabled" ], "childLifetime": 28800 - } + }, + "networkTags": [ + "all" + ] }, { "name": "My peer 2", @@ -26977,6 +27064,9 @@ "192.168.129.0/24" ], "secret": "asdf56785678567856785678", + "networkTags": [ + "none" + ], "ipsecPoliciesPreset": "default" } ] @@ -27142,7 +27232,10 @@ "disabled" ], "childLifetime": 28800 - } + }, + "networkTags": [ + "all" + ] }, { "name": "My peer 2", @@ -27153,6 +27246,9 @@ "192.168.129.0/24" ], "secret": "asdf56785678567856785678", + "networkTags": [ + "none" + ], "ipsecPoliciesPreset": "default" } ] @@ -27203,7 +27299,10 @@ "disabled" ], "childLifetime": 28800 - } + }, + "networkTags": [ + "all" + ] }, { "name": "My peer 2", @@ -27214,6 +27313,9 @@ "192.168.129.0/24" ], "secret": "asdf56785678567856785678", + "networkTags": [ + "none" + ], "ipsecPoliciesPreset": "default" } ] @@ -27903,7 +28005,7 @@ { "group": "Management interface settings", "summary": "Update the management interface settings for a device", - "resource": "/devices/{serial}/managementInterfaceSettings", + "resource": "/devices/{serial}/managementInterface", "operation": "update" }, { @@ -27975,7 +28077,7 @@ { "group": "Quality and retention setting", "summary": "Update quality and retention settings for the given camera", - "resource": "/devices/{serial}/camera/qualityAndRetentionSettings", + "resource": "/devices/{serial}/camera/qualityAndRetention", "operation": "update" }, { @@ -28011,7 +28113,7 @@ { "group": "Site to site vpn", "summary": "Update the site-to-site VPN settings of a network. Only valid for MX networks in NAT mode.", - "resource": "/networks/{networkId}/siteToSiteVpn", + "resource": "/networks/{networkId}/appliance/vpn/siteToSiteVpn", "operation": "update" }, { @@ -28046,14 +28148,14 @@ }, { "group": "Traffic shaping settings", - "summary": "Update the traffic shaping settings for an SSID on an MR network", - "resource": "/networks/{networkId}/ssids/{number}/trafficShaping", + "summary": "Update the traffic shaping settings for an MX network", + "resource": "/networks/{networkId}/appliance/trafficShaping/rules", "operation": "update" }, { "group": "Traffic shaping settings", - "summary": "Update the traffic shaping settings for an MX network", - "resource": "/networks/{networkId}/trafficShaping", + "summary": "Update the traffic shaping settings for an SSID on an MR network", + "resource": "/networks/{networkId}/wireless/ssids/{number}/trafficShaping/rules", "operation": "update" }, { @@ -28093,4 +28195,4 @@ "operation": "update" } ] -} \ No newline at end of file +}