diff --git a/openapi/spec2.json b/openapi/spec2.json
index 2f2ecff..7c3f453 100644
--- a/openapi/spec2.json
+++ b/openapi/spec2.json
@@ -1,9 +1,9 @@
{
"swagger": "2.0",
"info": {
- "version": "1.42.0",
+ "version": "1.43.0",
"title": "Meraki Dashboard API",
- "description": "The Cisco Meraki Dashboard API is a modern REST API based on the OpenAPI specification.\n\n> Date: 03 January, 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: 07 February, 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"
@@ -415,6 +415,12 @@
"description": "Claim a subscription into an organization.",
"operationId": "claimAdministeredLicensingSubscriptionSubscriptions",
"parameters": [
+ {
+ "type": "boolean",
+ "name": "validate",
+ "in": "query",
+ "description": "Check if the provided claim key is valid and can be claimed into the organization."
+ },
{
"name": "claimAdministeredLicensingSubscriptionSubscriptions",
"in": "body",
@@ -439,6 +445,7 @@
}
},
"example": {
+ "validate": true,
"claimKey": "S2345-6789A-BCDEF-GHJKM",
"organizationId": "12345678910",
"name": "Corporate subscription",
@@ -2892,6 +2899,7 @@
},
"/devices/{serial}/camera/analytics/live": {
"get": {
+ "deprecated": true,
"description": "Returns live state from camera of analytics zones",
"operationId": "getDeviceCameraAnalyticsLive",
"parameters": [
@@ -2932,6 +2940,7 @@
},
"/devices/{serial}/camera/analytics/overview": {
"get": {
+ "deprecated": true,
"description": "Returns an overview of aggregate analytics data for a timespan",
"operationId": "getDeviceCameraAnalyticsOverview",
"parameters": [
@@ -3006,6 +3015,7 @@
},
"/devices/{serial}/camera/analytics/recent": {
"get": {
+ "deprecated": true,
"description": "Returns most recent record for analytics zones",
"operationId": "getDeviceCameraAnalyticsRecent",
"parameters": [
@@ -3060,6 +3070,7 @@
},
"/devices/{serial}/camera/analytics/zones": {
"get": {
+ "deprecated": true,
"description": "Returns all configured analytic zones for this camera",
"operationId": "getDeviceCameraAnalyticsZones",
"parameters": [
@@ -3108,6 +3119,7 @@
},
"/devices/{serial}/camera/analytics/zones/{zoneId}/history": {
"get": {
+ "deprecated": true,
"description": "Return historical records for analytic zones",
"operationId": "getDeviceCameraAnalyticsZoneHistory",
"parameters": [
@@ -4611,10 +4623,10 @@
]
}
},
- "/devices/{serial}/liveTools/ping": {
+ "/devices/{serial}/liveTools/arpTable": {
"post": {
- "description": "Enqueue a job to ping a target host from the device",
- "operationId": "createDeviceLiveToolsPing",
+ "description": "Enqueue a job to perform a ARP table request for the device. This endpoint currently supports switches.",
+ "operationId": "createDeviceLiveToolsArpTable",
"parameters": [
{
"name": "serial",
@@ -4624,18 +4636,285 @@
"required": true
},
{
- "name": "createDeviceLiveToolsPing",
+ "name": "createDeviceLiveToolsArpTable",
"in": "body",
"schema": {
"type": "object",
"properties": {
- "target": {
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ }
+ }
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "arpTableId": {
"type": "string",
- "description": "FQDN, IPv4 or IPv6 address"
+ "description": "Id of the ARP table request. Used to check the status of the request."
},
- "count": {
- "type": "integer",
- "description": "Count parameter to pass to ping. [1..5], default 5"
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ARP table request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ }
+ },
+ "description": "ARP table request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the ARP table request."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "arpTableId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/arpTable/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678"
+ },
+ "status": "complete",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to perform a ARP table request for the device",
+ "tags": [
+ "devices",
+ "liveTools",
+ "arpTable"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/arpTable/{arpTableId}": {
+ "get": {
+ "description": "Return an ARP table live tool job.",
+ "operationId": "getDeviceLiveToolsArpTable",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "arpTableId",
+ "in": "path",
+ "description": "Arp table ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "arpTableId": {
+ "type": "string",
+ "description": "Id of the ARP table request. Used to check the status of the request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ARP table request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ }
+ },
+ "description": "ARP table request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the ARP table request."
+ },
+ "entries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "The IP address of the ARP table entry"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The MAC address of the ARP table entry"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The VLAN ID of the ARP table entry"
+ },
+ "lastUpdatedAt": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time of the last update of the ARP table entry"
+ }
+ }
+ },
+ "description": "The ARP table entries"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "arpTableId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/arpTable/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678"
+ },
+ "status": "complete",
+ "entries": [
+ {
+ "ip": "10.0.0.0/24",
+ "mac": "00:11:22:33:44:55",
+ "vlanId": 100,
+ "lastUpdatedAt": "2018-02-11T00:00:00.090210Z"
+ }
+ ],
+ "error": "The device is unreachable."
+ }
+ }
+ }
+ },
+ "summary": "Return an ARP table live tool job.",
+ "tags": [
+ "devices",
+ "liveTools",
+ "arpTable"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/cableTest": {
+ "post": {
+ "description": "Enqueue a job to perform a cable test for the device on the specified ports.",
+ "operationId": "createDeviceLiveToolsCableTest",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "createDeviceLiveToolsCableTest",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
},
"callback": {
"type": "object",
@@ -4674,8 +4953,10 @@
}
},
"example": {
- "target": "75.75.75.75",
- "count": 2,
+ "ports": [
+ "2",
+ "8"
+ ],
"callback": {
"url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
"sharedSecret": "secret",
@@ -4688,7 +4969,7 @@
}
},
"required": [
- "target"
+ "ports"
]
},
"required": true
@@ -4700,13 +4981,13 @@
"schema": {
"type": "object",
"properties": {
- "pingId": {
+ "cableTestId": {
"type": "string",
- "description": "Id to check the status of your ping request."
+ "description": "Id of the cable test request. Used to check the status of the request."
},
"url": {
"type": "string",
- "description": "GET this url to check the status of your ping request."
+ "description": "GET this url to check the status of your cable test request."
},
"request": {
"type": "object",
@@ -4715,20 +4996,379 @@
"type": "string",
"description": "Device serial number"
},
- "target": {
- "type": "string",
- "description": "IP address or FQDN to ping"
- },
- "count": {
- "type": "integer",
- "description": "Number of pings to send"
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
}
},
- "description": "Ping request parameters"
+ "description": "Cable test request parameters"
},
"status": {
"type": "string",
- "description": "Status of the ping request."
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the cable test request."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "cableTestId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/cableTest/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "ports": [
+ "2",
+ "8"
+ ]
+ },
+ "status": "complete",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to perform a cable test for the device on the specified ports.",
+ "tags": [
+ "devices",
+ "liveTools",
+ "cableTest"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/cableTest/{id}": {
+ "get": {
+ "description": "Return a cable test live tool job.",
+ "operationId": "getDeviceLiveToolsCableTest",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "description": "ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cableTestId": {
+ "type": "string",
+ "description": "Id of the cable test request. Used to check the status of the request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your cable test request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
+ }
+ },
+ "description": "Cable test request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the cable test request."
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "port": {
+ "type": "string",
+ "description": "The port for which the test was performed."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "down",
+ "error",
+ "in-progress",
+ "up"
+ ],
+ "description": "The current status of the port. If the cable test is still being performed on the port, \"in-progress\" is used. If an error occurred during the cable test, \"error\" is used and the error property will be populated."
+ },
+ "speedMbps": {
+ "type": "integer",
+ "description": "Speed in Mbps. A speed of 0 indicates the port is down or the port speed is automatic."
+ },
+ "error": {
+ "type": "string",
+ "description": "If an error occurred during the cable test, the error message will be populated here."
+ },
+ "pairs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The index of the twisted pair tested."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "abnormal",
+ "couplex",
+ "fail",
+ "forced",
+ "in-progress",
+ "invalid",
+ "not-supported",
+ "ok",
+ "open",
+ "open or short",
+ "short",
+ "short or abnormal",
+ "short or couplex",
+ "unknown"
+ ],
+ "description": "The test result of the twisted pair tested."
+ },
+ "lengthMeters": {
+ "type": "integer",
+ "description": "The detected length of the twisted pair."
+ }
+ }
+ },
+ "description": "Results for each twisted pair within the cable."
+ }
+ }
+ },
+ "description": "Results of the cable test request, one for each requested port."
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "cableTestId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/cableTest/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "ports": [
+ "2",
+ "8"
+ ]
+ },
+ "status": "complete",
+ "results": [
+ {
+ "port": "2",
+ "status": "up",
+ "speedMbps": 10000,
+ "error": "An unexpected error occurred during the execution of the cable test.",
+ "pairs": [
+ {
+ "index": 0,
+ "status": "ok",
+ "lengthMeters": 1
+ }
+ ]
+ }
+ ],
+ "error": "The device is unreachable."
+ }
+ }
+ }
+ },
+ "summary": "Return a cable test live tool job.",
+ "tags": [
+ "devices",
+ "liveTools",
+ "cableTest"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/ping": {
+ "post": {
+ "description": "Enqueue a job to ping a target host from the device",
+ "operationId": "createDeviceLiveToolsPing",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "createDeviceLiveToolsPing",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "target": {
+ "type": "string",
+ "description": "FQDN, IPv4 or IPv6 address"
+ },
+ "count": {
+ "type": "integer",
+ "description": "Count parameter to pass to ping. [1..5], default 5"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "target": "75.75.75.75",
+ "count": 2,
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ },
+ "required": [
+ "target"
+ ]
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "pingId": {
+ "type": "string",
+ "description": "Id to check the status of your ping request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "target": {
+ "type": "string",
+ "description": "IP address or FQDN to ping"
+ },
+ "count": {
+ "type": "integer",
+ "description": "Number of pings to send"
+ }
+ },
+ "description": "Ping request parameters"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the ping request."
},
"callback": {
"type": "object",
@@ -5294,6 +5934,280 @@
]
}
},
+ "/devices/{serial}/liveTools/wakeOnLan": {
+ "post": {
+ "description": "Enqueue a job to send a Wake-on-LAN packet from the device",
+ "operationId": "createDeviceLiveToolsWakeOnLan",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "createDeviceLiveToolsWakeOnLan",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55",
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ },
+ "required": [
+ "vlanId",
+ "mac"
+ ]
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wakeOnLanId": {
+ "type": "string",
+ "description": "ID of the Wake-on-LAN job"
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the Wake-on-LAN request"
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ }
+ },
+ "description": "The parameters of the Wake-on-LAN request"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "wakeOnLanId": "123",
+ "url": "/devices/QXXX-YYYY-ZZZZ/liveTools/wakeOnLan/1738",
+ "status": "complete",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55"
+ },
+ "error": "The device is unreachable.",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to send a Wake-on-LAN packet from the device",
+ "tags": [
+ "devices",
+ "liveTools",
+ "wakeOnLan"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/wakeOnLan/{wakeOnLanId}": {
+ "get": {
+ "description": "Return a Wake-on-LAN job",
+ "operationId": "getDeviceLiveToolsWakeOnLan",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "wakeOnLanId",
+ "in": "path",
+ "description": "Wake on lan ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wakeOnLanId": {
+ "type": "string",
+ "description": "ID of the Wake-on-LAN job"
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the Wake-on-LAN request"
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ }
+ },
+ "description": "The parameters of the Wake-on-LAN request"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "wakeOnLanId": "123",
+ "url": "/devices/QXXX-YYYY-ZZZZ/liveTools/wakeOnLan/1738",
+ "status": "complete",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55"
+ },
+ "error": "The device is unreachable."
+ }
+ }
+ }
+ },
+ "summary": "Return a Wake-on-LAN job",
+ "tags": [
+ "devices",
+ "liveTools",
+ "wakeOnLan"
+ ]
+ }
+ },
"/devices/{serial}/lldpCdp": {
"get": {
"description": "List LLDP and CDP information for a device",
@@ -6249,6 +7163,19 @@
],
"description": "The current connection status of the port."
},
+ "spanningTree": {
+ "type": "object",
+ "properties": {
+ "statuses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The current Spanning Tree Protocol statuses of the port."
+ }
+ },
+ "description": "The Spanning Tree Protocol (STP) information of the connected device."
+ },
"isUplink": {
"type": "boolean",
"description": "Whether the port is the switch's uplink."
@@ -6489,6 +7416,11 @@
"portId": "1",
"enabled": true,
"status": "Connected",
+ "spanningTree": {
+ "statuses": [
+ "Learning"
+ ]
+ },
"isUplink": false,
"errors": [
"PoE overload",
@@ -23329,7 +24261,7 @@
},
"/networks/{networkId}/clients": {
"get": {
- "description": "List the clients that have used this network in the timespan",
+ "description": "List the clients that have used this network in the timespan. The data is updated at most once every five minutes.",
"operationId": "getNetworkClients",
"parameters": [
{
@@ -25404,9 +26336,10 @@
"100",
"large",
"medium",
- "small"
+ "small",
+ "xlarge"
],
- "description": "The size of the vMX you claim. It can be one of: small, medium, large, 100"
+ "description": "The size of the vMX you claim. It can be one of: small, medium, large, xlarge, 100"
}
},
"example": {
@@ -37276,13 +38209,21 @@
"items": {
"type": "string",
"enum": [
+ "apparentPower",
+ "co2",
+ "current",
"door",
+ "frequency",
"humidity",
"indoorAirQuality",
"noise",
"pm25",
+ "powerFactor",
+ "realPower",
"temperature",
"tvoc",
+ "upstreamPower",
+ "voltage",
"water"
]
},
@@ -37291,10 +38232,26 @@
"counts": {
"type": "object",
"properties": {
+ "apparentPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to apparent power readings"
+ },
+ "co2": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to CO2 readings"
+ },
+ "current": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to electrical current readings"
+ },
"door": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to an open door"
},
+ "frequency": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to frequency readings"
+ },
"humidity": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to humidity readings"
@@ -37317,6 +38274,14 @@
"type": "integer",
"description": "Number of sensors that are currently alerting due to PM2.5 readings"
},
+ "powerFactor": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to power factor readings"
+ },
+ "realPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to real power readings"
+ },
"temperature": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to temperature readings"
@@ -37325,6 +38290,14 @@
"type": "integer",
"description": "Number of sensors that are currently alerting due to TVOC readings"
},
+ "upstreamPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to an upstream power outage"
+ },
+ "voltage": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to voltage readings"
+ },
"water": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to the presence of water"
@@ -37342,15 +38315,23 @@
"door"
],
"counts": {
+ "apparentPower": 0,
+ "co2": 0,
+ "current": 0,
"door": 0,
+ "frequency": 0,
"humidity": 1,
"indoorAirQuality": 0,
"noise": {
"ambient": 0
},
"pm25": 0,
+ "powerFactor": 0,
+ "realPower": 0,
"temperature": 4,
"tvoc": 0,
+ "upstreamPower": 0,
+ "voltage": 0,
"water": 0
}
}
@@ -37428,10 +38409,26 @@
"counts": {
"type": "object",
"properties": {
+ "apparentPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to apparent power readings"
+ },
+ "co2": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to CO2 readings"
+ },
+ "current": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to electrical current readings"
+ },
"door": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to an open door"
},
+ "frequency": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to frequency readings"
+ },
"humidity": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to humidity readings"
@@ -37454,6 +38451,14 @@
"type": "integer",
"description": "Number of sensor alerts that occurred due to PM2.5 readings"
},
+ "powerFactor": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to power factor readings"
+ },
+ "realPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to real power readings"
+ },
"temperature": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to temperature readings"
@@ -37462,6 +38467,14 @@
"type": "integer",
"description": "Number of sensor alerts that occurred due to TVOC readings"
},
+ "upstreamPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to upstream power outages"
+ },
+ "voltage": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to voltage readings"
+ },
"water": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to the presence of water"
@@ -37478,15 +38491,23 @@
"startTs": "2022-08-21T00:00:00Z",
"endTs": "2022-08-27T23:59:59Z",
"counts": {
+ "apparentPower": 0,
+ "co2": 0,
+ "current": 0,
"door": 0,
+ "frequency": 1,
"humidity": 1,
"indoorAirQuality": 0,
"noise": {
"ambient": 2
},
"pm25": 0,
+ "powerFactor": 0,
+ "realPower": 0,
"temperature": 4,
"tvoc": 0,
+ "upstreamPower": 0,
+ "voltage": 0,
"water": 0
}
}
@@ -37554,7 +38575,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -37719,6 +38740,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -37729,7 +38846,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -37844,6 +38961,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -37917,7 +39055,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -38082,6 +39220,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -38092,7 +39326,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -38198,6 +39432,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -38264,7 +39519,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -38429,6 +39684,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -38439,7 +39790,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -38552,6 +39903,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -38642,7 +40014,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -38807,6 +40179,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -38817,7 +40285,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -38930,6 +40398,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -39009,7 +40498,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -39174,6 +40663,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -39184,7 +40769,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -39290,6 +40875,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -39351,7 +40957,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -39516,6 +41122,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -39526,7 +41228,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -39639,6 +41341,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -40460,6 +42183,15 @@
"in": "query",
"description": "Filter devices by uuid(s)."
},
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "name": "systemTypes",
+ "in": "query",
+ "description": "Filter devices by system type(s)."
+ },
{
"type": "array",
"items": {
@@ -40643,9 +42375,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
@@ -40737,7 +42469,7 @@
"example": {
"wifiMac": "00:11:22:33:44:55",
"id": "1284392014819",
- "serial": "Q234-ABCD-5678",
+ "serial": "XY0XX0Y0X0",
"deviceFields": {
"name": "Miles's phone",
"notes": "Here's some info about my device"
@@ -40847,7 +42579,7 @@
"items": {
"type": "string"
},
- "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be wiped."
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be locked."
},
"pin": {
"type": "integer",
@@ -40863,9 +42595,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
@@ -40977,9 +42709,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny, old_tag"
@@ -41111,9 +42843,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
@@ -41167,6 +42899,235 @@
]
}
},
+ "/networks/{networkId}/sm/devices/reboot": {
+ "post": {
+ "description": "Reboot a set of endpoints",
+ "operationId": "rebootNetworkSmDevices",
+ "parameters": [
+ {
+ "name": "networkId",
+ "in": "path",
+ "description": "Network ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "rebootNetworkSmDevices",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wifiMacs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The wifiMacs of the endpoints to be rebooted."
+ },
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The ids of the endpoints to be rebooted."
+ },
+ "serials": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The serials of the endpoints to be rebooted."
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be rebooted."
+ },
+ "kextPaths": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The KextPaths of the endpoints to be rebooted. Available for macOS 11+"
+ },
+ "notifyUser": {
+ "type": "boolean",
+ "description": "Whether or not to notify the user before rebooting the endpoint. Available for macOS 11.3+"
+ },
+ "rebuildKernelCache": {
+ "type": "boolean",
+ "description": "Whether or not to rebuild the kernel cache when rebooting the endpoint. Available for macOS 11+"
+ },
+ "requestRequiresNetworkTether": {
+ "type": "boolean",
+ "description": "Whether or not the request requires network tethering. Available for macOS and supervised iOS or tvOS"
+ }
+ },
+ "example": {
+ "wifiMacs": [
+ "00:11:22:33:44:55"
+ ],
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ],
+ "serials": [
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
+ ],
+ "scope": [
+ "withAny",
+ "tag1",
+ "tag2"
+ ],
+ "kextPaths": [
+ "test"
+ ],
+ "notifyUser": true,
+ "rebuildKernelCache": true,
+ "requestRequiresNetworkTether": true
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The Meraki Ids of the set of endpoints."
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Reboot a set of endpoints",
+ "tags": [
+ "sm",
+ "configure",
+ "devices"
+ ]
+ }
+ },
+ "/networks/{networkId}/sm/devices/shutdown": {
+ "post": {
+ "description": "Shutdown a set of endpoints",
+ "operationId": "shutdownNetworkSmDevices",
+ "parameters": [
+ {
+ "name": "networkId",
+ "in": "path",
+ "description": "Network ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "shutdownNetworkSmDevices",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wifiMacs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The wifiMacs of the endpoints to be shutdown."
+ },
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The ids of the endpoints to be shutdown."
+ },
+ "serials": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The serials of the endpoints to be shutdown."
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be shutdown."
+ }
+ },
+ "example": {
+ "wifiMacs": [
+ "00:11:22:33:44:55"
+ ],
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ],
+ "serials": [
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
+ ],
+ "scope": [
+ "withAny",
+ "tag1",
+ "tag2"
+ ]
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The Meraki Ids of the set of endpoints."
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Shutdown a set of endpoints",
+ "tags": [
+ "sm",
+ "configure",
+ "devices"
+ ]
+ }
+ },
"/networks/{networkId}/sm/devices/wipe": {
"post": {
"description": "Wipe a device",
@@ -41205,7 +43166,7 @@
"example": {
"wifiMac": "00:11:22:33:44:55",
"id": "1284392014819",
- "serial": "Q234-ABCD-5678",
+ "serial": "XY0XX0Y0X0",
"pin": 123456
}
}
@@ -44465,6 +46426,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
}
@@ -44510,7 +46487,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
]
}
@@ -44912,6 +46894,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -44955,7 +46953,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -45139,6 +47142,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -45182,7 +47201,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -45580,6 +47604,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -45623,7 +47663,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -65990,6 +68035,10 @@
"type": "string",
"description": "The name of the regulatory domain for this network."
},
+ "countryCode": {
+ "type": "string",
+ "description": "The country code of the regulatory domain."
+ },
"permits6e": {
"type": "boolean",
"description": "Whether or not the regulatory domain for this network permits Wifi 6E."
@@ -66014,6 +68063,7 @@
},
"regulatoryDomain": {
"name": "FCC",
+ "countryCode": "US",
"permits6e": true
}
}
@@ -66162,6 +68212,10 @@
"type": "string",
"description": "The name of the regulatory domain for this network."
},
+ "countryCode": {
+ "type": "string",
+ "description": "The country code of the regulatory domain."
+ },
"permits6e": {
"type": "boolean",
"description": "Whether or not the regulatory domain for this network permits Wifi 6E."
@@ -66186,6 +68240,7 @@
},
"regulatoryDomain": {
"name": "FCC",
+ "countryCode": "US",
"permits6e": true
}
}
@@ -77207,6 +79262,84 @@
]
}
},
+ "/organizations/{organizationId}/appliance/uplinks/statuses/overview": {
+ "get": {
+ "description": "Returns an overview of uplink statuses",
+ "operationId": "getOrganizationApplianceUplinksStatusesOverview",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "counts": {
+ "type": "object",
+ "properties": {
+ "byStatus": {
+ "type": "object",
+ "properties": {
+ "active": {
+ "type": "integer",
+ "description": "number of uplinks that are active and working"
+ },
+ "ready": {
+ "type": "integer",
+ "description": "number of uplinks that are working but on standby"
+ },
+ "failed": {
+ "type": "integer",
+ "description": "number of uplinks that were working but have failed"
+ },
+ "connecting": {
+ "type": "integer",
+ "description": "number of uplinks currently connecting"
+ },
+ "notConnected": {
+ "type": "integer",
+ "description": "number of uplinks currently where nothing is plugged in"
+ }
+ },
+ "description": "byStatus"
+ }
+ },
+ "description": "counts"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "counts": {
+ "byStatus": {
+ "active": 5,
+ "ready": 5,
+ "failed": 4,
+ "connecting": 2,
+ "notConnected": 1
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Returns an overview of uplink statuses",
+ "tags": [
+ "appliance",
+ "configure",
+ "uplinks",
+ "statuses",
+ "overview"
+ ]
+ }
+ },
"/organizations/{organizationId}/appliance/uplinks/usage/byNetwork": {
"get": {
"description": "Get the sent and received bytes for each uplink of all MX and Z networks within an organization. If more than one device was active during the specified timespan, then the sent and received bytes will be aggregated by interface.",
@@ -80318,6 +82451,244 @@
]
}
},
+ "/organizations/{organizationId}/camera/boundaries/areas/byDevice": {
+ "get": {
+ "description": "Returns all configured area boundaries of cameras",
+ "operationId": "getOrganizationCameraBoundariesAreasByDevice",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "name": "serials",
+ "in": "query",
+ "description": "A list of serial numbers. The returned cameras will be filtered to only include these serials."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The network id of the camera"
+ },
+ "serial": {
+ "type": "string",
+ "description": "The serial number of the camera"
+ },
+ "boundaries": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The area boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The area boundary type"
+ },
+ "name": {
+ "type": "string",
+ "description": "The area boundary name"
+ },
+ "vertices": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ }
+ },
+ "description": "The area boundary vertices"
+ }
+ },
+ "description": "Configured area boundaries of the camera"
+ }
+ }
+ }
+ },
+ "examples": {
+ "application/json": [
+ {
+ "networkId": "N_24329156",
+ "serial": "Q234-ABCD-5678",
+ "boundaries": {
+ "id": "k74272e",
+ "type": "area",
+ "name": "myarea",
+ "vertices": [
+ {
+ "x": 0.1,
+ "y": 0.1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ "summary": "Returns all configured area boundaries of cameras",
+ "tags": [
+ "camera",
+ "configure",
+ "boundaries",
+ "areas",
+ "byDevice"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/camera/boundaries/lines/byDevice": {
+ "get": {
+ "description": "Returns all configured crossingline boundaries of cameras",
+ "operationId": "getOrganizationCameraBoundariesLinesByDevice",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "name": "serials",
+ "in": "query",
+ "description": "A list of serial numbers. The returned cameras will be filtered to only include these serials."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The network id of the camera"
+ },
+ "serial": {
+ "type": "string",
+ "description": "The serial number of the camera"
+ },
+ "boundaries": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The line boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The line boundary type"
+ },
+ "name": {
+ "type": "string",
+ "description": "The line boundary name"
+ },
+ "vertices": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ }
+ },
+ "description": "The line boundary vertices"
+ },
+ "directionVertex": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ },
+ "description": "The line boundary crossing direction vertex"
+ }
+ },
+ "description": "Configured line boundaries of the camera"
+ }
+ }
+ }
+ },
+ "examples": {
+ "application/json": [
+ {
+ "networkId": "N_24329156",
+ "serial": "Q234-ABCD-5678",
+ "boundaries": {
+ "id": "k74272e",
+ "type": "line",
+ "name": "mycline",
+ "vertices": [
+ {
+ "x": 0.375,
+ "y": 0.5
+ }
+ ],
+ "directionVertex": {
+ "x": 0.5,
+ "y": 0.54
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "summary": "Returns all configured crossingline boundaries of cameras",
+ "tags": [
+ "camera",
+ "configure",
+ "boundaries",
+ "lines",
+ "byDevice"
+ ]
+ }
+ },
"/organizations/{organizationId}/camera/customAnalytics/artifacts": {
"get": {
"description": "List Custom Analytics Artifacts",
@@ -80502,6 +82873,127 @@
]
}
},
+ "/organizations/{organizationId}/camera/detections/history/byBoundary/byInterval": {
+ "get": {
+ "description": "Returns analytics data for timespans",
+ "operationId": "getOrganizationCameraDetectionsHistoryByBoundaryByInterval",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "name": "boundaryIds",
+ "in": "query",
+ "required": true,
+ "description": "A list of boundary ids. The returned cameras will be filtered to only include these ids."
+ },
+ {
+ "type": "integer",
+ "name": "duration",
+ "in": "query",
+ "description": "The minimum time, in seconds, that the person or car remains in the area to be counted. Defaults to boundary configuration or 60."
+ },
+ {
+ "type": "integer",
+ "name": "perPage",
+ "in": "query",
+ "description": "The number of entries per page returned. Acceptable range is 1 - 1000. Defaults to 1000."
+ },
+ {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "person",
+ "vehicle"
+ ]
+ },
+ "name": "boundaryTypes",
+ "in": "query",
+ "description": "The detection types. Defaults to 'person'."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundaryId": {
+ "type": "string",
+ "description": "The boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The boundary type"
+ },
+ "results": {
+ "type": "object",
+ "properties": {
+ "startTime": {
+ "type": "string",
+ "description": "The period start time"
+ },
+ "endTime": {
+ "type": "string",
+ "description": "The period end time"
+ },
+ "objectType": {
+ "type": "string",
+ "description": "The detection type"
+ },
+ "in": {
+ "type": "integer",
+ "description": "The number of detections entered"
+ },
+ "out": {
+ "type": "integer",
+ "description": "The number of detections exited"
+ }
+ },
+ "description": "The analytics data"
+ }
+ }
+ }
+ },
+ "examples": {
+ "application/json": [
+ {
+ "boundaryId": "k74272e",
+ "type": "line",
+ "results": {
+ "startTime": "2018-02-11T00:00:00Z",
+ "endTime": "2018-05-12T00:00:00Z",
+ "objectType": "person",
+ "in": 22,
+ "out": 13
+ }
+ }
+ ]
+ }
+ }
+ },
+ "summary": "Returns analytics data for timespans",
+ "tags": [
+ "camera",
+ "configure",
+ "detections",
+ "history",
+ "byBoundary",
+ "byInterval"
+ ]
+ }
+ },
"/organizations/{organizationId}/camera/onboarding/statuses": {
"get": {
"description": "Fetch onboarding status of cameras",
@@ -85995,7 +88487,7 @@
},
"/organizations/{organizationId}/firmware/upgrades/byDevice": {
"get": {
- "description": "Get firmware upgrade status for the filtered devices",
+ "description": "Get firmware upgrade status for the filtered devices. This endpoint currently only supports Meraki switches.",
"operationId": "getOrganizationFirmwareUpgradesByDevice",
"parameters": [
{
@@ -86190,19 +88682,19 @@
"application/json": [
{
"serial": "Q234-ABCD-5678",
- "name": "My AP",
+ "name": "My switch",
"deviceStatus": "completed",
"upgrade": {
"time": "2018-02-11T00:00:00.090210Z",
"fromVersion": {
"id": "1234",
- "shortName": "MV 10.8.1",
+ "shortName": "MS 16.7",
"releaseType": "stable",
"releaseDate": "2018-02-11T00:00:00.090210Z"
},
"toVersion": {
"id": "1234",
- "shortName": "MV 11.2.1",
+ "shortName": "MS 16.7.1",
"releaseType": "stable",
"releaseDate": "2018-02-11T00:00:00.090210Z"
},
@@ -92189,7 +94681,7 @@
},
"name": "metrics",
"in": "query",
- "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are battery, button, door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are apparentPower, battery, button, co2, current, door, downstreamPower, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, remoteLockoutSwitch, temperature, tvoc, voltage, and water."
}
],
"responses": {
@@ -92225,19 +94717,39 @@
"metric": {
"type": "string",
"enum": [
+ "apparentPower",
"battery",
"button",
+ "co2",
+ "current",
"door",
+ "downstreamPower",
+ "frequency",
"humidity",
"indoorAirQuality",
"noise",
"pm25",
+ "powerFactor",
+ "realPower",
+ "remoteLockoutSwitch",
"temperature",
"tvoc",
+ "voltage",
"water"
],
"description": "Type of sensor reading."
},
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Apparent power reading in volt-amperes."
+ }
+ },
+ "description": "Reading for the 'apparentPower' metric. This will only be present if the 'metric' property equals 'apparentPower'."
+ },
"battery": {
"type": "object",
"properties": {
@@ -92262,6 +94774,27 @@
},
"description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
},
+ "co2": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "CO2 reading in parts per million."
+ }
+ },
+ "description": "Reading for the 'co2' metric. This will only be present if the 'metric' property equals 'co2'."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current reading in amperes."
+ }
+ },
+ "description": "Reading for the 'current' metric. This will only be present if the 'metric' property equals 'current'."
+ },
"door": {
"type": "object",
"properties": {
@@ -92272,6 +94805,27 @@
},
"description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
},
+ "downstreamPower": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "True if power is turned on to the device that is connected downstream of the MT40 power monitor."
+ }
+ },
+ "description": "Reading for the 'downstreamPower' metric. This will only be present if the 'metric' property equals 'downstreamPower'."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current frequency reading in hertz."
+ }
+ },
+ "description": "Reading for the 'frequency' metric. This will only be present if the 'metric' property equals 'frequency'."
+ },
"humidity": {
"type": "object",
"properties": {
@@ -92318,6 +94872,37 @@
},
"description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
},
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Power factor reading as a percentage."
+ }
+ },
+ "description": "Reading for the 'powerFactor' metric. This will only be present if the 'metric' property equals 'powerFactor'."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Real power reading in watts."
+ }
+ },
+ "description": "Reading for the 'realPower' metric. This will only be present if the 'metric' property equals 'realPower'."
+ },
+ "remoteLockoutSwitch": {
+ "type": "object",
+ "properties": {
+ "locked": {
+ "type": "boolean",
+ "description": "True if power controls are disabled via the MT40's physical remote lockout switch."
+ }
+ },
+ "description": "Reading for the 'remoteLockoutSwitch' metric. This will only be present if the 'metric' property equals 'remoteLockoutSwitch'."
+ },
"temperature": {
"type": "object",
"properties": {
@@ -92344,6 +94929,17 @@
},
"description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
},
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Voltage reading in volts."
+ }
+ },
+ "description": "Reading for the 'voltage' metric. This will only be present if the 'metric' property equals 'voltage'."
+ },
"water": {
"type": "object",
"properties": {
@@ -92371,17 +94967,32 @@
"id": "N_24329156",
"name": "Main Office"
},
- "ts": "2021-10-18T23:54:48Z",
+ "ts": "2021-10-18T23:54:48.000000Z",
"metric": "temperature",
+ "apparentPower": {
+ "draw": 15.9
+ },
"battery": {
"percentage": 91
},
"button": {
"pressType": "short"
},
+ "co2": {
+ "concentration": 100
+ },
+ "current": {
+ "draw": 0.13
+ },
"door": {
"open": true
},
+ "downstreamPower": {
+ "enabled": true
+ },
+ "frequency": {
+ "level": 60.1
+ },
"humidity": {
"relativePercentage": 34
},
@@ -92396,6 +95007,15 @@
"pm25": {
"concentration": 100
},
+ "powerFactor": {
+ "percentage": 86
+ },
+ "realPower": {
+ "draw": 13.7
+ },
+ "remoteLockoutSwitch": {
+ "locked": false
+ },
"temperature": {
"fahrenheit": 77.81,
"celsius": 25.45
@@ -92403,6 +95023,9 @@
"tvoc": {
"concentration": 100
},
+ "voltage": {
+ "level": 122.4
+ },
"water": {
"present": true
}
@@ -92475,7 +95098,7 @@
},
"name": "metrics",
"in": "query",
- "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are battery, button, door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are apparentPower, battery, button, co2, current, door, downstreamPower, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, remoteLockoutSwitch, temperature, tvoc, voltage, and water."
}
],
"responses": {
@@ -92516,19 +95139,39 @@
"metric": {
"type": "string",
"enum": [
+ "apparentPower",
"battery",
"button",
+ "co2",
+ "current",
"door",
+ "downstreamPower",
+ "frequency",
"humidity",
"indoorAirQuality",
"noise",
"pm25",
+ "powerFactor",
+ "realPower",
+ "remoteLockoutSwitch",
"temperature",
"tvoc",
+ "voltage",
"water"
],
"description": "Type of sensor reading."
},
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Apparent power reading in volt-amperes."
+ }
+ },
+ "description": "Reading for the 'apparentPower' metric. This will only be present if the 'metric' property equals 'apparentPower'."
+ },
"battery": {
"type": "object",
"properties": {
@@ -92553,6 +95196,27 @@
},
"description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
},
+ "co2": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "CO2 reading in parts per million."
+ }
+ },
+ "description": "Reading for the 'co2' metric. This will only be present if the 'metric' property equals 'co2'."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current reading in amperes."
+ }
+ },
+ "description": "Reading for the 'current' metric. This will only be present if the 'metric' property equals 'current'."
+ },
"door": {
"type": "object",
"properties": {
@@ -92563,6 +95227,27 @@
},
"description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
},
+ "downstreamPower": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "True if power is turned on to the device that is connected downstream of the MT40 power monitor."
+ }
+ },
+ "description": "Reading for the 'downstreamPower' metric. This will only be present if the 'metric' property equals 'downstreamPower'."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current frequency reading in hertz."
+ }
+ },
+ "description": "Reading for the 'frequency' metric. This will only be present if the 'metric' property equals 'frequency'."
+ },
"humidity": {
"type": "object",
"properties": {
@@ -92609,6 +95294,37 @@
},
"description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
},
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Power factor reading as a percentage."
+ }
+ },
+ "description": "Reading for the 'powerFactor' metric. This will only be present if the 'metric' property equals 'powerFactor'."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Real power reading in watts."
+ }
+ },
+ "description": "Reading for the 'realPower' metric. This will only be present if the 'metric' property equals 'realPower'."
+ },
+ "remoteLockoutSwitch": {
+ "type": "object",
+ "properties": {
+ "locked": {
+ "type": "boolean",
+ "description": "True if power controls are disabled via the MT40's physical remote lockout switch."
+ }
+ },
+ "description": "Reading for the 'remoteLockoutSwitch' metric. This will only be present if the 'metric' property equals 'remoteLockoutSwitch'."
+ },
"temperature": {
"type": "object",
"properties": {
@@ -92635,6 +95351,17 @@
},
"description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
},
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Voltage reading in volts."
+ }
+ },
+ "description": "Reading for the 'voltage' metric. This will only be present if the 'metric' property equals 'voltage'."
+ },
"water": {
"type": "object",
"properties": {
@@ -92668,17 +95395,32 @@
},
"readings": [
{
- "ts": "2021-10-18T23:54:48Z",
+ "ts": "2021-10-18T23:54:48.000000Z",
"metric": "temperature",
+ "apparentPower": {
+ "draw": 15.9
+ },
"battery": {
"percentage": 91
},
"button": {
"pressType": "short"
},
+ "co2": {
+ "concentration": 100
+ },
+ "current": {
+ "draw": 0.13
+ },
"door": {
"open": true
},
+ "downstreamPower": {
+ "enabled": true
+ },
+ "frequency": {
+ "level": 60.1
+ },
"humidity": {
"relativePercentage": 34
},
@@ -92693,6 +95435,15 @@
"pm25": {
"concentration": 100
},
+ "powerFactor": {
+ "percentage": 86
+ },
+ "realPower": {
+ "draw": 13.7
+ },
+ "remoteLockoutSwitch": {
+ "locked": false
+ },
"temperature": {
"fahrenheit": 77.81,
"celsius": 25.45
@@ -92700,6 +95451,9 @@
"tvoc": {
"concentration": 100
},
+ "voltage": {
+ "level": 122.4
+ },
"water": {
"present": true
}
@@ -92719,6 +95473,465 @@
]
}
},
+ "/organizations/{organizationId}/sm/admins/roles": {
+ "get": {
+ "description": "List the Limited Access Roles for an organization",
+ "operationId": "getOrganizationSmAdminsRoles",
+ "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 50."
+ },
+ {
+ "type": "string",
+ "name": "startingAfter",
+ "in": "query",
+ "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it."
+ },
+ {
+ "type": "string",
+ "name": "endingBefore",
+ "in": "query",
+ "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the limited access role"
+ }
+ }
+ },
+ "description": "Array of Limited Access Roles"
+ },
+ "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": [
+ {
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ ],
+ "meta": {
+ "counts": {
+ "items": {
+ "total": 10,
+ "remaining": 0
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "List the Limited Access Roles for an organization",
+ "tags": [
+ "sm",
+ "configure",
+ "admins",
+ "roles"
+ ]
+ },
+ "post": {
+ "description": "Create a Limited Access Role",
+ "operationId": "createOrganizationSmAdminsRole",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "createOrganizationSmAdminsRole",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the Limited Access Role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the Limited Access Role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Limited Access Role"
+ }
+ },
+ "example": {
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ },
+ "required": [
+ "name"
+ ]
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the limited access role"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Create a Limited Access Role",
+ "tags": [
+ "sm",
+ "configure",
+ "admins",
+ "roles"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/sm/admins/roles/{roleId}": {
+ "get": {
+ "description": "Return a Limited Access Role",
+ "operationId": "getOrganizationSmAdminsRole",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "roleId",
+ "in": "path",
+ "description": "Role ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the limited access role"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Return a Limited Access Role",
+ "tags": [
+ "sm",
+ "configure",
+ "admins",
+ "roles"
+ ]
+ },
+ "put": {
+ "description": "Update a Limited Access Role",
+ "operationId": "updateOrganizationSmAdminsRole",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "roleId",
+ "in": "path",
+ "description": "Role ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "updateOrganizationSmAdminsRole",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the Limited Access Role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the Limited Access Role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Limited Access Role"
+ }
+ },
+ "example": {
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the limited access role"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Update a Limited Access Role",
+ "tags": [
+ "sm",
+ "configure",
+ "admins",
+ "roles"
+ ]
+ },
+ "delete": {
+ "description": "Delete a Limited Access Role",
+ "operationId": "deleteOrganizationSmAdminsRole",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "roleId",
+ "in": "path",
+ "description": "Role ID",
+ "type": "string",
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Successful operation"
+ }
+ },
+ "summary": "Delete a Limited Access Role",
+ "tags": [
+ "sm",
+ "configure",
+ "admins",
+ "roles"
+ ]
+ }
+ },
"/organizations/{organizationId}/sm/apnsCert": {
"get": {
"description": "Get the organization's APNS certificate",
@@ -92759,6 +95972,437 @@
]
}
},
+ "/organizations/{organizationId}/sm/sentry/policies/assignments": {
+ "put": {
+ "description": "Update an Organizations Sentry Policies using the provided list. Sentry Policies are ordered in descending order of priority (i.e. highest priority at the bottom, this is opposite the Dashboard UI). Policies not present in the request will be deleted.",
+ "operationId": "updateOrganizationSmSentryPoliciesAssignments",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "name": "updateOrganizationSmSentryPoliciesAssignments",
+ "in": "body",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network"
+ },
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Sentry Policy Id, if updating an existing Sentry Policy"
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags for the Sentry Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Group Policy Id"
+ }
+ },
+ "required": [
+ "smNetworkId",
+ "scope",
+ "tags",
+ "groupPolicyId"
+ ]
+ },
+ "description": "Array of Sentry Group Policies for the Network"
+ }
+ },
+ "required": [
+ "networkId"
+ ]
+ },
+ "description": "Sentry Group Policies for the Organization keyed by Network Id"
+ }
+ },
+ "example": {
+ "items": [
+ {
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "smNetworkId": "N_24329156",
+ "scope": "withAny",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "groupPolicyId": "1284392014819"
+ }
+ ]
+ }
+ ]
+ },
+ "required": [
+ "items"
+ ]
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network"
+ },
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Id of the Sentry Policy"
+ },
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network the Sentry Policy is associated with. In a locale, this should be the Wireless Group if present, otherwise the Wired Group."
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network the Sentry Policy is assigned to"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Sentry Policy"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "groupNumber": {
+ "type": "string",
+ "description": "The number of the Group Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Id of the Group Policy. This is associated with the network specified by the networkId."
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the Sentry Policy"
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The creation time of the Sentry Policy"
+ },
+ "lastUpdatedAt": {
+ "type": "string",
+ "description": "The last update time of the Sentry Policy"
+ }
+ }
+ },
+ "description": "Array of Sentry Group Policies for the Network"
+ }
+ }
+ },
+ "description": "Sentry Group Policies for the Organization keyed by Network Id"
+ }
+ }
+ },
+ "examples": {
+ "application/json": {
+ "items": [
+ {
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "networkId": "N_24329156",
+ "smNetworkId": "N_24329156",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "scope": "withAny",
+ "groupNumber": "1234",
+ "groupPolicyId": "1284392014819",
+ "priority": "1",
+ "createdAt": "2018-05-12T00:00:00Z",
+ "lastUpdatedAt": "2018-05-12T00:00:00Z"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Update an Organizations Sentry Policies using the provided list",
+ "tags": [
+ "sm",
+ "configure",
+ "sentry",
+ "policies",
+ "assignments"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/sm/sentry/policies/assignments/byNetwork": {
+ "get": {
+ "description": "List the Sentry Policies for an organization ordered in ascending order of priority",
+ "operationId": "getOrganizationSmSentryPoliciesAssignmentsByNetwork",
+ "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 50."
+ },
+ {
+ "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 Sentry Policies by Network Id"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network"
+ },
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Id of the Sentry Policy"
+ },
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network the Sentry Policy is associated with. In a locale, this should be the Wireless Group if present, otherwise the Wired Group."
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network the Sentry Policy is assigned to"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Sentry Policy"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "groupNumber": {
+ "type": "string",
+ "description": "The number of the Group Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Id of the Group Policy. This is associated with the network specified by the networkId."
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the Sentry Policy"
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The creation time of the Sentry Policy"
+ },
+ "lastUpdatedAt": {
+ "type": "string",
+ "description": "The last update time of the Sentry Policy"
+ }
+ }
+ },
+ "description": "Array of Sentry Group Policies for the Network"
+ }
+ }
+ },
+ "description": "Sentry Group Policies for the Organization keyed by the Network or Locale Id the Policy belongs to"
+ },
+ "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": [
+ {
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "networkId": "N_24329156",
+ "smNetworkId": "N_24329156",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "scope": "withAny",
+ "groupNumber": "1234",
+ "groupPolicyId": "1284392014819",
+ "priority": "1",
+ "createdAt": "2018-05-12T00:00:00Z",
+ "lastUpdatedAt": "2018-05-12T00:00:00Z"
+ }
+ ]
+ }
+ ],
+ "meta": {
+ "counts": {
+ "items": {
+ "total": 10,
+ "remaining": 0
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "summary": "List the Sentry Policies for an organization ordered in ascending order of priority",
+ "tags": [
+ "sm",
+ "configure",
+ "sentry",
+ "policies",
+ "assignments",
+ "byNetwork"
+ ]
+ }
+ },
"/organizations/{organizationId}/sm/vppAccounts": {
"get": {
"description": "List the VPP accounts in the organization",
@@ -93661,39 +97305,161 @@
"items": {
"type": "object",
"properties": {
- "name": {
- "type": "string",
- "description": "Name of the device"
- },
+ "name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "model": {
+ "type": "string",
+ "description": "Model of the device"
+ },
+ "serial": {
+ "type": "string",
+ "description": "Serial number of the device"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mac address of the device"
+ },
+ "productType": {
+ "type": "string",
+ "description": "Product type of the device"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Network name"
+ },
+ "id": {
+ "type": "string",
+ "description": "Network id"
+ }
+ },
+ "description": "Network info"
+ },
+ "usage": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "number",
+ "format": "float",
+ "description": "Total data usage of the device"
+ },
+ "percentage": {
+ "type": "number",
+ "format": "float",
+ "description": "Data usage of the device by percentage"
+ }
+ },
+ "description": "Data usage of the device"
+ },
+ "clients": {
+ "type": "object",
+ "properties": {
+ "counts": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "description": "Total counts of clients"
+ }
+ },
+ "description": "Counts of clients"
+ }
+ },
+ "description": "Clients"
+ }
+ }
+ }
+ },
+ "examples": {
+ "application/json": [
+ {
+ "name": "My AP",
+ "model": "MR34",
+ "serial": "Q234-ABCD-5678",
+ "mac": "00:11:22:33:44:55",
+ "productType": "switch",
+ "network": {
+ "name": "Main Office",
+ "id": "N_24329156"
+ },
+ "usage": {
+ "total": 18000.111,
+ "percentage": 80.223456789
+ },
+ "clients": {
+ "counts": {
+ "total": 4
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "summary": "Return metrics for organization's top 10 devices sorted by data usage over given time range",
+ "tags": [
+ "organizations",
+ "monitor",
+ "summary",
+ "top",
+ "devices",
+ "byUsage"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/summary/top/devices/models/byUsage": {
+ "get": {
+ "description": "Return metrics for organization's top 10 device models sorted by data usage over given time range. Default unit is megabytes.",
+ "operationId": "getOrganizationSummaryTopDevicesModelsByUsage",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "type": "string",
+ "required": true
+ },
+ {
+ "type": "string",
+ "name": "t0",
+ "in": "query",
+ "description": "The beginning of the timespan for the data."
+ },
+ {
+ "type": "string",
+ "name": "t1",
+ "in": "query",
+ "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0."
+ },
+ {
+ "type": "number",
+ "format": "float",
+ "minimum": 28800,
+ "maximum": 2678400,
+ "name": "timespan",
+ "in": "query",
+ "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 31 days. The default is 1 day."
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
"model": {
"type": "string",
- "description": "Model of the device"
- },
- "serial": {
- "type": "string",
- "description": "Serial number of the device"
- },
- "mac": {
- "type": "string",
- "description": "Mac address of the device"
- },
- "productType": {
- "type": "string",
- "description": "Product type of the device"
+ "description": "The device model"
},
- "network": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Network name"
- },
- "id": {
- "type": "string",
- "description": "Network id"
- }
- },
- "description": "Network info"
+ "count": {
+ "type": "integer",
+ "description": "Total number of devices per model"
},
"usage": {
"type": "object",
@@ -93701,31 +97467,15 @@
"total": {
"type": "number",
"format": "float",
- "description": "Total data usage of the device"
+ "description": "Total usage in megabytes"
},
- "percentage": {
+ "average": {
"type": "number",
"format": "float",
- "description": "Data usage of the device by percentage"
- }
- },
- "description": "Data usage of the device"
- },
- "clients": {
- "type": "object",
- "properties": {
- "counts": {
- "type": "object",
- "properties": {
- "total": {
- "type": "integer",
- "description": "Total counts of clients"
- }
- },
- "description": "Counts of clients"
+ "description": "Average usage in megabytes"
}
},
- "description": "Clients"
+ "description": "Usage info in megabytes"
}
}
}
@@ -93733,44 +97483,33 @@
"examples": {
"application/json": [
{
- "name": "My AP",
"model": "MR34",
- "serial": "Q234-ABCD-5678",
- "mac": "00:11:22:33:44:55",
- "productType": "switch",
- "network": {
- "name": "Main Office",
- "id": "N_24329156"
- },
+ "count": 2,
"usage": {
- "total": 18000.111,
- "percentage": 80.223456789
- },
- "clients": {
- "counts": {
- "total": 4
- }
+ "total": 2000.0,
+ "average": 1000.0
}
}
]
}
}
},
- "summary": "Return metrics for organization's top 10 devices sorted by data usage over given time range",
+ "summary": "Return metrics for organization's top 10 device models sorted by data usage over given time range",
"tags": [
"organizations",
"monitor",
"summary",
"top",
"devices",
+ "models",
"byUsage"
]
}
},
- "/organizations/{organizationId}/summary/top/devices/models/byUsage": {
+ "/organizations/{organizationId}/summary/top/networks/byStatus": {
"get": {
- "description": "Return metrics for organization's top 10 device models sorted by data usage over given time range. Default unit is megabytes.",
- "operationId": "getOrganizationSummaryTopDevicesModelsByUsage",
+ "description": "List the client and status overview information for the networks in an organization. Usage is measured in kilobytes and from the last seven days.",
+ "operationId": "getOrganizationSummaryTopNetworksByStatus",
"parameters": [
{
"name": "organizationId",
@@ -93780,25 +97519,22 @@
"required": true
},
{
- "type": "string",
- "name": "t0",
+ "type": "integer",
+ "name": "perPage",
"in": "query",
- "description": "The beginning of the timespan for the data."
+ "description": "The number of entries per page returned. Acceptable range is 3 - 5000."
},
{
"type": "string",
- "name": "t1",
+ "name": "startingAfter",
"in": "query",
- "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0."
+ "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": "number",
- "format": "float",
- "minimum": 28800,
- "maximum": 2678400,
- "name": "timespan",
+ "type": "string",
+ "name": "endingBefore",
"in": "query",
- "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 31 days. The default is 1 day."
+ "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": {
@@ -93809,56 +97545,200 @@
"items": {
"type": "object",
"properties": {
- "model": {
+ "networkId": {
"type": "string",
- "description": "The device model"
+ "description": "Network identifier"
},
- "count": {
- "type": "integer",
- "description": "Total number of devices per model"
+ "name": {
+ "type": "string",
+ "description": "Network name"
},
- "usage": {
+ "url": {
+ "type": "string",
+ "description": "Network clients list URL"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Network tags"
+ },
+ "clients": {
"type": "object",
"properties": {
- "total": {
- "type": "number",
- "format": "float",
- "description": "Total usage in megabytes"
+ "counts": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "description": "Total count of clients in network"
+ }
+ },
+ "description": "Network client counts"
},
- "average": {
- "type": "number",
- "format": "float",
- "description": "Average usage in megabytes"
+ "usage": {
+ "type": "object",
+ "properties": {
+ "upstream": {
+ "type": "number",
+ "format": "float",
+ "description": "Total upstream usage in network, in KB"
+ },
+ "downstream": {
+ "type": "number",
+ "format": "float",
+ "description": "Total downstream usage in network, in KB"
+ }
+ },
+ "description": "Network client usage data"
}
},
- "description": "Usage info in megabytes"
+ "description": "Network clients data"
+ },
+ "statuses": {
+ "type": "object",
+ "properties": {
+ "overall": {
+ "type": "string",
+ "description": "Overall status of network"
+ },
+ "byProductType": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "productType": {
+ "type": "string",
+ "description": "Product type"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "online": {
+ "type": "integer",
+ "description": "Count of online devices"
+ },
+ "offline": {
+ "type": "integer",
+ "description": "Count of offline devices"
+ },
+ "alerting": {
+ "type": "integer",
+ "description": "Count of alerting devices"
+ },
+ "dormant": {
+ "type": "integer",
+ "description": "Count of dormant devices"
+ }
+ },
+ "description": "Counts of devices by status"
+ }
+ }
+ },
+ "description": "List of status counts by product type"
+ }
+ },
+ "description": "Network device statuses"
+ },
+ "devices": {
+ "type": "object",
+ "properties": {
+ "byProductType": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "productType": {
+ "type": "string",
+ "description": "Product type"
+ },
+ "url": {
+ "type": "string",
+ "description": "URL to clients list for the relevant product type"
+ }
+ }
+ },
+ "description": "URLs by product type"
+ }
+ },
+ "description": "Network device information"
+ },
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Product types in 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": [
{
- "model": "MR34",
- "count": 2,
- "usage": {
- "total": 2000.0,
- "average": 1000.0
- }
+ "networkId": "N_24329156",
+ "name": "Main Office",
+ "url": "https://n1.meraki.com//n//manage/nodes/list",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "clients": {
+ "counts": {
+ "total": 72
+ },
+ "usage": {
+ "upstream": 3732658.44,
+ "downstream": 983732658.87
+ }
+ },
+ "statuses": {
+ "overall": "online",
+ "byProductType": [
+ {
+ "productType": "wireless",
+ "counts": {
+ "online": 2,
+ "offline": 1,
+ "alerting": 0,
+ "dormant": 3
+ }
+ }
+ ]
+ },
+ "devices": {
+ "byProductType": [
+ {
+ "productType": "wireless",
+ "url": "https://n1.meraki.com//n//manage/nodes/new_list/000000000000"
+ }
+ ]
+ },
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ]
}
]
}
}
},
- "summary": "Return metrics for organization's top 10 device models sorted by data usage over given time range",
+ "summary": "List the client and status overview information for the networks in an organization",
"tags": [
"organizations",
"monitor",
"summary",
"top",
- "devices",
- "models",
- "byUsage"
+ "networks",
+ "byStatus"
]
}
},
@@ -94529,6 +98409,20 @@
"format": "date-time",
"description": "Last reported time for the device"
},
+ "highAvailability": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Indicates whether High Availability is enabled for the device. For devices that do not support HA, this will be 'false'"
+ },
+ "role": {
+ "type": "string",
+ "description": "The HA role of the device on the network. For devices that do not support HA, this will be 'primary'"
+ }
+ },
+ "description": "Device High Availability Capabilities"
+ },
"uplinks": {
"type": "array",
"items": {
@@ -94641,6 +98535,10 @@
"serial": "Q234-ABCD-5678",
"model": "MX68C",
"lastReportedAt": "2018-02-11T00:00:00Z",
+ "highAvailability": {
+ "enabled": true,
+ "role": "primary"
+ },
"uplinks": [
{
"interface": "wan1",
@@ -96840,9 +100738,15 @@
{
"name": "applications"
},
+ {
+ "name": "areas"
+ },
{
"name": "arpInspection"
},
+ {
+ "name": "arpTable"
+ },
{
"name": "artifacts"
},
@@ -96873,9 +100777,15 @@
{
"name": "bonjourForwarding"
},
+ {
+ "name": "boundaries"
+ },
{
"name": "brandingPolicies"
},
+ {
+ "name": "byBoundary"
+ },
{
"name": "byClient"
},
@@ -96894,6 +100804,9 @@
{
"name": "byNetwork"
},
+ {
+ "name": "byStatus"
+ },
{
"name": "bySwitch"
},
@@ -96906,6 +100819,9 @@
{
"name": "bypassActivationLockAttempts"
},
+ {
+ "name": "cableTest"
+ },
{
"name": "callbacks"
},
@@ -96993,6 +100909,9 @@
{
"name": "desktopLogs"
},
+ {
+ "name": "detections"
+ },
{
"name": "deviceCommandLogs"
},
@@ -97131,6 +101050,9 @@
{
"name": "licensing"
},
+ {
+ "name": "lines"
+ },
{
"name": "linkAggregations"
},
@@ -97368,6 +101290,9 @@
{
"name": "sense"
},
+ {
+ "name": "sentry"
+ },
{
"name": "servers"
},
@@ -97557,6 +101482,9 @@
{
"name": "vppAccounts"
},
+ {
+ "name": "wakeOnLan"
+ },
{
"name": "warmSpare"
},
@@ -98402,6 +102330,30 @@
"resource": "/networks/{networkId}/appliance/vpn/siteToSiteVpn",
"operation": "update"
},
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Create a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles",
+ "operation": "create"
+ },
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Delete a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles/{roleId}",
+ "operation": "destroy"
+ },
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Update a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles/{roleId}",
+ "operation": "update"
+ },
+ {
+ "group": "Sm/actions/sentry/policies/assignments",
+ "summary": "Update an Organizations Sentry Policies using the provided list. Sentry Policies are ordered in descending order of priority (i.e. highest priority at the bottom, this is opposite the Dashboard UI). Policies not present in the request will be deleted.",
+ "resource": "/organizations/{organizationId}/sm/sentry/policies/assignments",
+ "operation": "update"
+ },
{
"group": "Ssid",
"summary": "Update the attributes of an MR SSID",
diff --git a/openapi/spec3.json b/openapi/spec3.json
index f15abca..8bd7eba 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: 03 January, 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: 07 February, 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.42.0"
+ "version": "1.43.0"
},
"servers": [
{
@@ -507,6 +507,16 @@
"post": {
"description": "Claim a subscription into an organization.",
"operationId": "claimAdministeredLicensingSubscriptionSubscriptions",
+ "parameters": [
+ {
+ "name": "validate",
+ "in": "query",
+ "description": "Check if the provided claim key is valid and can be claimed into the organization.",
+ "schema": {
+ "type": "boolean"
+ }
+ }
+ ],
"requestBody": {
"content": {
"application/json": {
@@ -531,6 +541,7 @@
}
},
"example": {
+ "validate": true,
"claimKey": "S2345-6789A-BCDEF-GHJKM",
"organizationId": "12345678910",
"name": "Corporate subscription",
@@ -3056,6 +3067,7 @@
},
"/devices/{serial}/camera/analytics/live": {
"get": {
+ "deprecated": true,
"description": "Returns live state from camera of analytics zones",
"operationId": "getDeviceCameraAnalyticsLive",
"parameters": [
@@ -3100,6 +3112,7 @@
},
"/devices/{serial}/camera/analytics/overview": {
"get": {
+ "deprecated": true,
"description": "Returns an overview of aggregate analytics data for a timespan",
"operationId": "getDeviceCameraAnalyticsOverview",
"parameters": [
@@ -3186,6 +3199,7 @@
},
"/devices/{serial}/camera/analytics/recent": {
"get": {
+ "deprecated": true,
"description": "Returns most recent record for analytics zones",
"operationId": "getDeviceCameraAnalyticsRecent",
"parameters": [
@@ -3246,6 +3260,7 @@
},
"/devices/{serial}/camera/analytics/zones": {
"get": {
+ "deprecated": true,
"description": "Returns all configured analytic zones for this camera",
"operationId": "getDeviceCameraAnalyticsZones",
"parameters": [
@@ -3298,6 +3313,7 @@
},
"/devices/{serial}/camera/analytics/zones/{zoneId}/history": {
"get": {
+ "deprecated": true,
"description": "Return historical records for analytic zones",
"operationId": "getDeviceCameraAnalyticsZoneHistory",
"parameters": [
@@ -4929,10 +4945,10 @@
]
}
},
- "/devices/{serial}/liveTools/ping": {
+ "/devices/{serial}/liveTools/arpTable": {
"post": {
"callbacks": {
- "pingHost": {
+ "arpTable": {
"{$request.body#/callback/url}": {
"post": {
"requestBody": {
@@ -4974,13 +4990,13 @@
"message": {
"type": "object",
"properties": {
- "pingId": {
+ "arpTableId": {
"type": "string",
- "description": "Id to check the status of your ping request."
+ "description": "Id of the ARP table request. Used to check the status of the request."
},
"url": {
"type": "string",
- "description": "GET this url to check the status of your ping request."
+ "description": "GET this url to check the status of your ARP table request."
},
"request": {
"type": "object",
@@ -4988,89 +5004,51 @@
"serial": {
"type": "string",
"description": "Device serial number"
- },
- "target": {
- "type": "string",
- "description": "IP address or FQDN to ping"
- },
- "count": {
- "type": "integer",
- "description": "Number of pings to send"
}
},
- "description": "Ping request parameters"
+ "description": "ARP table request parameters"
},
"status": {
"type": "string",
- "description": "Status of the ping request."
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the ARP table request."
},
- "results": {
- "type": "object",
- "properties": {
- "sent": {
- "type": "integer",
- "description": "Number of packets sent"
- },
- "received": {
- "type": "integer",
- "description": "Number of packets received"
- },
- "loss": {
- "type": "object",
- "properties": {
- "percentage": {
- "type": "number",
- "format": "float",
- "description": "Percentage of packets lost"
- }
+ "entries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "The IP address of the ARP table entry"
},
- "description": "Lost packets"
- },
- "latencies": {
- "type": "object",
- "properties": {
- "minimum": {
- "type": "number",
- "format": "float",
- "description": "Minimum latency"
- },
- "average": {
- "type": "number",
- "format": "float",
- "description": "Average latency"
- },
- "maximum": {
- "type": "number",
- "format": "float",
- "description": "Maximum latency"
- }
+ "mac": {
+ "type": "string",
+ "description": "The MAC address of the ARP table entry"
},
- "description": "Packet latency stats"
- },
- "replies": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "sequenceId": {
- "type": "integer",
- "description": "Sequence ID of the packet"
- },
- "size": {
- "type": "integer",
- "description": "Size of the packet in bytes"
- },
- "latency": {
- "type": "number",
- "format": "float",
- "description": "Latency of the packet in milliseconds"
- }
- }
+ "vlanId": {
+ "type": "integer",
+ "description": "The VLAN ID of the ARP table entry"
},
- "description": "Received packets"
+ "lastUpdatedAt": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time of the last update of the ARP table entry"
+ }
}
},
- "description": "Results of the ping request."
+ "description": "The ARP table entries"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
}
}
}
@@ -5088,8 +5066,8 @@
}
}
},
- "description": "Enqueue a job to ping a target host from the device",
- "operationId": "createDeviceLiveToolsPing",
+ "description": "Enqueue a job to perform a ARP table request for the device. This endpoint currently supports switches.",
+ "operationId": "createDeviceLiveToolsArpTable",
"parameters": [
{
"name": "serial",
@@ -5107,14 +5085,6 @@
"schema": {
"type": "object",
"properties": {
- "target": {
- "type": "string",
- "description": "FQDN, IPv4 or IPv6 address"
- },
- "count": {
- "type": "integer",
- "description": "Count parameter to pass to ping. [1..5], default 5"
- },
"callback": {
"type": "object",
"properties": {
@@ -5152,8 +5122,6 @@
}
},
"example": {
- "target": "75.75.75.75",
- "count": 2,
"callback": {
"url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
"sharedSecret": "secret",
@@ -5164,14 +5132,11 @@
"id": "wpt_2100"
}
}
- },
- "required": [
- "target"
- ]
+ }
}
}
},
- "required": true
+ "required": false
},
"responses": {
"201": {
@@ -5181,13 +5146,13 @@
"schema": {
"type": "object",
"properties": {
- "pingId": {
+ "arpTableId": {
"type": "string",
- "description": "Id to check the status of your ping request."
+ "description": "Id of the ARP table request. Used to check the status of the request."
},
"url": {
"type": "string",
- "description": "GET this url to check the status of your ping request."
+ "description": "GET this url to check the status of your ARP table request."
},
"request": {
"type": "object",
@@ -5195,21 +5160,21 @@
"serial": {
"type": "string",
"description": "Device serial number"
- },
- "target": {
- "type": "string",
- "description": "IP address or FQDN to ping"
- },
- "count": {
- "type": "integer",
- "description": "Number of pings to send"
}
},
- "description": "Ping request parameters"
+ "description": "ARP table request parameters"
},
"status": {
"type": "string",
- "description": "Status of the ping request."
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the ARP table request."
},
"callback": {
"type": "object",
@@ -5233,12 +5198,10 @@
}
},
"example": {
- "pingId": "1284392014819",
- "url": "/devices/SERIAL/liveTools/ping/1284392014819",
+ "arpTableId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/arpTable/1284392014819",
"request": {
- "serial": "Q234-ABCD-5678",
- "target": "75.75.75.75",
- "count": 2
+ "serial": "Q234-ABCD-5678"
},
"status": "complete",
"callback": {
@@ -5251,18 +5214,18 @@
}
}
},
- "summary": "Enqueue a job to ping a target host from the device",
+ "summary": "Enqueue a job to perform a ARP table request for the device",
"tags": [
"devices",
"liveTools",
- "ping"
+ "arpTable"
]
}
},
- "/devices/{serial}/liveTools/ping/{id}": {
+ "/devices/{serial}/liveTools/arpTable/{arpTableId}": {
"get": {
- "description": "Return a ping job. Latency unit in response is in milliseconds. Size is in bytes.",
- "operationId": "getDeviceLiveToolsPing",
+ "description": "Return an ARP table live tool job.",
+ "operationId": "getDeviceLiveToolsArpTable",
"parameters": [
{
"name": "serial",
@@ -5274,9 +5237,9 @@
"required": true
},
{
- "name": "id",
+ "name": "arpTableId",
"in": "path",
- "description": "ID",
+ "description": "Arp table ID",
"schema": {
"type": "string"
},
@@ -5291,13 +5254,13 @@
"schema": {
"type": "object",
"properties": {
- "pingId": {
+ "arpTableId": {
"type": "string",
- "description": "Id to check the status of your ping request."
+ "description": "Id of the ARP table request. Used to check the status of the request."
},
"url": {
"type": "string",
- "description": "GET this url to check the status of your ping request."
+ "description": "GET this url to check the status of your ARP table request."
},
"request": {
"type": "object",
@@ -5305,137 +5268,633 @@
"serial": {
"type": "string",
"description": "Device serial number"
- },
- "target": {
- "type": "string",
- "description": "IP address or FQDN to ping"
- },
- "count": {
- "type": "integer",
- "description": "Number of pings to send"
}
},
- "description": "Ping request parameters"
+ "description": "ARP table request parameters"
},
"status": {
"type": "string",
- "description": "Status of the ping request."
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the ARP table request."
},
- "results": {
- "type": "object",
- "properties": {
- "sent": {
- "type": "integer",
- "description": "Number of packets sent"
- },
- "received": {
- "type": "integer",
- "description": "Number of packets received"
- },
- "loss": {
- "type": "object",
- "properties": {
- "percentage": {
- "type": "number",
- "format": "float",
- "description": "Percentage of packets lost"
- }
+ "entries": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ip": {
+ "type": "string",
+ "description": "The IP address of the ARP table entry"
},
- "description": "Lost packets"
- },
- "latencies": {
- "type": "object",
- "properties": {
- "minimum": {
- "type": "number",
- "format": "float",
- "description": "Minimum latency"
- },
- "average": {
- "type": "number",
- "format": "float",
- "description": "Average latency"
- },
- "maximum": {
- "type": "number",
- "format": "float",
- "description": "Maximum latency"
- }
+ "mac": {
+ "type": "string",
+ "description": "The MAC address of the ARP table entry"
},
- "description": "Packet latency stats"
- },
- "replies": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "sequenceId": {
- "type": "integer",
- "description": "Sequence ID of the packet"
- },
- "size": {
- "type": "integer",
- "description": "Size of the packet in bytes"
- },
- "latency": {
- "type": "number",
- "format": "float",
- "description": "Latency of the packet in milliseconds"
- }
- }
+ "vlanId": {
+ "type": "integer",
+ "description": "The VLAN ID of the ARP table entry"
},
- "description": "Received packets"
+ "lastUpdatedAt": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Time of the last update of the ARP table entry"
+ }
}
},
- "description": "Results of the ping request."
+ "description": "The ARP table entries"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
}
}
},
"example": {
- "pingId": "1284392014819",
- "url": "/devices/SERIAL/liveTools/ping/1284392014819",
+ "arpTableId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/arpTable/1284392014819",
"request": {
- "serial": "Q234-ABCD-5678",
- "target": "75.75.75.75",
- "count": 2
+ "serial": "Q234-ABCD-5678"
},
"status": "complete",
- "results": {
- "sent": 5,
- "received": 5,
- "loss": {
- "percentage": 0.0
- },
- "latencies": {
- "minimum": 15.8,
- "average": 15.8,
- "maximum": 15.9
- },
- "replies": [
- {
- "sequenceId": 1,
- "size": 84,
- "latency": 15.7
- }
- ]
- }
+ "entries": [
+ {
+ "ip": "10.0.0.0/24",
+ "mac": "00:11:22:33:44:55",
+ "vlanId": 100,
+ "lastUpdatedAt": "2018-02-11T00:00:00.090210Z"
+ }
+ ],
+ "error": "The device is unreachable."
}
}
}
}
},
- "summary": "Return a ping job",
+ "summary": "Return an ARP table live tool job.",
"tags": [
"devices",
"liveTools",
- "ping"
+ "arpTable"
]
}
},
- "/devices/{serial}/liveTools/pingDevice": {
+ "/devices/{serial}/liveTools/cableTest": {
"post": {
"callbacks": {
- "pingDevice": {
+ "cableTest": {
+ "{$request.body#/callback/url}": {
+ "post": {
+ "requestBody": {
+ "required": true,
+ "description": "Callback payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "organization": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "sentAt": {
+ "type": "string"
+ },
+ "callbackId": {
+ "type": "string"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "cableTestId": {
+ "type": "string",
+ "description": "Id of the cable test request. Used to check the status of the request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your cable test request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
+ }
+ },
+ "description": "Cable test request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the cable test request."
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "port": {
+ "type": "string",
+ "description": "The port for which the test was performed."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "down",
+ "error",
+ "in-progress",
+ "up"
+ ],
+ "description": "The current status of the port. If the cable test is still being performed on the port, \"in-progress\" is used. If an error occurred during the cable test, \"error\" is used and the error property will be populated."
+ },
+ "speedMbps": {
+ "type": "integer",
+ "description": "Speed in Mbps. A speed of 0 indicates the port is down or the port speed is automatic."
+ },
+ "error": {
+ "type": "string",
+ "description": "If an error occurred during the cable test, the error message will be populated here."
+ },
+ "pairs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The index of the twisted pair tested."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "abnormal",
+ "couplex",
+ "fail",
+ "forced",
+ "in-progress",
+ "invalid",
+ "not-supported",
+ "ok",
+ "open",
+ "open or short",
+ "short",
+ "short or abnormal",
+ "short or couplex",
+ "unknown"
+ ],
+ "description": "The test result of the twisted pair tested."
+ },
+ "lengthMeters": {
+ "type": "integer",
+ "description": "The detected length of the twisted pair."
+ }
+ }
+ },
+ "description": "Results for each twisted pair within the cable."
+ }
+ }
+ },
+ "description": "Results of the cable test request, one for each requested port."
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "2XX": {
+ "description": "Your server return this code if it accepts the callback"
+ }
+ }
+ }
+ }
+ }
+ },
+ "description": "Enqueue a job to perform a cable test for the device on the specified ports.",
+ "operationId": "createDeviceLiveToolsCableTest",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "ports": [
+ "2",
+ "8"
+ ],
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ },
+ "required": [
+ "ports"
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cableTestId": {
+ "type": "string",
+ "description": "Id of the cable test request. Used to check the status of the request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your cable test request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
+ }
+ },
+ "description": "Cable test request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the cable test request."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "example": {
+ "cableTestId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/cableTest/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "ports": [
+ "2",
+ "8"
+ ]
+ },
+ "status": "complete",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to perform a cable test for the device on the specified ports.",
+ "tags": [
+ "devices",
+ "liveTools",
+ "cableTest"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/cableTest/{id}": {
+ "get": {
+ "description": "Return a cable test live tool job.",
+ "operationId": "getDeviceLiveToolsCableTest",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "description": "ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "cableTestId": {
+ "type": "string",
+ "description": "Id of the cable test request. Used to check the status of the request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your cable test request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "ports": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "A list of ports for which to perform the cable test."
+ }
+ },
+ "description": "Cable test request parameters"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the cable test request."
+ },
+ "results": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "port": {
+ "type": "string",
+ "description": "The port for which the test was performed."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "down",
+ "error",
+ "in-progress",
+ "up"
+ ],
+ "description": "The current status of the port. If the cable test is still being performed on the port, \"in-progress\" is used. If an error occurred during the cable test, \"error\" is used and the error property will be populated."
+ },
+ "speedMbps": {
+ "type": "integer",
+ "description": "Speed in Mbps. A speed of 0 indicates the port is down or the port speed is automatic."
+ },
+ "error": {
+ "type": "string",
+ "description": "If an error occurred during the cable test, the error message will be populated here."
+ },
+ "pairs": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "index": {
+ "type": "integer",
+ "enum": [
+ 0,
+ 1,
+ 2,
+ 3
+ ],
+ "description": "The index of the twisted pair tested."
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "abnormal",
+ "couplex",
+ "fail",
+ "forced",
+ "in-progress",
+ "invalid",
+ "not-supported",
+ "ok",
+ "open",
+ "open or short",
+ "short",
+ "short or abnormal",
+ "short or couplex",
+ "unknown"
+ ],
+ "description": "The test result of the twisted pair tested."
+ },
+ "lengthMeters": {
+ "type": "integer",
+ "description": "The detected length of the twisted pair."
+ }
+ }
+ },
+ "description": "Results for each twisted pair within the cable."
+ }
+ }
+ },
+ "description": "Results of the cable test request, one for each requested port."
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ },
+ "example": {
+ "cableTestId": "1284392014819",
+ "url": "/devices/Q234-ABCD-5678/liveTools/cableTest/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "ports": [
+ "2",
+ "8"
+ ]
+ },
+ "status": "complete",
+ "results": [
+ {
+ "port": "2",
+ "status": "up",
+ "speedMbps": 10000,
+ "error": "An unexpected error occurred during the execution of the cable test.",
+ "pairs": [
+ {
+ "index": 0,
+ "status": "ok",
+ "lengthMeters": 1
+ }
+ ]
+ }
+ ],
+ "error": "The device is unreachable."
+ }
+ }
+ }
+ }
+ },
+ "summary": "Return a cable test live tool job.",
+ "tags": [
+ "devices",
+ "liveTools",
+ "cableTest"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/ping": {
+ "post": {
+ "callbacks": {
+ "pingHost": {
"{$request.body#/callback/url}": {
"post": {
"requestBody": {
@@ -5591,8 +6050,8 @@
}
}
},
- "description": "Enqueue a job to check connectivity status to the device",
- "operationId": "createDeviceLiveToolsPingDevice",
+ "description": "Enqueue a job to ping a target host from the device",
+ "operationId": "createDeviceLiveToolsPing",
"parameters": [
{
"name": "serial",
@@ -5610,6 +6069,10 @@
"schema": {
"type": "object",
"properties": {
+ "target": {
+ "type": "string",
+ "description": "FQDN, IPv4 or IPv6 address"
+ },
"count": {
"type": "integer",
"description": "Count parameter to pass to ping. [1..5], default 5"
@@ -5651,7 +6114,8 @@
}
},
"example": {
- "count": 3,
+ "target": "75.75.75.75",
+ "count": 2,
"callback": {
"url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
"sharedSecret": "secret",
@@ -5662,11 +6126,14 @@
"id": "wpt_2100"
}
}
- }
+ },
+ "required": [
+ "target"
+ ]
}
}
},
- "required": false
+ "required": true
},
"responses": {
"201": {
@@ -5746,18 +6213,18 @@
}
}
},
- "summary": "Enqueue a job to check connectivity status to the device",
+ "summary": "Enqueue a job to ping a target host from the device",
"tags": [
"devices",
"liveTools",
- "pingDevice"
+ "ping"
]
}
},
- "/devices/{serial}/liveTools/pingDevice/{id}": {
+ "/devices/{serial}/liveTools/ping/{id}": {
"get": {
- "description": "Return a ping device job. Latency unit in response is in milliseconds. Size is in bytes.",
- "operationId": "getDeviceLiveToolsPingDevice",
+ "description": "Return a ping job. Latency unit in response is in milliseconds. Size is in bytes.",
+ "operationId": "getDeviceLiveToolsPing",
"parameters": [
{
"name": "serial",
@@ -5883,25 +6350,6 @@
}
},
"description": "Results of the ping request."
- },
- "callback": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
- },
- "url": {
- "type": "string",
- "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
- },
- "status": {
- "type": "string",
- "description": "The status of the callback"
- }
- },
- "description": "Information for callback used to send back results",
- "x-release-stage": "general_availability"
}
}
},
@@ -5932,91 +6380,992 @@
"latency": 15.7
}
]
- },
- "callback": {
- "id": "1284392014819",
- "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
- "status": "new"
}
}
}
}
}
},
- "summary": "Return a ping device job",
+ "summary": "Return a ping job",
"tags": [
"devices",
"liveTools",
- "pingDevice"
- ]
- }
- },
- "/devices/{serial}/lldpCdp": {
- "get": {
- "description": "List LLDP and CDP information for a device",
- "operationId": "getDeviceLldpCdp",
- "parameters": [
- {
- "name": "serial",
- "in": "path",
- "description": "Serial",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "responses": {
- "200": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "object"
- },
- "example": {
- "sourceMac": "00:11:22:33:44:55",
- "ports": {
- "8": {
- "cdp": {
- "deviceId": "e0553d8cdf53",
- "portId": "Port 10",
- "address": "00:11:22:33:44:55",
- "sourcePort": "8"
- }
- },
- "12": {
- "cdp": {
- "deviceId": "e0553d8cdf53",
- "portId": "Port 11",
- "address": "00:11:22:33:44:55",
- "sourcePort": "12"
- },
- "lldp": {
- "systemName": "Meraki MS350-24X - Phineas",
- "portId": "11",
- "managementAddress": "00:11:22:33:44:55",
- "sourcePort": "12"
- }
- }
- }
- }
- }
- }
- }
- },
- "summary": "List LLDP and CDP information for a device",
- "tags": [
- "devices",
- "monitor",
- "lldpCdp"
+ "ping"
]
}
},
- "/devices/{serial}/lossAndLatencyHistory": {
- "get": {
- "description": "Get the uplink loss percentage and latency in milliseconds, and goodput in kilobits per second for MX, MG and Z devices.",
- "operationId": "getDeviceLossAndLatencyHistory",
+ "/devices/{serial}/liveTools/pingDevice": {
+ "post": {
+ "callbacks": {
+ "pingDevice": {
+ "{$request.body#/callback/url}": {
+ "post": {
+ "requestBody": {
+ "required": true,
+ "description": "Callback payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "organization": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "sentAt": {
+ "type": "string"
+ },
+ "callbackId": {
+ "type": "string"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "pingId": {
+ "type": "string",
+ "description": "Id to check the status of your ping request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "target": {
+ "type": "string",
+ "description": "IP address or FQDN to ping"
+ },
+ "count": {
+ "type": "integer",
+ "description": "Number of pings to send"
+ }
+ },
+ "description": "Ping request parameters"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the ping request."
+ },
+ "results": {
+ "type": "object",
+ "properties": {
+ "sent": {
+ "type": "integer",
+ "description": "Number of packets sent"
+ },
+ "received": {
+ "type": "integer",
+ "description": "Number of packets received"
+ },
+ "loss": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "number",
+ "format": "float",
+ "description": "Percentage of packets lost"
+ }
+ },
+ "description": "Lost packets"
+ },
+ "latencies": {
+ "type": "object",
+ "properties": {
+ "minimum": {
+ "type": "number",
+ "format": "float",
+ "description": "Minimum latency"
+ },
+ "average": {
+ "type": "number",
+ "format": "float",
+ "description": "Average latency"
+ },
+ "maximum": {
+ "type": "number",
+ "format": "float",
+ "description": "Maximum latency"
+ }
+ },
+ "description": "Packet latency stats"
+ },
+ "replies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "sequenceId": {
+ "type": "integer",
+ "description": "Sequence ID of the packet"
+ },
+ "size": {
+ "type": "integer",
+ "description": "Size of the packet in bytes"
+ },
+ "latency": {
+ "type": "number",
+ "format": "float",
+ "description": "Latency of the packet in milliseconds"
+ }
+ }
+ },
+ "description": "Received packets"
+ }
+ },
+ "description": "Results of the ping request."
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "2XX": {
+ "description": "Your server return this code if it accepts the callback"
+ }
+ }
+ }
+ }
+ }
+ },
+ "description": "Enqueue a job to check connectivity status to the device",
+ "operationId": "createDeviceLiveToolsPingDevice",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "count": {
+ "type": "integer",
+ "description": "Count parameter to pass to ping. [1..5], default 5"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "count": 3,
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ }
+ }
+ }
+ },
+ "required": false
+ },
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "pingId": {
+ "type": "string",
+ "description": "Id to check the status of your ping request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "target": {
+ "type": "string",
+ "description": "IP address or FQDN to ping"
+ },
+ "count": {
+ "type": "integer",
+ "description": "Number of pings to send"
+ }
+ },
+ "description": "Ping request parameters"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the ping request."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "example": {
+ "pingId": "1284392014819",
+ "url": "/devices/SERIAL/liveTools/ping/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "target": "75.75.75.75",
+ "count": 2
+ },
+ "status": "complete",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to check connectivity status to the device",
+ "tags": [
+ "devices",
+ "liveTools",
+ "pingDevice"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/pingDevice/{id}": {
+ "get": {
+ "description": "Return a ping device job. Latency unit in response is in milliseconds. Size is in bytes.",
+ "operationId": "getDeviceLiveToolsPingDevice",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "id",
+ "in": "path",
+ "description": "ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "pingId": {
+ "type": "string",
+ "description": "Id to check the status of your ping request."
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request."
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "target": {
+ "type": "string",
+ "description": "IP address or FQDN to ping"
+ },
+ "count": {
+ "type": "integer",
+ "description": "Number of pings to send"
+ }
+ },
+ "description": "Ping request parameters"
+ },
+ "status": {
+ "type": "string",
+ "description": "Status of the ping request."
+ },
+ "results": {
+ "type": "object",
+ "properties": {
+ "sent": {
+ "type": "integer",
+ "description": "Number of packets sent"
+ },
+ "received": {
+ "type": "integer",
+ "description": "Number of packets received"
+ },
+ "loss": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "number",
+ "format": "float",
+ "description": "Percentage of packets lost"
+ }
+ },
+ "description": "Lost packets"
+ },
+ "latencies": {
+ "type": "object",
+ "properties": {
+ "minimum": {
+ "type": "number",
+ "format": "float",
+ "description": "Minimum latency"
+ },
+ "average": {
+ "type": "number",
+ "format": "float",
+ "description": "Average latency"
+ },
+ "maximum": {
+ "type": "number",
+ "format": "float",
+ "description": "Maximum latency"
+ }
+ },
+ "description": "Packet latency stats"
+ },
+ "replies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "sequenceId": {
+ "type": "integer",
+ "description": "Sequence ID of the packet"
+ },
+ "size": {
+ "type": "integer",
+ "description": "Size of the packet in bytes"
+ },
+ "latency": {
+ "type": "number",
+ "format": "float",
+ "description": "Latency of the packet in milliseconds"
+ }
+ }
+ },
+ "description": "Received packets"
+ }
+ },
+ "description": "Results of the ping request."
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "example": {
+ "pingId": "1284392014819",
+ "url": "/devices/SERIAL/liveTools/ping/1284392014819",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "target": "75.75.75.75",
+ "count": 2
+ },
+ "status": "complete",
+ "results": {
+ "sent": 5,
+ "received": 5,
+ "loss": {
+ "percentage": 0.0
+ },
+ "latencies": {
+ "minimum": 15.8,
+ "average": 15.8,
+ "maximum": 15.9
+ },
+ "replies": [
+ {
+ "sequenceId": 1,
+ "size": 84,
+ "latency": 15.7
+ }
+ ]
+ },
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Return a ping device job",
+ "tags": [
+ "devices",
+ "liveTools",
+ "pingDevice"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/wakeOnLan": {
+ "post": {
+ "callbacks": {
+ "wakeOnLan": {
+ "{$request.body#/callback/url}": {
+ "post": {
+ "requestBody": {
+ "required": true,
+ "description": "Callback payload",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "organization": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ }
+ }
+ },
+ "sentAt": {
+ "type": "string"
+ },
+ "callbackId": {
+ "type": "string"
+ },
+ "message": {
+ "type": "object",
+ "properties": {
+ "wakeOnLanId": {
+ "type": "string",
+ "description": "ID of the Wake-on-LAN job"
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the Wake-on-LAN request"
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ }
+ },
+ "description": "The parameters of the Wake-on-LAN request"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "responses": {
+ "2XX": {
+ "description": "Your server return this code if it accepts the callback"
+ }
+ }
+ }
+ }
+ }
+ },
+ "description": "Enqueue a job to send a Wake-on-LAN packet from the device",
+ "operationId": "createDeviceLiveToolsWakeOnLan",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. If using this field, please also specify a sharedSecret."
+ },
+ "sharedSecret": {
+ "type": "string",
+ "description": "A shared secret that will be included in the requests sent to the callback URL. It can be used to verify that the request was sent by Meraki. If using this field, please also specify an url."
+ },
+ "httpServer": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The webhook receiver ID that will receive information. If specifying this, please leave the url and sharedSecret fields blank."
+ }
+ },
+ "description": "The webhook receiver used for the callback webhook."
+ },
+ "payloadTemplate": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the payload template. Defaults to 'wpt_00005' for the Callback (included) template."
+ }
+ },
+ "description": "The payload template of the webhook used for the callback"
+ }
+ },
+ "x-release-stage": "general_availability",
+ "description": "Details for the callback. Please include either an httpServerId OR url and sharedSecret"
+ }
+ },
+ "example": {
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55",
+ "callback": {
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "sharedSecret": "secret",
+ "httpServer": {
+ "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M="
+ },
+ "payloadTemplate": {
+ "id": "wpt_2100"
+ }
+ }
+ },
+ "required": [
+ "vlanId",
+ "mac"
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wakeOnLanId": {
+ "type": "string",
+ "description": "ID of the Wake-on-LAN job"
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the Wake-on-LAN request"
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ }
+ },
+ "description": "The parameters of the Wake-on-LAN request"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ },
+ "callback": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The ID of the callback. To check the status of the callback, use this ID in a request to /webhooks/callbacks/statuses/{id}"
+ },
+ "url": {
+ "type": "string",
+ "description": "The callback URL for the webhook target. This was either provided in the original request or comes from a configured webhook receiver"
+ },
+ "status": {
+ "type": "string",
+ "description": "The status of the callback"
+ }
+ },
+ "description": "Information for callback used to send back results",
+ "x-release-stage": "general_availability"
+ }
+ }
+ },
+ "example": {
+ "wakeOnLanId": "123",
+ "url": "/devices/QXXX-YYYY-ZZZZ/liveTools/wakeOnLan/1738",
+ "status": "complete",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55"
+ },
+ "error": "The device is unreachable.",
+ "callback": {
+ "id": "1284392014819",
+ "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031",
+ "status": "new"
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Enqueue a job to send a Wake-on-LAN packet from the device",
+ "tags": [
+ "devices",
+ "liveTools",
+ "wakeOnLan"
+ ]
+ }
+ },
+ "/devices/{serial}/liveTools/wakeOnLan/{wakeOnLanId}": {
+ "get": {
+ "description": "Return a Wake-on-LAN job",
+ "operationId": "getDeviceLiveToolsWakeOnLan",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "wakeOnLanId",
+ "in": "path",
+ "description": "Wake on lan ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wakeOnLanId": {
+ "type": "string",
+ "description": "ID of the Wake-on-LAN job"
+ },
+ "url": {
+ "type": "string",
+ "description": "GET this url to check the status of your ping request"
+ },
+ "status": {
+ "type": "string",
+ "enum": [
+ "complete",
+ "failed",
+ "new",
+ "ready",
+ "running",
+ "scheduled"
+ ],
+ "description": "Status of the Wake-on-LAN request"
+ },
+ "request": {
+ "type": "object",
+ "properties": {
+ "serial": {
+ "type": "string",
+ "description": "Device serial number"
+ },
+ "vlanId": {
+ "type": "integer",
+ "description": "The target's VLAN (1 to 4094)"
+ },
+ "mac": {
+ "type": "string",
+ "description": "The target's MAC address"
+ }
+ },
+ "description": "The parameters of the Wake-on-LAN request"
+ },
+ "error": {
+ "type": "string",
+ "description": "An error message for a failed execution"
+ }
+ }
+ },
+ "example": {
+ "wakeOnLanId": "123",
+ "url": "/devices/QXXX-YYYY-ZZZZ/liveTools/wakeOnLan/1738",
+ "status": "complete",
+ "request": {
+ "serial": "Q234-ABCD-5678",
+ "vlanId": 12,
+ "mac": "00:11:22:33:44:55"
+ },
+ "error": "The device is unreachable."
+ }
+ }
+ }
+ }
+ },
+ "summary": "Return a Wake-on-LAN job",
+ "tags": [
+ "devices",
+ "liveTools",
+ "wakeOnLan"
+ ]
+ }
+ },
+ "/devices/{serial}/lldpCdp": {
+ "get": {
+ "description": "List LLDP and CDP information for a device",
+ "operationId": "getDeviceLldpCdp",
+ "parameters": [
+ {
+ "name": "serial",
+ "in": "path",
+ "description": "Serial",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ },
+ "example": {
+ "sourceMac": "00:11:22:33:44:55",
+ "ports": {
+ "8": {
+ "cdp": {
+ "deviceId": "e0553d8cdf53",
+ "portId": "Port 10",
+ "address": "00:11:22:33:44:55",
+ "sourcePort": "8"
+ }
+ },
+ "12": {
+ "cdp": {
+ "deviceId": "e0553d8cdf53",
+ "portId": "Port 11",
+ "address": "00:11:22:33:44:55",
+ "sourcePort": "12"
+ },
+ "lldp": {
+ "systemName": "Meraki MS350-24X - Phineas",
+ "portId": "11",
+ "managementAddress": "00:11:22:33:44:55",
+ "sourcePort": "12"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "List LLDP and CDP information for a device",
+ "tags": [
+ "devices",
+ "monitor",
+ "lldpCdp"
+ ]
+ }
+ },
+ "/devices/{serial}/lossAndLatencyHistory": {
+ "get": {
+ "description": "Get the uplink loss percentage and latency in milliseconds, and goodput in kilobits per second for MX, MG and Z devices.",
+ "operationId": "getDeviceLossAndLatencyHistory",
"parameters": [
{
"name": "serial",
@@ -6970,6 +8319,19 @@
],
"description": "The current connection status of the port."
},
+ "spanningTree": {
+ "type": "object",
+ "properties": {
+ "statuses": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The current Spanning Tree Protocol statuses of the port."
+ }
+ },
+ "description": "The Spanning Tree Protocol (STP) information of the connected device."
+ },
"isUplink": {
"type": "boolean",
"description": "Whether the port is the switch's uplink."
@@ -7209,6 +8571,11 @@
"portId": "1",
"enabled": true,
"status": "Connected",
+ "spanningTree": {
+ "statuses": [
+ "Learning"
+ ]
+ },
"isUplink": false,
"errors": [
"PoE overload",
@@ -24924,7 +26291,7 @@
},
"/networks/{networkId}/clients": {
"get": {
- "description": "List the clients that have used this network in the timespan",
+ "description": "List the clients that have used this network in the timespan. The data is updated at most once every five minutes.",
"operationId": "getNetworkClients",
"parameters": [
{
@@ -27182,9 +28549,10 @@
"100",
"large",
"medium",
- "small"
+ "small",
+ "xlarge"
],
- "description": "The size of the vMX you claim. It can be one of: small, medium, large, 100"
+ "description": "The size of the vMX you claim. It can be one of: small, medium, large, xlarge, 100"
}
},
"example": {
@@ -39439,13 +40807,21 @@
"items": {
"type": "string",
"enum": [
+ "apparentPower",
+ "co2",
+ "current",
"door",
+ "frequency",
"humidity",
"indoorAirQuality",
"noise",
"pm25",
+ "powerFactor",
+ "realPower",
"temperature",
"tvoc",
+ "upstreamPower",
+ "voltage",
"water"
]
},
@@ -39454,10 +40830,26 @@
"counts": {
"type": "object",
"properties": {
+ "apparentPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to apparent power readings"
+ },
+ "co2": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to CO2 readings"
+ },
+ "current": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to electrical current readings"
+ },
"door": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to an open door"
},
+ "frequency": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to frequency readings"
+ },
"humidity": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to humidity readings"
@@ -39480,6 +40872,14 @@
"type": "integer",
"description": "Number of sensors that are currently alerting due to PM2.5 readings"
},
+ "powerFactor": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to power factor readings"
+ },
+ "realPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to real power readings"
+ },
"temperature": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to temperature readings"
@@ -39488,6 +40888,14 @@
"type": "integer",
"description": "Number of sensors that are currently alerting due to TVOC readings"
},
+ "upstreamPower": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to an upstream power outage"
+ },
+ "voltage": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to voltage readings"
+ },
"water": {
"type": "integer",
"description": "Number of sensors that are currently alerting due to the presence of water"
@@ -39504,15 +40912,23 @@
"door"
],
"counts": {
+ "apparentPower": 0,
+ "co2": 0,
+ "current": 0,
"door": 0,
+ "frequency": 0,
"humidity": 1,
"indoorAirQuality": 0,
"noise": {
"ambient": 0
},
"pm25": 0,
+ "powerFactor": 0,
+ "realPower": 0,
"temperature": 4,
"tvoc": 0,
+ "upstreamPower": 0,
+ "voltage": 0,
"water": 0
}
}
@@ -39603,10 +41019,26 @@
"counts": {
"type": "object",
"properties": {
+ "apparentPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to apparent power readings"
+ },
+ "co2": {
+ "type": "integer",
+ "description": "Number of sensors that are currently alerting due to CO2 readings"
+ },
+ "current": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to electrical current readings"
+ },
"door": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to an open door"
},
+ "frequency": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to frequency readings"
+ },
"humidity": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to humidity readings"
@@ -39629,6 +41061,14 @@
"type": "integer",
"description": "Number of sensor alerts that occurred due to PM2.5 readings"
},
+ "powerFactor": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to power factor readings"
+ },
+ "realPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to real power readings"
+ },
"temperature": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to temperature readings"
@@ -39637,6 +41077,14 @@
"type": "integer",
"description": "Number of sensor alerts that occurred due to TVOC readings"
},
+ "upstreamPower": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to upstream power outages"
+ },
+ "voltage": {
+ "type": "integer",
+ "description": "Number of sensor alerts that occurred due to voltage readings"
+ },
"water": {
"type": "integer",
"description": "Number of sensor alerts that occurred due to the presence of water"
@@ -39652,15 +41100,23 @@
"startTs": "2022-08-21T00:00:00Z",
"endTs": "2022-08-27T23:59:59Z",
"counts": {
+ "apparentPower": 0,
+ "co2": 0,
+ "current": 0,
"door": 0,
+ "frequency": 1,
"humidity": 1,
"indoorAirQuality": 0,
"noise": {
"ambient": 2
},
"pm25": 0,
+ "powerFactor": 0,
+ "realPower": 0,
"temperature": 4,
"tvoc": 0,
+ "upstreamPower": 0,
+ "voltage": 0,
"water": 0
}
}
@@ -39733,7 +41189,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -39898,6 +41354,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -39908,7 +41460,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -40022,6 +41574,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -40099,7 +41672,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -40264,6 +41837,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -40274,7 +41943,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -40380,6 +42049,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -40449,7 +42139,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -40614,6 +42304,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -40624,7 +42410,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -40736,6 +42522,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -40833,7 +42640,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -40998,6 +42805,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -41008,7 +42911,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -41120,6 +43023,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -41205,7 +43129,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -41370,6 +43294,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -41380,7 +43400,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -41486,6 +43506,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -41551,7 +43592,7 @@
"properties": {
"metric": {
"type": "string",
- "description": "The type of sensor metric that will be monitored for changes. Available metrics are door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water."
+ "description": "The type of sensor metric that will be monitored for changes. Available metrics are apparentPower, co2, current, door, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, temperature, tvoc, upstreamPower, voltage, and water."
},
"threshold": {
"type": "object",
@@ -41716,6 +43757,102 @@
}
},
"description": "Indoor air quality score threshold. One of 'score' or 'quality' must be provided."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in watts. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Real power threshold. 'draw' must be provided."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volt-amps. Must be between 0 and 3750."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Apparent power threshold. 'draw' must be provided."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Alerting threshold as the ratio of active power to apparent power. Must be between 0 and 100."
+ }
+ },
+ "required": [
+ "percentage"
+ ],
+ "description": "Power factor threshold. 'percentage' must be provided."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in amps. Must be between 0 and 15."
+ }
+ },
+ "required": [
+ "draw"
+ ],
+ "description": "Electrical current threshold. 'level' must be provided."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in volts. Must be between 0 and 250."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Voltage threshold. 'level' must be provided."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Alerting threshold in hertz. Must be between 0 and 60."
+ }
+ },
+ "required": [
+ "level"
+ ],
+ "description": "Electrical frequency threshold. 'level' must be provided."
+ },
+ "upstreamPower": {
+ "type": "object",
+ "properties": {
+ "outageDetected": {
+ "type": "boolean",
+ "description": "Alerting threshold for an upstream power event. Must be set to true."
+ }
+ },
+ "required": [
+ "outageDetected"
+ ],
+ "description": "Upstream power threshold. 'outageDetected' must be provided and set to true."
}
},
"description": "Threshold for sensor readings that will cause an alert to be sent. This object should contain a single property key matching the condition's 'metric' value."
@@ -41726,7 +43863,7 @@
"above",
"below"
],
- "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature and humidity thresholds."
+ "description": "If 'above', an alert will be sent when a sensor reads above the threshold. If 'below', an alert will be sent when a sensor reads below the threshold. Only applicable for temperature, humidity, realPower, apparentPower, powerFactor, voltage, current, and frequency thresholds."
},
"duration": {
"type": "integer",
@@ -41838,6 +43975,27 @@
"indoorAirQuality": {
"score": 80,
"quality": "fair"
+ },
+ "realPower": {
+ "draw": 14.1
+ },
+ "apparentPower": {
+ "draw": 17.2
+ },
+ "powerFactor": {
+ "percentage": 81
+ },
+ "current": {
+ "draw": 0.14
+ },
+ "voltage": {
+ "level": 119.5
+ },
+ "frequency": {
+ "level": 58.8
+ },
+ "upstreamPower": {
+ "outageDetected": true
}
},
"direction": "above",
@@ -42721,6 +44879,17 @@
}
}
},
+ {
+ "name": "systemTypes",
+ "in": "query",
+ "description": "Filter devices by system type(s).",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
{
"name": "scope",
"in": "query",
@@ -42919,9 +45088,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
@@ -43020,7 +45189,7 @@
"example": {
"wifiMac": "00:11:22:33:44:55",
"id": "1284392014819",
- "serial": "Q234-ABCD-5678",
+ "serial": "XY0XX0Y0X0",
"deviceFields": {
"name": "Miles's phone",
"notes": "Here's some info about my device"
@@ -43136,7 +45305,7 @@
"items": {
"type": "string"
},
- "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be wiped."
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be locked."
},
"pin": {
"type": "integer",
@@ -43152,9 +45321,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
@@ -43273,9 +45442,9 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny, old_tag"
@@ -43376,32 +45545,169 @@
"items": {
"type": "string"
},
- "description": "The wifiMacs of the devices to be moved."
+ "description": "The wifiMacs of the devices to be moved."
+ },
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The ids of the devices to be moved."
+ },
+ "serials": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The serials of the devices to be moved."
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be moved."
+ },
+ "newNetwork": {
+ "type": "string",
+ "description": "The new network to which the devices will be moved."
+ }
+ },
+ "example": {
+ "wifiMacs": [
+ "00:11:22:33:44:55"
+ ],
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ],
+ "serials": [
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
+ ],
+ "scope": [
+ "withAny",
+ "tag1",
+ "tag2"
+ ],
+ "newNetwork": "1284392014819"
+ },
+ "required": [
+ "newNetwork"
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The Meraki Ids of the set of devices."
+ },
+ "newNetwork": {
+ "type": "string",
+ "description": "The network to which the devices was moved."
+ }
+ }
+ },
+ "example": {
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ],
+ "newNetwork": "1284392014819"
+ }
+ }
+ }
+ }
+ },
+ "summary": "Move a set of devices to a new network",
+ "tags": [
+ "sm",
+ "configure",
+ "devices"
+ ]
+ }
+ },
+ "/networks/{networkId}/sm/devices/reboot": {
+ "post": {
+ "description": "Reboot a set of endpoints",
+ "operationId": "rebootNetworkSmDevices",
+ "parameters": [
+ {
+ "name": "networkId",
+ "in": "path",
+ "description": "Network ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wifiMacs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The wifiMacs of the endpoints to be rebooted."
},
"ids": {
"type": "array",
"items": {
"type": "string"
},
- "description": "The ids of the devices to be moved."
+ "description": "The ids of the endpoints to be rebooted."
},
"serials": {
"type": "array",
"items": {
"type": "string"
},
- "description": "The serials of the devices to be moved."
+ "description": "The serials of the endpoints to be rebooted."
},
"scope": {
"type": "array",
"items": {
"type": "string"
},
- "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the devices to be moved."
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be rebooted."
},
- "newNetwork": {
- "type": "string",
- "description": "The new network to which the devices will be moved."
+ "kextPaths": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The KextPaths of the endpoints to be rebooted. Available for macOS 11+"
+ },
+ "notifyUser": {
+ "type": "boolean",
+ "description": "Whether or not to notify the user before rebooting the endpoint. Available for macOS 11.3+"
+ },
+ "rebuildKernelCache": {
+ "type": "boolean",
+ "description": "Whether or not to rebuild the kernel cache when rebooting the endpoint. Available for macOS 11+"
+ },
+ "requestRequiresNetworkTether": {
+ "type": "boolean",
+ "description": "Whether or not the request requires network tethering. Available for macOS and supervised iOS or tvOS"
}
},
"example": {
@@ -43413,24 +45719,26 @@
"2983092129865"
],
"serials": [
- "Q234-ABCD-0001",
- "Q234-ABCD-0002",
- "Q234-ABCD-0003"
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
],
"scope": [
"withAny",
"tag1",
"tag2"
],
- "newNetwork": "1284392014819"
- },
- "required": [
- "newNetwork"
- ]
+ "kextPaths": [
+ "test"
+ ],
+ "notifyUser": true,
+ "rebuildKernelCache": true,
+ "requestRequiresNetworkTether": true
+ }
}
}
},
- "required": true
+ "required": false
},
"responses": {
"200": {
@@ -43445,26 +45753,130 @@
"items": {
"type": "string"
},
- "description": "The Meraki Ids of the set of devices."
- },
- "newNetwork": {
- "type": "string",
- "description": "The network to which the devices was moved."
+ "description": "The Meraki Ids of the set of endpoints."
}
}
},
"example": {
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ]
+ }
+ }
+ }
+ }
+ },
+ "summary": "Reboot a set of endpoints",
+ "tags": [
+ "sm",
+ "configure",
+ "devices"
+ ]
+ }
+ },
+ "/networks/{networkId}/sm/devices/shutdown": {
+ "post": {
+ "description": "Shutdown a set of endpoints",
+ "operationId": "shutdownNetworkSmDevices",
+ "parameters": [
+ {
+ "name": "networkId",
+ "in": "path",
+ "description": "Network ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "wifiMacs": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The wifiMacs of the endpoints to be shutdown."
+ },
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The ids of the endpoints to be shutdown."
+ },
+ "serials": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The serials of the endpoints to be shutdown."
+ },
+ "scope": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The scope (one of all, none, withAny, withAll, withoutAny, or withoutAll) and a set of tags of the endpoints to be shutdown."
+ }
+ },
+ "example": {
+ "wifiMacs": [
+ "00:11:22:33:44:55"
+ ],
"ids": [
"1284392014819",
"2983092129865"
],
- "newNetwork": "1284392014819"
+ "serials": [
+ "XY0XX0Y0X0",
+ "A01B01CD00E",
+ "X02YZ1ZYZX"
+ ],
+ "scope": [
+ "withAny",
+ "tag1",
+ "tag2"
+ ]
+ }
+ }
+ }
+ },
+ "required": false
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "ids": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The Meraki Ids of the set of endpoints."
+ }
+ }
+ },
+ "example": {
+ "ids": [
+ "1284392014819",
+ "2983092129865"
+ ]
}
}
}
}
},
- "summary": "Move a set of devices to a new network",
+ "summary": "Shutdown a set of endpoints",
"tags": [
"sm",
"configure",
@@ -43513,7 +45925,7 @@
"example": {
"wifiMac": "00:11:22:33:44:55",
"id": "1284392014819",
- "serial": "Q234-ABCD-5678",
+ "serial": "XY0XX0Y0X0",
"pin": 123456
}
}
@@ -47032,6 +49444,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
}
@@ -47076,7 +49504,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
]
}
@@ -47485,6 +49918,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -47527,7 +49976,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -47718,6 +50172,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -47760,7 +50230,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -48168,6 +50643,22 @@
"type": "string"
},
"description": "IP address ranges, in CIDR notation, to restrict access for clients to a specific set of IP addresses or hostnames prior to authentication"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "ports": {
+ "type": "object",
+ "properties": {
+ "withThisPolicy": {
+ "type": "integer",
+ "description": "Number of ports in the network with this policy"
+ }
+ },
+ "description": "Counts associated with ports"
+ }
+ },
+ "description": "Counts associated with the access policy"
}
}
},
@@ -48210,7 +50701,12 @@
"urlRedirectWalledGardenEnabled": true,
"urlRedirectWalledGardenRanges": [
"192.168.1.0/24"
- ]
+ ],
+ "counts": {
+ "ports": {
+ "withThisPolicy": 12
+ }
+ }
}
}
}
@@ -69605,6 +72101,10 @@
"type": "string",
"description": "The name of the regulatory domain for this network."
},
+ "countryCode": {
+ "type": "string",
+ "description": "The country code of the regulatory domain."
+ },
"permits6e": {
"type": "boolean",
"description": "Whether or not the regulatory domain for this network permits Wifi 6E."
@@ -69628,6 +72128,7 @@
},
"regulatoryDomain": {
"name": "FCC",
+ "countryCode": "US",
"permits6e": true
}
}
@@ -69784,6 +72285,10 @@
"type": "string",
"description": "The name of the regulatory domain for this network."
},
+ "countryCode": {
+ "type": "string",
+ "description": "The country code of the regulatory domain."
+ },
"permits6e": {
"type": "boolean",
"description": "Whether or not the regulatory domain for this network permits Wifi 6E."
@@ -69807,6 +72312,7 @@
},
"regulatoryDomain": {
"name": "FCC",
+ "countryCode": "US",
"permits6e": true
}
}
@@ -81554,6 +84060,88 @@
]
}
},
+ "/organizations/{organizationId}/appliance/uplinks/statuses/overview": {
+ "get": {
+ "description": "Returns an overview of uplink statuses",
+ "operationId": "getOrganizationApplianceUplinksStatusesOverview",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "counts": {
+ "type": "object",
+ "properties": {
+ "byStatus": {
+ "type": "object",
+ "properties": {
+ "active": {
+ "type": "integer",
+ "description": "number of uplinks that are active and working"
+ },
+ "ready": {
+ "type": "integer",
+ "description": "number of uplinks that are working but on standby"
+ },
+ "failed": {
+ "type": "integer",
+ "description": "number of uplinks that were working but have failed"
+ },
+ "connecting": {
+ "type": "integer",
+ "description": "number of uplinks currently connecting"
+ },
+ "notConnected": {
+ "type": "integer",
+ "description": "number of uplinks currently where nothing is plugged in"
+ }
+ },
+ "description": "byStatus"
+ }
+ },
+ "description": "counts"
+ }
+ }
+ },
+ "example": {
+ "counts": {
+ "byStatus": {
+ "active": 5,
+ "ready": 5,
+ "failed": 4,
+ "connecting": 2,
+ "notConnected": 1
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Returns an overview of uplink statuses",
+ "tags": [
+ "appliance",
+ "configure",
+ "uplinks",
+ "statuses",
+ "overview"
+ ]
+ }
+ },
"/organizations/{organizationId}/appliance/uplinks/usage/byNetwork": {
"get": {
"description": "Get the sent and received bytes for each uplink of all MX and Z networks within an organization. If more than one device was active during the specified timespan, then the sent and received bytes will be aggregated by interface.",
@@ -84771,6 +87359,256 @@
]
}
},
+ "/organizations/{organizationId}/camera/boundaries/areas/byDevice": {
+ "get": {
+ "description": "Returns all configured area boundaries of cameras",
+ "operationId": "getOrganizationCameraBoundariesAreasByDevice",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "serials",
+ "in": "query",
+ "description": "A list of serial numbers. The returned cameras will be filtered to only include these serials.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The network id of the camera"
+ },
+ "serial": {
+ "type": "string",
+ "description": "The serial number of the camera"
+ },
+ "boundaries": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The area boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The area boundary type"
+ },
+ "name": {
+ "type": "string",
+ "description": "The area boundary name"
+ },
+ "vertices": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ }
+ },
+ "description": "The area boundary vertices"
+ }
+ },
+ "description": "Configured area boundaries of the camera"
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "networkId": "N_24329156",
+ "serial": "Q234-ABCD-5678",
+ "boundaries": {
+ "id": "k74272e",
+ "type": "area",
+ "name": "myarea",
+ "vertices": [
+ {
+ "x": 0.1,
+ "y": 0.1
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Returns all configured area boundaries of cameras",
+ "tags": [
+ "camera",
+ "configure",
+ "boundaries",
+ "areas",
+ "byDevice"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/camera/boundaries/lines/byDevice": {
+ "get": {
+ "description": "Returns all configured crossingline boundaries of cameras",
+ "operationId": "getOrganizationCameraBoundariesLinesByDevice",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "serials",
+ "in": "query",
+ "description": "A list of serial numbers. The returned cameras will be filtered to only include these serials.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The network id of the camera"
+ },
+ "serial": {
+ "type": "string",
+ "description": "The serial number of the camera"
+ },
+ "boundaries": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The line boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The line boundary type"
+ },
+ "name": {
+ "type": "string",
+ "description": "The line boundary name"
+ },
+ "vertices": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ }
+ },
+ "description": "The line boundary vertices"
+ },
+ "directionVertex": {
+ "type": "object",
+ "properties": {
+ "x": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex x coordinate"
+ },
+ "y": {
+ "type": "number",
+ "format": "float",
+ "description": "The vertex y coordinate"
+ }
+ },
+ "description": "The line boundary crossing direction vertex"
+ }
+ },
+ "description": "Configured line boundaries of the camera"
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "networkId": "N_24329156",
+ "serial": "Q234-ABCD-5678",
+ "boundaries": {
+ "id": "k74272e",
+ "type": "line",
+ "name": "mycline",
+ "vertices": [
+ {
+ "x": 0.375,
+ "y": 0.5
+ }
+ ],
+ "directionVertex": {
+ "x": 0.5,
+ "y": 0.54
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Returns all configured crossingline boundaries of cameras",
+ "tags": [
+ "camera",
+ "configure",
+ "boundaries",
+ "lines",
+ "byDevice"
+ ]
+ }
+ },
"/organizations/{organizationId}/camera/customAnalytics/artifacts": {
"get": {
"description": "List Custom Analytics Artifacts",
@@ -84976,6 +87814,170 @@
]
}
},
+ "/organizations/{organizationId}/camera/detections/history/byBoundary/byInterval": {
+ "get": {
+ "description": "Returns analytics data for timespans",
+ "operationId": "getOrganizationCameraDetectionsHistoryByBoundaryByInterval",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "boundaryIds",
+ "in": "query",
+ "required": true,
+ "description": "A list of boundary ids. The returned cameras will be filtered to only include these ids.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "ranges",
+ "in": "query",
+ "required": true,
+ "description": "A list of time ranges with intervals",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "startTime": {
+ "type": "string",
+ "description": "The range start time"
+ },
+ "endTime": {
+ "type": "string",
+ "description": "The range end time"
+ },
+ "interval": {
+ "type": "integer",
+ "description": "The range interval in seconds"
+ }
+ },
+ "required": [
+ "startTime",
+ "endTime",
+ "interval"
+ ]
+ }
+ }
+ },
+ {
+ "name": "duration",
+ "in": "query",
+ "description": "The minimum time, in seconds, that the person or car remains in the area to be counted. Defaults to boundary configuration or 60.",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "perPage",
+ "in": "query",
+ "description": "The number of entries per page returned. Acceptable range is 1 - 1000. Defaults to 1000.",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "boundaryTypes",
+ "in": "query",
+ "description": "The detection types. Defaults to 'person'.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "person",
+ "vehicle"
+ ]
+ }
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "boundaryId": {
+ "type": "string",
+ "description": "The boundary id"
+ },
+ "type": {
+ "type": "string",
+ "description": "The boundary type"
+ },
+ "results": {
+ "type": "object",
+ "properties": {
+ "startTime": {
+ "type": "string",
+ "description": "The period start time"
+ },
+ "endTime": {
+ "type": "string",
+ "description": "The period end time"
+ },
+ "objectType": {
+ "type": "string",
+ "description": "The detection type"
+ },
+ "in": {
+ "type": "integer",
+ "description": "The number of detections entered"
+ },
+ "out": {
+ "type": "integer",
+ "description": "The number of detections exited"
+ }
+ },
+ "description": "The analytics data"
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "boundaryId": "k74272e",
+ "type": "line",
+ "results": {
+ "startTime": "2018-02-11T00:00:00Z",
+ "endTime": "2018-05-12T00:00:00Z",
+ "objectType": "person",
+ "in": 22,
+ "out": 13
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Returns analytics data for timespans",
+ "tags": [
+ "camera",
+ "configure",
+ "detections",
+ "history",
+ "byBoundary",
+ "byInterval"
+ ]
+ }
+ },
"/organizations/{organizationId}/camera/onboarding/statuses": {
"get": {
"description": "Fetch onboarding status of cameras",
@@ -90929,7 +93931,7 @@
},
"/organizations/{organizationId}/firmware/upgrades/byDevice": {
"get": {
- "description": "Get firmware upgrade status for the filtered devices",
+ "description": "Get firmware upgrade status for the filtered devices. This endpoint currently only supports Meraki switches.",
"operationId": "getOrganizationFirmwareUpgradesByDevice",
"parameters": [
{
@@ -91137,19 +94139,19 @@
"example": [
{
"serial": "Q234-ABCD-5678",
- "name": "My AP",
+ "name": "My switch",
"deviceStatus": "completed",
"upgrade": {
"time": "2018-02-11T00:00:00.090210Z",
"fromVersion": {
"id": "1234",
- "shortName": "MV 10.8.1",
+ "shortName": "MS 16.7",
"releaseType": "stable",
"releaseDate": "2018-02-11T00:00:00.090210Z"
},
"toVersion": {
"id": "1234",
- "shortName": "MV 11.2.1",
+ "shortName": "MS 16.7.1",
"releaseType": "stable",
"releaseDate": "2018-02-11T00:00:00.090210Z"
},
@@ -94644,85 +97646,332 @@
}
},
"example": {
- "remainderLicenses": [
- {
- "key": "Z2AA-BBBB-CCCC",
- "organizationId": "123456",
- "duration": 365,
- "mode": "addDevices",
- "startedAt": "2022-05-02T10:52:00Z",
- "claimedAt": "2022-07-04T16:23:00Z",
- "invalidated": true,
- "invalidatedAt": "2022-07-04T16:23:00Z",
- "expired": false,
- "editions": [
- {
- "edition": "Enterprise",
- "productType": "appliance"
- }
- ],
- "counts": [
- {
- "model": "MR Enterprise",
- "count": 2
- }
- ]
- }
+ "remainderLicenses": [
+ {
+ "key": "Z2AA-BBBB-CCCC",
+ "organizationId": "123456",
+ "duration": 365,
+ "mode": "addDevices",
+ "startedAt": "2022-05-02T10:52:00Z",
+ "claimedAt": "2022-07-04T16:23:00Z",
+ "invalidated": true,
+ "invalidatedAt": "2022-07-04T16:23:00Z",
+ "expired": false,
+ "editions": [
+ {
+ "edition": "Enterprise",
+ "productType": "appliance"
+ }
+ ],
+ "counts": [
+ {
+ "model": "MR Enterprise",
+ "count": 2
+ }
+ ]
+ }
+ ],
+ "movedLicenses": [
+ {
+ "key": "Z2AA-BBBB-CCCC",
+ "organizationId": "123456",
+ "duration": 365,
+ "mode": "addDevices",
+ "startedAt": "2022-05-02T10:52:00Z",
+ "claimedAt": "2022-07-04T16:23:00Z",
+ "invalidated": true,
+ "invalidatedAt": "2022-07-04T16:23:00Z",
+ "expired": false,
+ "editions": [
+ {
+ "edition": "Enterprise",
+ "productType": "appliance"
+ }
+ ],
+ "counts": [
+ {
+ "model": "MR Enterprise",
+ "count": 2
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "summary": "Moves a license to a different organization (coterm only)",
+ "tags": [
+ "licensing",
+ "configure",
+ "coterm",
+ "licenses"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/loginSecurity": {
+ "get": {
+ "description": "Returns the login security settings for an organization.",
+ "operationId": "getOrganizationLoginSecurity",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enforcePasswordExpiration": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users are forced to change their password every X number of days."
+ },
+ "passwordExpirationDays": {
+ "type": "integer",
+ "description": "Number of days after which users will be forced to change their password."
+ },
+ "enforceDifferentPasswords": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users, when setting a new password, are forced to choose a new password that is different from any past passwords."
+ },
+ "numDifferentPasswords": {
+ "type": "integer",
+ "description": "Number of recent passwords that new password must be distinct from."
+ },
+ "enforceStrongPasswords": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users will be forced to choose strong passwords for their accounts. Strong passwords are at least 8 characters that contain 3 of the following: number, uppercase letter, lowercase letter, and symbol"
+ },
+ "enforceAccountLockout": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users' Dashboard accounts will be locked out after a specified number of consecutive failed login attempts."
+ },
+ "accountLockoutAttempts": {
+ "type": "integer",
+ "description": "Number of consecutive failed login attempts after which users' accounts will be locked."
+ },
+ "enforceIdleTimeout": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users will be logged out after being idle for the specified number of minutes."
+ },
+ "idleTimeoutMinutes": {
+ "type": "integer",
+ "description": "Number of minutes users can remain idle before being logged out of their accounts."
+ },
+ "enforceTwoFactorAuth": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users in this organization will be required to use an extra verification code when logging in to Dashboard. This code will be sent to their mobile phone via SMS, or can be generated by the authenticator application."
+ },
+ "enforceLoginIpRanges": {
+ "type": "boolean",
+ "description": "Boolean indicating whether organization will restrict access to Dashboard (including the API) from certain IP addresses."
+ },
+ "loginIpRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
+ },
+ "apiAuthentication": {
+ "type": "object",
+ "properties": {
+ "ipRestrictionsForKeys": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Boolean indicating whether the organization will restrict API key (not Dashboard GUI) usage to a specific list of IP addresses or CIDR ranges."
+ },
+ "ranges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
+ }
+ },
+ "description": "Details for API-only IP restrictions."
+ }
+ },
+ "description": "Details for indicating whether organization will restrict access to API (but not Dashboard) to certain IP addresses."
+ }
+ }
+ },
+ "example": {
+ "enforcePasswordExpiration": true,
+ "passwordExpirationDays": 90,
+ "enforceDifferentPasswords": true,
+ "numDifferentPasswords": 3,
+ "enforceStrongPasswords": true,
+ "enforceAccountLockout": true,
+ "accountLockoutAttempts": 3,
+ "enforceIdleTimeout": true,
+ "idleTimeoutMinutes": 30,
+ "enforceTwoFactorAuth": true,
+ "enforceLoginIpRanges": true,
+ "loginIpRanges": [
+ "192.195.83.1",
+ "192.195.83.255"
+ ],
+ "apiAuthentication": {
+ "ipRestrictionsForKeys": {
+ "enabled": true,
+ "ranges": [
+ "192.195.83.1",
+ "192.168.33.33"
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "summary": "Returns the login security settings for an organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "loginSecurity"
+ ]
+ },
+ "put": {
+ "description": "Update the login security settings for an organization",
+ "operationId": "updateOrganizationLoginSecurity",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enforcePasswordExpiration": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users are forced to change their password every X number of days."
+ },
+ "passwordExpirationDays": {
+ "type": "integer",
+ "description": "Number of days after which users will be forced to change their password."
+ },
+ "enforceDifferentPasswords": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users, when setting a new password, are forced to choose a new password that is different from any past passwords."
+ },
+ "numDifferentPasswords": {
+ "type": "integer",
+ "description": "Number of recent passwords that new password must be distinct from."
+ },
+ "enforceStrongPasswords": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users will be forced to choose strong passwords for their accounts. Strong passwords are at least 8 characters that contain 3 of the following: number, uppercase letter, lowercase letter, and symbol"
+ },
+ "enforceAccountLockout": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users' Dashboard accounts will be locked out after a specified number of consecutive failed login attempts."
+ },
+ "accountLockoutAttempts": {
+ "type": "integer",
+ "description": "Number of consecutive failed login attempts after which users' accounts will be locked."
+ },
+ "enforceIdleTimeout": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users will be logged out after being idle for the specified number of minutes."
+ },
+ "idleTimeoutMinutes": {
+ "type": "integer",
+ "description": "Number of minutes users can remain idle before being logged out of their accounts."
+ },
+ "enforceTwoFactorAuth": {
+ "type": "boolean",
+ "description": "Boolean indicating whether users in this organization will be required to use an extra verification code when logging in to Dashboard. This code will be sent to their mobile phone via SMS, or can be generated by the authenticator application."
+ },
+ "enforceLoginIpRanges": {
+ "type": "boolean",
+ "description": "Boolean indicating whether organization will restrict access to Dashboard (including the API) from certain IP addresses."
+ },
+ "loginIpRanges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
+ },
+ "apiAuthentication": {
+ "type": "object",
+ "properties": {
+ "ipRestrictionsForKeys": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Boolean indicating whether the organization will restrict API key (not Dashboard GUI) usage to a specific list of IP addresses or CIDR ranges."
+ },
+ "ranges": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
+ }
+ },
+ "description": "Details for API-only IP restrictions."
+ }
+ },
+ "description": "Details for indicating whether organization will restrict access to API (but not Dashboard) to certain IP addresses."
+ }
+ },
+ "example": {
+ "enforcePasswordExpiration": true,
+ "passwordExpirationDays": 90,
+ "enforceDifferentPasswords": true,
+ "numDifferentPasswords": 3,
+ "enforceStrongPasswords": true,
+ "enforceAccountLockout": true,
+ "accountLockoutAttempts": 3,
+ "enforceIdleTimeout": true,
+ "idleTimeoutMinutes": 30,
+ "enforceTwoFactorAuth": true,
+ "enforceLoginIpRanges": true,
+ "loginIpRanges": [
+ "192.195.83.1",
+ "192.195.83.255"
],
- "movedLicenses": [
- {
- "key": "Z2AA-BBBB-CCCC",
- "organizationId": "123456",
- "duration": 365,
- "mode": "addDevices",
- "startedAt": "2022-05-02T10:52:00Z",
- "claimedAt": "2022-07-04T16:23:00Z",
- "invalidated": true,
- "invalidatedAt": "2022-07-04T16:23:00Z",
- "expired": false,
- "editions": [
- {
- "edition": "Enterprise",
- "productType": "appliance"
- }
- ],
- "counts": [
- {
- "model": "MR Enterprise",
- "count": 2
- }
+ "apiAuthentication": {
+ "ipRestrictionsForKeys": {
+ "enabled": true,
+ "ranges": [
+ "192.195.83.1",
+ "192.168.33.33"
]
}
- ]
+ }
}
}
}
- }
+ },
+ "required": false
},
- "summary": "Moves a license to a different organization (coterm only)",
- "tags": [
- "licensing",
- "configure",
- "coterm",
- "licenses"
- ]
- }
- },
- "/organizations/{organizationId}/loginSecurity": {
- "get": {
- "description": "Returns the login security settings for an organization.",
- "operationId": "getOrganizationLoginSecurity",
- "parameters": [
- {
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
"responses": {
"200": {
"description": "Successful operation",
@@ -94837,16 +98086,194 @@
}
}
},
- "summary": "Returns the login security settings for an organization.",
+ "summary": "Update the login security settings for an organization",
"tags": [
"organizations",
"configure",
"loginSecurity"
]
+ }
+ },
+ "/organizations/{organizationId}/networks": {
+ "get": {
+ "description": "List the networks that the user has privileges on in an organization",
+ "operationId": "getOrganizationNetworks",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "configTemplateId",
+ "in": "query",
+ "description": "An optional parameter that is the ID of a config template. Will return all networks bound to that template.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "isBoundToConfigTemplate",
+ "in": "query",
+ "description": "An optional parameter to filter config template bound networks. If configTemplateId is set, this cannot be false.",
+ "schema": {
+ "type": "boolean"
+ }
+ },
+ {
+ "name": "tags",
+ "in": "query",
+ "description": "An optional parameter to filter networks by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below).",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "tagsFilterType",
+ "in": "query",
+ "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return networks which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.",
+ "schema": {
+ "type": "string",
+ "enum": [
+ "withAllTags",
+ "withAnyTags"
+ ]
+ }
+ },
+ {
+ "name": "perPage",
+ "in": "query",
+ "description": "The number of entries per page returned. Acceptable range is 3 - 100000. Default is 1000.",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "startingAfter",
+ "in": "query",
+ "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "endingBefore",
+ "in": "query",
+ "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Network ID"
+ },
+ "organizationId": {
+ "type": "string",
+ "description": "Organization ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Network name"
+ },
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of the product types that the network supports"
+ },
+ "timeZone": {
+ "type": "string",
+ "description": "Timezone of the network"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Network tags"
+ },
+ "enrollmentString": {
+ "type": "string",
+ "description": "Enrollment string for the network"
+ },
+ "url": {
+ "type": "string",
+ "description": "URL to the network Dashboard UI"
+ },
+ "notes": {
+ "type": "string",
+ "description": "Notes for the network"
+ },
+ "isBoundToConfigTemplate": {
+ "type": "boolean",
+ "description": "If the network is bound to a config template"
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "id": "N_24329156",
+ "organizationId": "2930418",
+ "name": "Main Office",
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ],
+ "timeZone": "America/Los_Angeles",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "enrollmentString": "my-enrollment-string",
+ "url": "https://n1.meraki.com//n//manage/nodes/list",
+ "notes": "Additional description of the network",
+ "isBoundToConfigTemplate": false
+ }
+ ]
+ }
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ }
+ }
+ }
+ },
+ "summary": "List the networks that the user has privileges on in an organization",
+ "tags": [
+ "organizations",
+ "configure",
+ "networks"
+ ]
},
- "put": {
- "description": "Update the login security settings for an organization",
- "operationId": "updateOrganizationLoginSecurity",
+ "post": {
+ "description": "Create a network",
+ "operationId": "createOrganizationNetwork",
"parameters": [
{
"name": "organizationId",
@@ -94864,111 +98291,210 @@
"schema": {
"type": "object",
"properties": {
- "enforcePasswordExpiration": {
- "type": "boolean",
- "description": "Boolean indicating whether users are forced to change their password every X number of days."
- },
- "passwordExpirationDays": {
- "type": "integer",
- "description": "Number of days after which users will be forced to change their password."
- },
- "enforceDifferentPasswords": {
- "type": "boolean",
- "description": "Boolean indicating whether users, when setting a new password, are forced to choose a new password that is different from any past passwords."
- },
- "numDifferentPasswords": {
- "type": "integer",
- "description": "Number of recent passwords that new password must be distinct from."
- },
- "enforceStrongPasswords": {
- "type": "boolean",
- "description": "Boolean indicating whether users will be forced to choose strong passwords for their accounts. Strong passwords are at least 8 characters that contain 3 of the following: number, uppercase letter, lowercase letter, and symbol"
- },
- "enforceAccountLockout": {
- "type": "boolean",
- "description": "Boolean indicating whether users' Dashboard accounts will be locked out after a specified number of consecutive failed login attempts."
- },
- "accountLockoutAttempts": {
- "type": "integer",
- "description": "Number of consecutive failed login attempts after which users' accounts will be locked."
- },
- "enforceIdleTimeout": {
- "type": "boolean",
- "description": "Boolean indicating whether users will be logged out after being idle for the specified number of minutes."
- },
- "idleTimeoutMinutes": {
- "type": "integer",
- "description": "Number of minutes users can remain idle before being logged out of their accounts."
- },
- "enforceTwoFactorAuth": {
- "type": "boolean",
- "description": "Boolean indicating whether users in this organization will be required to use an extra verification code when logging in to Dashboard. This code will be sent to their mobile phone via SMS, or can be generated by the authenticator application."
+ "name": {
+ "type": "string",
+ "description": "The name of the new network"
},
- "enforceLoginIpRanges": {
- "type": "boolean",
- "description": "Boolean indicating whether organization will restrict access to Dashboard (including the API) from certain IP addresses."
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "enum": [
+ "appliance",
+ "camera",
+ "cellularGateway",
+ "sensor",
+ "switch",
+ "systemsManager",
+ "wireless"
+ ]
+ },
+ "description": "The product type(s) of the new network. If more than one type is included, the network will be a combined network."
},
- "loginIpRanges": {
+ "tags": {
"type": "array",
"items": {
"type": "string"
},
- "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
+ "description": "A list of tags to be applied to the network"
},
- "apiAuthentication": {
- "type": "object",
- "properties": {
- "ipRestrictionsForKeys": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Boolean indicating whether the organization will restrict API key (not Dashboard GUI) usage to a specific list of IP addresses or CIDR ranges."
- },
- "ranges": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
- }
- },
- "description": "Details for API-only IP restrictions."
- }
+ "timeZone": {
+ "type": "string",
+ "description": "The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article."
+ },
+ "copyFromNetworkId": {
+ "type": "string",
+ "description": "The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly."
+ },
+ "notes": {
+ "type": "string",
+ "description": "Add any notes or additional information about this network here."
+ }
+ },
+ "example": {
+ "name": "Main Office",
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ],
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "timeZone": "America/Los_Angeles",
+ "copyFromNetworkId": "N_24329156",
+ "notes": "Additional description of the network"
+ },
+ "required": [
+ "name",
+ "productTypes"
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "Network ID"
+ },
+ "organizationId": {
+ "type": "string",
+ "description": "Organization ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Network name"
+ },
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "List of the product types that the network supports"
+ },
+ "timeZone": {
+ "type": "string",
+ "description": "Timezone of the network"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Network tags"
+ },
+ "enrollmentString": {
+ "type": "string",
+ "description": "Enrollment string for the network"
+ },
+ "url": {
+ "type": "string",
+ "description": "URL to the network Dashboard UI"
+ },
+ "notes": {
+ "type": "string",
+ "description": "Notes for the network"
+ },
+ "isBoundToConfigTemplate": {
+ "type": "boolean",
+ "description": "If the network is bound to a config template"
+ }
+ }
+ },
+ "example": {
+ "id": "N_24329156",
+ "organizationId": "2930418",
+ "name": "Main Office",
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ],
+ "timeZone": "America/Los_Angeles",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "enrollmentString": "my-enrollment-string",
+ "url": "https://n1.meraki.com//n//manage/nodes/list",
+ "notes": "Additional description of the network",
+ "isBoundToConfigTemplate": false
+ }
+ }
+ }
+ }
+ },
+ "summary": "Create a network",
+ "tags": [
+ "organizations",
+ "configure",
+ "networks"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/networks/combine": {
+ "post": {
+ "description": "Combine multiple networks into a single network",
+ "operationId": "combineOrganizationNetworks",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "The name of the combined network"
+ },
+ "networkIds": {
+ "type": "array",
+ "items": {
+ "type": "string"
},
- "description": "Details for indicating whether organization will restrict access to API (but not Dashboard) to certain IP addresses."
+ "description": "A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network"
+ },
+ "enrollmentString": {
+ "type": "string",
+ "description": "A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted."
}
},
"example": {
- "enforcePasswordExpiration": true,
- "passwordExpirationDays": 90,
- "enforceDifferentPasswords": true,
- "numDifferentPasswords": 3,
- "enforceStrongPasswords": true,
- "enforceAccountLockout": true,
- "accountLockoutAttempts": 3,
- "enforceIdleTimeout": true,
- "idleTimeoutMinutes": 30,
- "enforceTwoFactorAuth": true,
- "enforceLoginIpRanges": true,
- "loginIpRanges": [
- "192.195.83.1",
- "192.195.83.255"
+ "name": "Long Island Office",
+ "networkIds": [
+ "N_1234",
+ "N_5678"
],
- "apiAuthentication": {
- "ipRestrictionsForKeys": {
- "enabled": true,
- "ranges": [
- "192.195.83.1",
- "192.168.33.33"
- ]
- }
- }
- }
+ "enrollmentString": "my-enrollment-string"
+ },
+ "required": [
+ "name",
+ "networkIds"
+ ]
}
}
},
- "required": false
+ "required": true
},
"responses": {
"200": {
@@ -94978,124 +98504,97 @@
"schema": {
"type": "object",
"properties": {
- "enforcePasswordExpiration": {
- "type": "boolean",
- "description": "Boolean indicating whether users are forced to change their password every X number of days."
- },
- "passwordExpirationDays": {
- "type": "integer",
- "description": "Number of days after which users will be forced to change their password."
- },
- "enforceDifferentPasswords": {
- "type": "boolean",
- "description": "Boolean indicating whether users, when setting a new password, are forced to choose a new password that is different from any past passwords."
- },
- "numDifferentPasswords": {
- "type": "integer",
- "description": "Number of recent passwords that new password must be distinct from."
- },
- "enforceStrongPasswords": {
- "type": "boolean",
- "description": "Boolean indicating whether users will be forced to choose strong passwords for their accounts. Strong passwords are at least 8 characters that contain 3 of the following: number, uppercase letter, lowercase letter, and symbol"
- },
- "enforceAccountLockout": {
- "type": "boolean",
- "description": "Boolean indicating whether users' Dashboard accounts will be locked out after a specified number of consecutive failed login attempts."
- },
- "accountLockoutAttempts": {
- "type": "integer",
- "description": "Number of consecutive failed login attempts after which users' accounts will be locked."
- },
- "enforceIdleTimeout": {
- "type": "boolean",
- "description": "Boolean indicating whether users will be logged out after being idle for the specified number of minutes."
- },
- "idleTimeoutMinutes": {
- "type": "integer",
- "description": "Number of minutes users can remain idle before being logged out of their accounts."
- },
- "enforceTwoFactorAuth": {
- "type": "boolean",
- "description": "Boolean indicating whether users in this organization will be required to use an extra verification code when logging in to Dashboard. This code will be sent to their mobile phone via SMS, or can be generated by the authenticator application."
- },
- "enforceLoginIpRanges": {
- "type": "boolean",
- "description": "Boolean indicating whether organization will restrict access to Dashboard (including the API) from certain IP addresses."
- },
- "loginIpRanges": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
- },
- "apiAuthentication": {
+ "resultingNetwork": {
"type": "object",
"properties": {
- "ipRestrictionsForKeys": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Boolean indicating whether the organization will restrict API key (not Dashboard GUI) usage to a specific list of IP addresses or CIDR ranges."
- },
- "ranges": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of acceptable IP ranges. Entries can be single IP addresses, IP address ranges, and CIDR subnets."
- }
+ "id": {
+ "type": "string",
+ "description": "Network ID"
+ },
+ "organizationId": {
+ "type": "string",
+ "description": "Organization ID"
+ },
+ "name": {
+ "type": "string",
+ "description": "Network name"
+ },
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
},
- "description": "Details for API-only IP restrictions."
+ "description": "List of the product types that the network supports"
+ },
+ "timeZone": {
+ "type": "string",
+ "description": "Timezone of the network"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Network tags"
+ },
+ "enrollmentString": {
+ "type": "string",
+ "description": "Enrollment string for the network"
+ },
+ "url": {
+ "type": "string",
+ "description": "URL to the network Dashboard UI"
+ },
+ "notes": {
+ "type": "string",
+ "description": "Notes for the network"
+ },
+ "isBoundToConfigTemplate": {
+ "type": "boolean",
+ "description": "If the network is bound to a config template"
}
},
- "description": "Details for indicating whether organization will restrict access to API (but not Dashboard) to certain IP addresses."
+ "description": "Network after the combination"
}
}
},
"example": {
- "enforcePasswordExpiration": true,
- "passwordExpirationDays": 90,
- "enforceDifferentPasswords": true,
- "numDifferentPasswords": 3,
- "enforceStrongPasswords": true,
- "enforceAccountLockout": true,
- "accountLockoutAttempts": 3,
- "enforceIdleTimeout": true,
- "idleTimeoutMinutes": 30,
- "enforceTwoFactorAuth": true,
- "enforceLoginIpRanges": true,
- "loginIpRanges": [
- "192.195.83.1",
- "192.195.83.255"
- ],
- "apiAuthentication": {
- "ipRestrictionsForKeys": {
- "enabled": true,
- "ranges": [
- "192.195.83.1",
- "192.168.33.33"
- ]
- }
+ "resultingNetwork": {
+ "id": "N_24329156",
+ "organizationId": "2930418",
+ "name": "Main Office",
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ],
+ "timeZone": "America/Los_Angeles",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "enrollmentString": "my-enrollment-string",
+ "url": "https://n1.meraki.com//n//manage/nodes/list",
+ "notes": "Additional description of the network",
+ "isBoundToConfigTemplate": false
}
}
}
}
}
},
- "summary": "Update the login security settings for an organization",
+ "summary": "Combine multiple networks into a single network",
"tags": [
"organizations",
"configure",
- "loginSecurity"
+ "networks"
]
}
},
- "/organizations/{organizationId}/networks": {
+ "/organizations/{organizationId}/openapiSpec": {
"get": {
- "description": "List the networks that the user has privileges on in an organization",
- "operationId": "getOrganizationNetworks",
+ "description": "Return the OpenAPI Specification of the organization's API documentation in JSON",
+ "operationId": "getOrganizationOpenapiSpec",
"parameters": [
{
"name": "organizationId",
@@ -95107,48 +98606,85 @@
"required": true
},
{
- "name": "configTemplateId",
- "in": "query",
- "description": "An optional parameter that is the ID of a config template. Will return all networks bound to that template.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "isBoundToConfigTemplate",
+ "name": "version",
"in": "query",
- "description": "An optional parameter to filter config template bound networks. If configTemplateId is set, this cannot be false.",
+ "description": "OpenAPI Specification version to return. Default is 2",
"schema": {
- "type": "boolean"
+ "type": "integer",
+ "enum": [
+ 2,
+ 3
+ ]
}
- },
- {
- "name": "tags",
- "in": "query",
- "description": "An optional parameter to filter networks by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below).",
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ },
+ "example": {
+ "openapi": "3.0.1",
+ "info": {
+ "version": "v1",
+ "title": "Meraki Dashboard API",
+ "description": "This collection of API calls provides an easy way to manage and monitor Cisco Meraki networks at scale"
+ },
+ "paths": {
+ "/organizations": {
+ "get": {
+ "description": "List the organizations that the user has privileges on",
+ "operationId": "getOrganizations",
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "examples": {
+ "application/json": [
+ {
+ "id": "2930418",
+ "name": "My organization"
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
- },
+ }
+ },
+ "summary": "Return the OpenAPI Specification of the organization's API documentation in JSON",
+ "tags": [
+ "organizations",
+ "monitor",
+ "openapiSpec"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/policyObjects": {
+ "get": {
+ "description": "Lists Policy Objects belonging to the organization.",
+ "operationId": "getOrganizationPolicyObjects",
+ "parameters": [
{
- "name": "tagsFilterType",
- "in": "query",
- "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return networks which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.",
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
- "type": "string",
- "enum": [
- "withAllTags",
- "withAnyTags"
- ]
- }
+ "type": "string"
+ },
+ "required": true
},
{
"name": "perPage",
"in": "query",
- "description": "The number of entries per page returned. Acceptable range is 3 - 100000. Default is 1000.",
+ "description": "The number of entries per page returned. Acceptable range is 10 - 5000. Default is 5000.",
"schema": {
"type": "integer"
}
@@ -95178,76 +98714,217 @@
"schema": {
"type": "array",
"items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "Network ID"
- },
- "organizationId": {
- "type": "string",
- "description": "Organization ID"
- },
- "name": {
- "type": "string",
- "description": "Network name"
- },
- "productTypes": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of the product types that the network supports"
- },
- "timeZone": {
- "type": "string",
- "description": "Timezone of the network"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Network tags"
- },
- "enrollmentString": {
- "type": "string",
- "description": "Enrollment string for the network"
- },
- "url": {
- "type": "string",
- "description": "URL to the network Dashboard UI"
- },
- "notes": {
- "type": "string",
- "description": "Notes for the network"
- },
- "isBoundToConfigTemplate": {
- "type": "boolean",
- "description": "If the network is bound to a config template"
- }
- }
+ "type": "object"
+ }
+ },
+ "example": [
+ {
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "network",
+ "type": "cidr",
+ "cidr": "10.0.0.0/24",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "groupIds": [
+
+ ],
+ "networkIds": [
+
+ ]
+ }
+ ]
+ }
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ }
+ }
+ }
+ },
+ "summary": "Lists Policy Objects belonging to the organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "policyObjects"
+ ]
+ },
+ "post": {
+ "description": "Creates a new Policy Object.",
+ "operationId": "createOrganizationPolicyObject",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Name of a policy object, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
+ },
+ "category": {
+ "type": "string",
+ "description": "Category of a policy object (one of: adaptivePolicy, network)"
+ },
+ "type": {
+ "type": "string",
+ "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn, ipAndMask)"
+ },
+ "cidr": {
+ "type": "string",
+ "description": "CIDR Value of a policy object (e.g. 10.11.12.1/24\")"
+ },
+ "fqdn": {
+ "type": "string",
+ "description": "Fully qualified domain name of policy object (e.g. \"example.com\")"
+ },
+ "mask": {
+ "type": "string",
+ "description": "Mask of a policy object (e.g. \"255.255.0.0\")"
+ },
+ "ip": {
+ "type": "string",
+ "description": "IP Address of a policy object (e.g. \"1.2.3.4\")"
+ },
+ "groupIds": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "The IDs of policy object groups the policy object belongs to"
+ }
+ },
+ "example": {
+ "name": "Web Servers - Datacenter 10",
+ "category": "network",
+ "type": "cidr",
+ "groupIds": [
+
+ ]
+ },
+ "required": [
+ "name",
+ "category",
+ "type"
+ ]
+ }
+ }
+ },
+ "required": true
+ },
+ "responses": {
+ "201": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ },
+ "example": {
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "network",
+ "type": "cidr",
+ "cidr": "10.0.0.0/24",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "groupIds": [
+
+ ],
+ "networkIds": [
+
+ ]
+ }
+ }
+ }
+ }
+ },
+ "summary": "Creates a new Policy Object.",
+ "tags": [
+ "organizations",
+ "configure",
+ "policyObjects"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/policyObjects/groups": {
+ "get": {
+ "description": "Lists Policy Object Groups belonging to the organization.",
+ "operationId": "getOrganizationPolicyObjectsGroups",
+ "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 10 - 1000. Default is 1000.",
+ "schema": {
+ "type": "integer"
+ }
+ },
+ {
+ "name": "startingAfter",
+ "in": "query",
+ "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "endingBefore",
+ "in": "query",
+ "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.",
+ "schema": {
+ "type": "string"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object"
}
},
"example": [
{
- "id": "N_24329156",
- "organizationId": "2930418",
- "name": "Main Office",
- "productTypes": [
- "appliance",
- "switch",
- "wireless"
- ],
- "timeZone": "America/Los_Angeles",
- "tags": [
- "tag1",
- "tag2"
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "NetworkObjectGroup",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "objectIds": [
+
],
- "enrollmentString": "my-enrollment-string",
- "url": "https://n1.meraki.com//n//manage/nodes/list",
- "notes": "Additional description of the network",
- "isBoundToConfigTemplate": false
+ "networkIds": [
+
+ ]
}
]
}
@@ -95262,16 +98939,17 @@
}
}
},
- "summary": "List the networks that the user has privileges on in an organization",
+ "summary": "Lists Policy Object Groups belonging to the organization.",
"tags": [
"organizations",
"configure",
- "networks"
+ "policyObjects",
+ "groups"
]
},
"post": {
- "description": "Create a network",
- "operationId": "createOrganizationNetwork",
+ "description": "Creates a new Policy Object Group.",
+ "operationId": "createOrganizationPolicyObjectsGroup",
"parameters": [
{
"name": "organizationId",
@@ -95291,62 +98969,28 @@
"properties": {
"name": {
"type": "string",
- "description": "The name of the new network"
+ "description": "A name for the group of network addresses, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
},
- "productTypes": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "appliance",
- "camera",
- "cellularGateway",
- "sensor",
- "switch",
- "systemsManager",
- "wireless"
- ]
- },
- "description": "The product type(s) of the new network. If more than one type is included, the network will be a combined network."
+ "category": {
+ "type": "string",
+ "description": "Category of a policy object group (one of: NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)"
},
- "tags": {
+ "objectIds": {
"type": "array",
"items": {
- "type": "string"
+ "type": "integer"
},
- "description": "A list of tags to be applied to the network"
- },
- "timeZone": {
- "type": "string",
- "description": "The timezone of the network. For a list of allowed timezones, please see the 'TZ' column in the table in this article."
- },
- "copyFromNetworkId": {
- "type": "string",
- "description": "The ID of the network to copy configuration from. Other provided parameters will override the copied configuration, except type which must match this network's type exactly."
- },
- "notes": {
- "type": "string",
- "description": "Add any notes or additional information about this network here."
+ "description": "A list of Policy Object ID's that this NetworkObjectGroup should be associated to (note: these ID's will replace the existing associated Policy Objects)"
}
},
"example": {
- "name": "Main Office",
- "productTypes": [
- "appliance",
- "switch",
- "wireless"
- ],
- "tags": [
- "tag1",
- "tag2"
- ],
- "timeZone": "America/Los_Angeles",
- "copyFromNetworkId": "N_24329156",
- "notes": "Additional description of the network"
+ "name": "Web Servers - Datacenter 10",
+ "objectIds": [
+
+ ]
},
"required": [
- "name",
- "productTypes"
+ "name"
]
}
}
@@ -95359,91 +99003,38 @@
"content": {
"application/json": {
"schema": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "Network ID"
- },
- "organizationId": {
- "type": "string",
- "description": "Organization ID"
- },
- "name": {
- "type": "string",
- "description": "Network name"
- },
- "productTypes": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of the product types that the network supports"
- },
- "timeZone": {
- "type": "string",
- "description": "Timezone of the network"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Network tags"
- },
- "enrollmentString": {
- "type": "string",
- "description": "Enrollment string for the network"
- },
- "url": {
- "type": "string",
- "description": "URL to the network Dashboard UI"
- },
- "notes": {
- "type": "string",
- "description": "Notes for the network"
- },
- "isBoundToConfigTemplate": {
- "type": "boolean",
- "description": "If the network is bound to a config template"
- }
- }
+ "type": "object"
},
"example": {
- "id": "N_24329156",
- "organizationId": "2930418",
- "name": "Main Office",
- "productTypes": [
- "appliance",
- "switch",
- "wireless"
- ],
- "timeZone": "America/Los_Angeles",
- "tags": [
- "tag1",
- "tag2"
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "NetworkObjectGroup",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "objectIds": [
+
],
- "enrollmentString": "my-enrollment-string",
- "url": "https://n1.meraki.com//n//manage/nodes/list",
- "notes": "Additional description of the network",
- "isBoundToConfigTemplate": false
+ "networkIds": [
+
+ ]
}
}
}
}
},
- "summary": "Create a network",
+ "summary": "Creates a new Policy Object Group.",
"tags": [
"organizations",
"configure",
- "networks"
+ "policyObjects",
+ "groups"
]
}
},
- "/organizations/{organizationId}/networks/combine": {
- "post": {
- "description": "Combine multiple networks into a single network",
- "operationId": "combineOrganizationNetworks",
+ "/organizations/{organizationId}/policyObjects/groups/{policyObjectGroupId}": {
+ "get": {
+ "description": "Shows details of a Policy Object Group.",
+ "operationId": "getOrganizationPolicyObjectsGroup",
"parameters": [
{
"name": "organizationId",
@@ -95453,146 +99044,53 @@
"type": "string"
},
"required": true
+ },
+ {
+ "name": "policyObjectGroupId",
+ "in": "path",
+ "description": "Policy object group ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
}
],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "The name of the combined network"
- },
- "networkIds": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "A list of the network IDs that will be combined. If an ID of a combined network is included in this list, the other networks in the list will be grouped into that network"
- },
- "enrollmentString": {
- "type": "string",
- "description": "A unique identifier which can be used for device enrollment or easy access through the Meraki SM Registration page or the Self Service Portal. Please note that changing this field may cause existing bookmarks to break. All networks that are part of this combined network will have their enrollment string appended by '-network_type'. If left empty, all exisitng enrollment strings will be deleted."
- }
- },
- "example": {
- "name": "Long Island Office",
- "networkIds": [
- "N_1234",
- "N_5678"
- ],
- "enrollmentString": "my-enrollment-string"
- },
- "required": [
- "name",
- "networkIds"
- ]
- }
- }
- },
- "required": true
- },
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
- "type": "object",
- "properties": {
- "resultingNetwork": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "Network ID"
- },
- "organizationId": {
- "type": "string",
- "description": "Organization ID"
- },
- "name": {
- "type": "string",
- "description": "Network name"
- },
- "productTypes": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "List of the product types that the network supports"
- },
- "timeZone": {
- "type": "string",
- "description": "Timezone of the network"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "description": "Network tags"
- },
- "enrollmentString": {
- "type": "string",
- "description": "Enrollment string for the network"
- },
- "url": {
- "type": "string",
- "description": "URL to the network Dashboard UI"
- },
- "notes": {
- "type": "string",
- "description": "Notes for the network"
- },
- "isBoundToConfigTemplate": {
- "type": "boolean",
- "description": "If the network is bound to a config template"
- }
- },
- "description": "Network after the combination"
- }
- }
+ "type": "object"
},
"example": {
- "resultingNetwork": {
- "id": "N_24329156",
- "organizationId": "2930418",
- "name": "Main Office",
- "productTypes": [
- "appliance",
- "switch",
- "wireless"
- ],
- "timeZone": "America/Los_Angeles",
- "tags": [
- "tag1",
- "tag2"
- ],
- "enrollmentString": "my-enrollment-string",
- "url": "https://n1.meraki.com//n//manage/nodes/list",
- "notes": "Additional description of the network",
- "isBoundToConfigTemplate": false
- }
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "NetworkObjectGroup",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "objectIds": [
+
+ ],
+ "networkIds": [
+
+ ]
}
}
}
}
},
- "summary": "Combine multiple networks into a single network",
+ "summary": "Shows details of a Policy Object Group.",
"tags": [
"organizations",
"configure",
- "networks"
+ "policyObjects",
+ "groups"
]
- }
- },
- "/organizations/{organizationId}/openapiSpec": {
- "get": {
- "description": "Return the OpenAPI Specification of the organization's API documentation in JSON",
- "operationId": "getOrganizationOpenapiSpec",
+ },
+ "put": {
+ "description": "Updates a Policy Object Group.",
+ "operationId": "updateOrganizationPolicyObjectsGroup",
"parameters": [
{
"name": "organizationId",
@@ -95604,18 +99102,44 @@
"required": true
},
{
- "name": "version",
- "in": "query",
- "description": "OpenAPI Specification version to return. Default is 2",
+ "name": "policyObjectGroupId",
+ "in": "path",
+ "description": "Policy object group ID",
"schema": {
- "type": "integer",
- "enum": [
- 2,
- 3
- ]
- }
+ "type": "string"
+ },
+ "required": true
}
],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "A name for the group of network addresses, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
+ },
+ "objectIds": {
+ "type": "array",
+ "items": {
+ "type": "integer"
+ },
+ "description": "A list of Policy Object ID's that this NetworkObjectGroup should be associated to (note: these ID's will replace the existing associated Policy Objects)"
+ }
+ },
+ "example": {
+ "name": "Web Servers - Datacenter 10",
+ "objectIds": [
+
+ ]
+ }
+ }
+ }
+ },
+ "required": false
+ },
"responses": {
"200": {
"description": "Successful operation",
@@ -95625,50 +99149,33 @@
"type": "object"
},
"example": {
- "openapi": "3.0.1",
- "info": {
- "version": "v1",
- "title": "Meraki Dashboard API",
- "description": "This collection of API calls provides an easy way to manage and monitor Cisco Meraki networks at scale"
- },
- "paths": {
- "/organizations": {
- "get": {
- "description": "List the organizations that the user has privileges on",
- "operationId": "getOrganizations",
- "responses": {
- "200": {
- "description": "Successful operation",
- "examples": {
- "application/json": [
- {
- "id": "2930418",
- "name": "My organization"
- }
- ]
- }
- }
- }
- }
- }
- }
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "NetworkObjectGroup",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "objectIds": [
+
+ ],
+ "networkIds": [
+
+ ]
}
}
}
}
},
- "summary": "Return the OpenAPI Specification of the organization's API documentation in JSON",
+ "summary": "Updates a Policy Object Group.",
"tags": [
"organizations",
- "monitor",
- "openapiSpec"
+ "configure",
+ "policyObjects",
+ "groups"
]
- }
- },
- "/organizations/{organizationId}/policyObjects": {
- "get": {
- "description": "Lists Policy Objects belonging to the organization.",
- "operationId": "getOrganizationPolicyObjects",
+ },
+ "delete": {
+ "description": "Deletes a Policy Object Group.",
+ "operationId": "deleteOrganizationPolicyObjectsGroup",
"parameters": [
{
"name": "organizationId",
@@ -95680,28 +99187,51 @@
"required": true
},
{
- "name": "perPage",
- "in": "query",
- "description": "The number of entries per page returned. Acceptable range is 10 - 5000. Default is 5000.",
+ "name": "policyObjectGroupId",
+ "in": "path",
+ "description": "Policy object group ID",
"schema": {
- "type": "integer"
- }
- },
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Successful operation"
+ }
+ },
+ "summary": "Deletes a Policy Object Group.",
+ "tags": [
+ "organizations",
+ "configure",
+ "policyObjects",
+ "groups"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/policyObjects/{policyObjectId}": {
+ "get": {
+ "description": "Shows details of a Policy Object.",
+ "operationId": "getOrganizationPolicyObject",
+ "parameters": [
{
- "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.",
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
"type": "string"
- }
+ },
+ "required": true
},
{
- "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": "policyObjectId",
+ "in": "path",
+ "description": "Policy object ID",
"schema": {
"type": "string"
- }
+ },
+ "required": true
}
],
"responses": {
@@ -95710,50 +99240,37 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "type": "object"
- }
+ "type": "object"
},
- "example": [
- {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "network",
- "type": "cidr",
- "cidr": "10.0.0.0/24",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "groupIds": [
+ "example": {
+ "id": "1234",
+ "name": "Web Servers - Datacenter 10",
+ "category": "network",
+ "type": "cidr",
+ "cidr": "10.0.0.0/24",
+ "created_at": "2018-05-12T00:00:00Z",
+ "updated_at": "2018-05-12T00:00:00Z",
+ "groupIds": [
- ],
- "networkIds": [
+ ],
+ "networkIds": [
- ]
- }
- ]
- }
- },
- "headers": {
- "Link": {
- "schema": {
- "type": "string"
- },
- "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ ]
+ }
}
}
}
},
- "summary": "Lists Policy Objects belonging to the organization.",
+ "summary": "Shows details of a Policy Object.",
"tags": [
"organizations",
"configure",
"policyObjects"
]
},
- "post": {
- "description": "Creates a new Policy Object.",
- "operationId": "createOrganizationPolicyObject",
+ "put": {
+ "description": "Updates a Policy Object.",
+ "operationId": "updateOrganizationPolicyObject",
"parameters": [
{
"name": "organizationId",
@@ -95763,6 +99280,15 @@
"type": "string"
},
"required": true
+ },
+ {
+ "name": "policyObjectId",
+ "in": "path",
+ "description": "Policy object ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
}
],
"requestBody": {
@@ -95775,14 +99301,6 @@
"type": "string",
"description": "Name of a policy object, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
},
- "category": {
- "type": "string",
- "description": "Category of a policy object (one of: adaptivePolicy, network)"
- },
- "type": {
- "type": "string",
- "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn, ipAndMask)"
- },
"cidr": {
"type": "string",
"description": "CIDR Value of a policy object (e.g. 10.11.12.1/24\")"
@@ -95809,24 +99327,18 @@
},
"example": {
"name": "Web Servers - Datacenter 10",
- "category": "network",
"type": "cidr",
"groupIds": [
]
- },
- "required": [
- "name",
- "category",
- "type"
- ]
+ }
}
}
},
- "required": true
+ "required": false
},
"responses": {
- "201": {
+ "200": {
"description": "Successful operation",
"content": {
"application/json": {
@@ -95852,18 +99364,16 @@
}
}
},
- "summary": "Creates a new Policy Object.",
+ "summary": "Updates a Policy Object.",
"tags": [
"organizations",
"configure",
"policyObjects"
]
- }
- },
- "/organizations/{organizationId}/policyObjects/groups": {
- "get": {
- "description": "Lists Policy Object Groups belonging to the organization.",
- "operationId": "getOrganizationPolicyObjectsGroups",
+ },
+ "delete": {
+ "description": "Deletes a Policy Object.",
+ "operationId": "deleteOrganizationPolicyObject",
"parameters": [
{
"name": "organizationId",
@@ -95875,28 +99385,146 @@
"required": true
},
{
- "name": "perPage",
- "in": "query",
- "description": "The number of entries per page returned. Acceptable range is 10 - 1000. Default is 1000.",
+ "name": "policyObjectId",
+ "in": "path",
+ "description": "Policy object ID",
"schema": {
- "type": "integer"
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Successful operation"
+ }
+ },
+ "summary": "Deletes a Policy Object.",
+ "tags": [
+ "organizations",
+ "configure",
+ "policyObjects"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/saml": {
+ "get": {
+ "description": "Returns the SAML SSO enabled settings for an organization.",
+ "operationId": "getOrganizationSaml",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Toggle depicting if SAML SSO settings are enabled"
+ }
+ }
+ },
+ "example": {
+ "enabled": true
+ }
+ }
}
- },
+ }
+ },
+ "summary": "Returns the SAML SSO enabled settings for an organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "saml"
+ ]
+ },
+ "put": {
+ "description": "Updates the SAML SSO enabled settings for an organization.",
+ "operationId": "updateOrganizationSaml",
+ "parameters": [
{
- "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.",
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
"type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Boolean for updating SAML SSO enabled settings."
+ }
+ },
+ "example": {
+ "enabled": true
+ }
+ }
}
},
+ "required": false
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Toggle depicting if SAML SSO settings are enabled"
+ }
+ }
+ },
+ "example": {
+ "enabled": true
+ }
+ }
+ }
+ }
+ },
+ "summary": "Updates the SAML SSO enabled settings for an organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "saml"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/saml/idps": {
+ "get": {
+ "description": "List the SAML IdPs in your organization.",
+ "operationId": "getOrganizationSamlIdps",
+ "parameters": [
{
- "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": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
"type": "string"
- }
+ },
+ "required": true
}
],
"responses": {
@@ -95907,47 +99535,50 @@
"schema": {
"type": "array",
"items": {
- "type": "object"
+ "type": "object",
+ "properties": {
+ "idpId": {
+ "type": "string",
+ "description": "ID associated with the SAML Identity Provider (IdP)"
+ },
+ "consumerUrl": {
+ "type": "string",
+ "description": "URL that is consuming SAML Identity Provider (IdP)"
+ },
+ "x509certSha1Fingerprint": {
+ "type": "string",
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ },
+ "sloLogoutUrl": {
+ "type": "string",
+ "description": "Dashboard will redirect users to this URL when they sign out."
+ }
+ }
}
},
"example": [
{
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "NetworkObjectGroup",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "objectIds": [
-
- ],
- "networkIds": [
-
- ]
+ "idpId": "1284392014819",
+ "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
}
]
}
- },
- "headers": {
- "Link": {
- "schema": {
- "type": "string"
- },
- "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
- }
}
}
},
- "summary": "Lists Policy Object Groups belonging to the organization.",
+ "summary": "List the SAML IdPs in your organization.",
"tags": [
"organizations",
"configure",
- "policyObjects",
- "groups"
+ "saml",
+ "idps"
]
},
"post": {
- "description": "Creates a new Policy Object Group.",
- "operationId": "createOrganizationPolicyObjectsGroup",
+ "description": "Create a SAML IdP for your organization.",
+ "operationId": "createOrganizationSamlIdp",
"parameters": [
{
"name": "organizationId",
@@ -95965,30 +99596,21 @@
"schema": {
"type": "object",
"properties": {
- "name": {
+ "x509certSha1Fingerprint": {
"type": "string",
- "description": "A name for the group of network addresses, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
},
- "category": {
+ "sloLogoutUrl": {
"type": "string",
- "description": "Category of a policy object group (one of: NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)"
- },
- "objectIds": {
- "type": "array",
- "items": {
- "type": "integer"
- },
- "description": "A list of Policy Object ID's that this NetworkObjectGroup should be associated to (note: these ID's will replace the existing associated Policy Objects)"
+ "description": "Dashboard will redirect users to this URL when they sign out."
}
},
"example": {
- "name": "Web Servers - Datacenter 10",
- "objectIds": [
-
- ]
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
},
"required": [
- "name"
+ "x509certSha1Fingerprint"
]
}
}
@@ -96001,38 +99623,217 @@
"content": {
"application/json": {
"schema": {
- "type": "object"
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "idpId": {
+ "type": "string",
+ "description": "ID associated with the SAML Identity Provider (IdP)"
+ },
+ "consumerUrl": {
+ "type": "string",
+ "description": "URL that is consuming SAML Identity Provider (IdP)"
+ },
+ "x509certSha1Fingerprint": {
+ "type": "string",
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ },
+ "sloLogoutUrl": {
+ "type": "string",
+ "description": "Dashboard will redirect users to this URL when they sign out."
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "idpId": "1284392014819",
+ "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Create a SAML IdP for your organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "saml",
+ "idps"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/saml/idps/{idpId}": {
+ "put": {
+ "description": "Update a SAML IdP in your organization",
+ "operationId": "updateOrganizationSamlIdp",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "idpId",
+ "in": "path",
+ "description": "Idp ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "x509certSha1Fingerprint": {
+ "type": "string",
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ },
+ "sloLogoutUrl": {
+ "type": "string",
+ "description": "Dashboard will redirect users to this URL when they sign out."
+ }
+ },
+ "example": {
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
+ }
+ }
+ }
+ },
+ "required": false
+ },
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "idpId": {
+ "type": "string",
+ "description": "ID associated with the SAML Identity Provider (IdP)"
+ },
+ "consumerUrl": {
+ "type": "string",
+ "description": "URL that is consuming SAML Identity Provider (IdP)"
+ },
+ "x509certSha1Fingerprint": {
+ "type": "string",
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ },
+ "sloLogoutUrl": {
+ "type": "string",
+ "description": "Dashboard will redirect users to this URL when they sign out."
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "idpId": "1284392014819",
+ "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Update a SAML IdP in your organization",
+ "tags": [
+ "organizations",
+ "configure",
+ "saml",
+ "idps"
+ ]
+ },
+ "get": {
+ "description": "Get a SAML IdP from your organization.",
+ "operationId": "getOrganizationSamlIdp",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "idpId",
+ "in": "path",
+ "description": "Idp ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "idpId": {
+ "type": "string",
+ "description": "ID associated with the SAML Identity Provider (IdP)"
+ },
+ "consumerUrl": {
+ "type": "string",
+ "description": "URL that is consuming SAML Identity Provider (IdP)"
+ },
+ "x509certSha1Fingerprint": {
+ "type": "string",
+ "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ },
+ "sloLogoutUrl": {
+ "type": "string",
+ "description": "Dashboard will redirect users to this URL when they sign out."
+ }
+ }
},
"example": {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "NetworkObjectGroup",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "objectIds": [
-
- ],
- "networkIds": [
-
- ]
+ "idpId": "1284392014819",
+ "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
+ "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
+ "sloLogoutUrl": "https://somewhere.com"
}
}
}
}
},
- "summary": "Creates a new Policy Object Group.",
+ "summary": "Get a SAML IdP from your organization.",
"tags": [
"organizations",
"configure",
- "policyObjects",
- "groups"
+ "saml",
+ "idps"
]
- }
- },
- "/organizations/{organizationId}/policyObjects/groups/{policyObjectGroupId}": {
- "get": {
- "description": "Shows details of a Policy Object Group.",
- "operationId": "getOrganizationPolicyObjectsGroup",
+ },
+ "delete": {
+ "description": "Remove a SAML IdP in your organization.",
+ "operationId": "deleteOrganizationSamlIdp",
"parameters": [
{
"name": "organizationId",
@@ -96044,9 +99845,38 @@
"required": true
},
{
- "name": "policyObjectGroupId",
+ "name": "idpId",
"in": "path",
- "description": "Policy object group ID",
+ "description": "Idp ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "Successful operation"
+ }
+ },
+ "summary": "Remove a SAML IdP in your organization.",
+ "tags": [
+ "organizations",
+ "configure",
+ "saml",
+ "idps"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/samlRoles": {
+ "get": {
+ "description": "List the SAML roles for this organization",
+ "operationId": "getOrganizationSamlRoles",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
"type": "string"
},
@@ -96059,36 +99889,92 @@
"content": {
"application/json": {
"schema": {
- "type": "object"
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "ID associated with the SAML role"
+ },
+ "role": {
+ "type": "string",
+ "description": "The role of the SAML administrator"
+ },
+ "orgAccess": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the organization"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The network ID"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the network"
+ }
+ }
+ },
+ "description": "The list of networks that the SAML administrator has privileges on"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "The name of the tag"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the tag"
+ }
+ }
+ },
+ "description": "The list of tags that the SAML administrator has privleges on"
+ }
+ }
+ }
},
- "example": {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "NetworkObjectGroup",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "objectIds": [
-
- ],
- "networkIds": [
-
- ]
- }
+ "example": [
+ {
+ "id": "1284392014819",
+ "role": "myrole",
+ "orgAccess": "none",
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
+ ],
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
+ ]
+ }
+ ]
}
}
}
},
- "summary": "Shows details of a Policy Object Group.",
+ "summary": "List the SAML roles for this organization",
"tags": [
"organizations",
"configure",
- "policyObjects",
- "groups"
+ "samlRoles"
]
},
- "put": {
- "description": "Updates a Policy Object Group.",
- "operationId": "updateOrganizationPolicyObjectsGroup",
+ "post": {
+ "description": "Create a SAML role",
+ "operationId": "createOrganizationSamlRole",
"parameters": [
{
"name": "organizationId",
@@ -96098,15 +99984,6 @@
"type": "string"
},
"required": true
- },
- {
- "name": "policyObjectGroupId",
- "in": "path",
- "description": "Policy object group ID",
- "schema": {
- "type": "string"
- },
- "required": true
}
],
"requestBody": {
@@ -96115,31 +99992,103 @@
"schema": {
"type": "object",
"properties": {
- "name": {
+ "role": {
"type": "string",
- "description": "A name for the group of network addresses, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
+ "description": "The role of the SAML administrator"
},
- "objectIds": {
+ "orgAccess": {
+ "type": "string",
+ "enum": [
+ "enterprise",
+ "full",
+ "none",
+ "read-only"
+ ],
+ "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise'"
+ },
+ "tags": {
"type": "array",
"items": {
- "type": "integer"
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "The name of the tag"
+ },
+ "access": {
+ "type": "string",
+ "enum": [
+ "full",
+ "guest-ambassador",
+ "monitor-only",
+ "read-only"
+ ],
+ "description": "The privilege of the SAML administrator on the tag. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'"
+ }
+ },
+ "required": [
+ "tag",
+ "access"
+ ]
},
- "description": "A list of Policy Object ID's that this NetworkObjectGroup should be associated to (note: these ID's will replace the existing associated Policy Objects)"
+ "description": "The list of tags that the SAML administrator has privileges on"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The network ID"
+ },
+ "access": {
+ "type": "string",
+ "enum": [
+ "full",
+ "guest-ambassador",
+ "monitor-only",
+ "read-only",
+ "ssid-admin"
+ ],
+ "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only' or 'ssid-admin'"
+ }
+ },
+ "required": [
+ "id",
+ "access"
+ ]
+ },
+ "description": "The list of networks that the SAML administrator has privileges on"
}
},
"example": {
- "name": "Web Servers - Datacenter 10",
- "objectIds": [
-
+ "role": "myrole",
+ "orgAccess": "none",
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
+ ],
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
]
- }
+ },
+ "required": [
+ "role",
+ "orgAccess"
+ ]
}
}
},
- "required": false
+ "required": true
},
"responses": {
- "200": {
+ "201": {
"description": "Successful operation",
"content": {
"application/json": {
@@ -96147,71 +100096,38 @@
"type": "object"
},
"example": {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "NetworkObjectGroup",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "objectIds": [
-
+ "id": "1284392014819",
+ "role": "myrole",
+ "orgAccess": "none",
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
],
- "networkIds": [
-
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
]
}
}
}
}
},
- "summary": "Updates a Policy Object Group.",
- "tags": [
- "organizations",
- "configure",
- "policyObjects",
- "groups"
- ]
- },
- "delete": {
- "description": "Deletes a Policy Object Group.",
- "operationId": "deleteOrganizationPolicyObjectsGroup",
- "parameters": [
- {
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
- "schema": {
- "type": "string"
- },
- "required": true
- },
- {
- "name": "policyObjectGroupId",
- "in": "path",
- "description": "Policy object group ID",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "responses": {
- "204": {
- "description": "Successful operation"
- }
- },
- "summary": "Deletes a Policy Object Group.",
+ "summary": "Create a SAML role",
"tags": [
"organizations",
"configure",
- "policyObjects",
- "groups"
+ "samlRoles"
]
}
},
- "/organizations/{organizationId}/policyObjects/{policyObjectId}": {
+ "/organizations/{organizationId}/samlRoles/{samlRoleId}": {
"get": {
- "description": "Shows details of a Policy Object.",
- "operationId": "getOrganizationPolicyObject",
+ "description": "Return a SAML role",
+ "operationId": "getOrganizationSamlRole",
"parameters": [
{
"name": "organizationId",
@@ -96223,9 +100139,9 @@
"required": true
},
{
- "name": "policyObjectId",
+ "name": "samlRoleId",
"in": "path",
- "description": "Policy object ID",
+ "description": "Saml role ID",
"schema": {
"type": "string"
},
@@ -96238,37 +100154,87 @@
"content": {
"application/json": {
"schema": {
- "type": "object"
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "ID associated with the SAML role"
+ },
+ "role": {
+ "type": "string",
+ "description": "The role of the SAML administrator"
+ },
+ "orgAccess": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the organization"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The network ID"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the network"
+ }
+ }
+ },
+ "description": "The list of networks that the SAML administrator has privileges on"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "The name of the tag"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the tag"
+ }
+ }
+ },
+ "description": "The list of tags that the SAML administrator has privleges on"
+ }
+ }
},
"example": {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "network",
- "type": "cidr",
- "cidr": "10.0.0.0/24",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "groupIds": [
-
+ "id": "1284392014819",
+ "role": "myrole",
+ "orgAccess": "none",
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
],
- "networkIds": [
-
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
]
}
}
}
}
},
- "summary": "Shows details of a Policy Object.",
+ "summary": "Return a SAML role",
"tags": [
"organizations",
"configure",
- "policyObjects"
+ "samlRoles"
]
},
"put": {
- "description": "Updates a Policy Object.",
- "operationId": "updateOrganizationPolicyObject",
+ "description": "Update a SAML role",
+ "operationId": "updateOrganizationSamlRole",
"parameters": [
{
"name": "organizationId",
@@ -96280,9 +100246,9 @@
"required": true
},
{
- "name": "policyObjectId",
+ "name": "samlRoleId",
"in": "path",
- "description": "Policy object ID",
+ "description": "Saml role ID",
"schema": {
"type": "string"
},
@@ -96295,39 +100261,90 @@
"schema": {
"type": "object",
"properties": {
- "name": {
- "type": "string",
- "description": "Name of a policy object, unique within the organization (alphanumeric, space, dash, or underscore characters only)"
- },
- "cidr": {
- "type": "string",
- "description": "CIDR Value of a policy object (e.g. 10.11.12.1/24\")"
- },
- "fqdn": {
+ "role": {
"type": "string",
- "description": "Fully qualified domain name of policy object (e.g. \"example.com\")"
+ "description": "The role of the SAML administrator"
},
- "mask": {
+ "orgAccess": {
"type": "string",
- "description": "Mask of a policy object (e.g. \"255.255.0.0\")"
+ "enum": [
+ "enterprise",
+ "full",
+ "none",
+ "read-only"
+ ],
+ "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise'"
},
- "ip": {
- "type": "string",
- "description": "IP Address of a policy object (e.g. \"1.2.3.4\")"
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "The name of the tag"
+ },
+ "access": {
+ "type": "string",
+ "enum": [
+ "full",
+ "guest-ambassador",
+ "monitor-only",
+ "read-only"
+ ],
+ "description": "The privilege of the SAML administrator on the tag. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'"
+ }
+ },
+ "required": [
+ "tag",
+ "access"
+ ]
+ },
+ "description": "The list of tags that the SAML administrator has privileges on"
},
- "groupIds": {
+ "networks": {
"type": "array",
"items": {
- "type": "integer"
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The network ID"
+ },
+ "access": {
+ "type": "string",
+ "enum": [
+ "full",
+ "guest-ambassador",
+ "monitor-only",
+ "read-only",
+ "ssid-admin"
+ ],
+ "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only' or 'ssid-admin'"
+ }
+ },
+ "required": [
+ "id",
+ "access"
+ ]
},
- "description": "The IDs of policy object groups the policy object belongs to"
+ "description": "The list of networks that the SAML administrator has privileges on"
}
},
"example": {
- "name": "Web Servers - Datacenter 10",
- "type": "cidr",
- "groupIds": [
-
+ "role": "myrole",
+ "orgAccess": "none",
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
+ ],
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
]
}
}
@@ -96341,37 +100358,87 @@
"content": {
"application/json": {
"schema": {
- "type": "object"
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "ID associated with the SAML role"
+ },
+ "role": {
+ "type": "string",
+ "description": "The role of the SAML administrator"
+ },
+ "orgAccess": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the organization"
+ },
+ "networks": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "The network ID"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the network"
+ }
+ }
+ },
+ "description": "The list of networks that the SAML administrator has privileges on"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "tag": {
+ "type": "string",
+ "description": "The name of the tag"
+ },
+ "access": {
+ "type": "string",
+ "description": "The privilege of the SAML administrator on the tag"
+ }
+ }
+ },
+ "description": "The list of tags that the SAML administrator has privleges on"
+ }
+ }
},
"example": {
- "id": "1234",
- "name": "Web Servers - Datacenter 10",
- "category": "network",
- "type": "cidr",
- "cidr": "10.0.0.0/24",
- "created_at": "2018-05-12T00:00:00Z",
- "updated_at": "2018-05-12T00:00:00Z",
- "groupIds": [
-
+ "id": "1284392014819",
+ "role": "myrole",
+ "orgAccess": "none",
+ "networks": [
+ {
+ "id": "N_24329156",
+ "access": "full"
+ }
],
- "networkIds": [
-
+ "tags": [
+ {
+ "tag": "west",
+ "access": "read-only"
+ }
]
}
}
}
}
},
- "summary": "Updates a Policy Object.",
+ "summary": "Update a SAML role",
"tags": [
"organizations",
"configure",
- "policyObjects"
+ "samlRoles"
]
},
"delete": {
- "description": "Deletes a Policy Object.",
- "operationId": "deleteOrganizationPolicyObject",
+ "description": "Remove a SAML role",
+ "operationId": "deleteOrganizationSamlRole",
"parameters": [
{
"name": "organizationId",
@@ -96383,9 +100450,9 @@
"required": true
},
{
- "name": "policyObjectId",
+ "name": "samlRoleId",
"in": "path",
- "description": "Policy object ID",
+ "description": "Saml role ID",
"schema": {
"type": "string"
},
@@ -96397,18 +100464,18 @@
"description": "Successful operation"
}
},
- "summary": "Deletes a Policy Object.",
+ "summary": "Remove a SAML role",
"tags": [
"organizations",
"configure",
- "policyObjects"
+ "samlRoles"
]
}
},
- "/organizations/{organizationId}/saml": {
+ "/organizations/{organizationId}/sensor/readings/history": {
"get": {
- "description": "Returns the SAML SSO enabled settings for an organization.",
- "operationId": "getOrganizationSaml",
+ "description": "Return all reported readings from sensors in a given timespan, sorted by timestamp",
+ "operationId": "getOrganizationSensorReadingsHistory",
"parameters": [
{
"name": "organizationId",
@@ -96418,111 +100485,89 @@
"type": "string"
},
"required": true
- }
- ],
- "responses": {
- "200": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Toggle depicting if SAML SSO settings are enabled"
- }
- }
- },
- "example": {
- "enabled": true
- }
- }
+ },
+ {
+ "name": "perPage",
+ "in": "query",
+ "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.",
+ "schema": {
+ "type": "integer"
}
- }
- },
- "summary": "Returns the SAML SSO enabled settings for an organization.",
- "tags": [
- "organizations",
- "configure",
- "saml"
- ]
- },
- "put": {
- "description": "Updates the SAML SSO enabled settings for an organization.",
- "operationId": "updateOrganizationSaml",
- "parameters": [
+ },
{
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
+ "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"
- },
- "required": true
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Boolean for updating SAML SSO enabled settings."
- }
- },
- "example": {
- "enabled": true
- }
+ }
+ },
+ {
+ "name": "endingBefore",
+ "in": "query",
+ "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "t0",
+ "in": "query",
+ "description": "The beginning of the timespan for the data. The maximum lookback period is 365 days and 6 hours from today.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "t1",
+ "in": "query",
+ "description": "The end of the timespan for the data. t1 can be a maximum of 7 days after t0.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "timespan",
+ "in": "query",
+ "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 7 days. The default is 2 hours.",
+ "schema": {
+ "type": "number",
+ "format": "float",
+ "maximum": 604800
+ }
+ },
+ {
+ "name": "networkIds",
+ "in": "query",
+ "description": "Optional parameter to filter readings by network.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
}
}
},
- "required": false
- },
- "responses": {
- "200": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "enabled": {
- "type": "boolean",
- "description": "Toggle depicting if SAML SSO settings are enabled"
- }
- }
- },
- "example": {
- "enabled": true
- }
+ {
+ "name": "serials",
+ "in": "query",
+ "description": "Optional parameter to filter readings by sensor.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
}
}
- }
- },
- "summary": "Updates the SAML SSO enabled settings for an organization.",
- "tags": [
- "organizations",
- "configure",
- "saml"
- ]
- }
- },
- "/organizations/{organizationId}/saml/idps": {
- "get": {
- "description": "List the SAML IdPs in your organization.",
- "operationId": "getOrganizationSamlIdps",
- "parameters": [
+ },
{
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
+ "name": "metrics",
+ "in": "query",
+ "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are apparentPower, battery, button, co2, current, door, downstreamPower, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, remoteLockoutSwitch, temperature, tvoc, voltage, and water.",
"schema": {
- "type": "string"
- },
- "required": true
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
}
],
"responses": {
@@ -96535,140 +100580,363 @@
"items": {
"type": "object",
"properties": {
- "idpId": {
+ "serial": {
"type": "string",
- "description": "ID associated with the SAML Identity Provider (IdP)"
+ "description": "Serial number of the sensor that took the reading."
},
- "consumerUrl": {
- "type": "string",
- "description": "URL that is consuming SAML Identity Provider (IdP)"
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "ID of the network."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the network."
+ }
+ },
+ "description": "Network to which the sensor belongs."
},
- "x509certSha1Fingerprint": {
+ "ts": {
"type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ "description": "Time at which the reading occurred, in ISO8601 format."
},
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
- }
- }
- }
- },
- "example": [
- {
- "idpId": "1284392014819",
- "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
- }
- ]
- }
- }
- }
- },
- "summary": "List the SAML IdPs in your organization.",
- "tags": [
- "organizations",
- "configure",
- "saml",
- "idps"
- ]
- },
- "post": {
- "description": "Create a SAML IdP for your organization.",
- "operationId": "createOrganizationSamlIdp",
- "parameters": [
- {
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "x509certSha1Fingerprint": {
- "type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
- },
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
- }
- },
- "example": {
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
- },
- "required": [
- "x509certSha1Fingerprint"
- ]
- }
- }
- },
- "required": true
- },
- "responses": {
- "201": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "idpId": {
+ "metric": {
"type": "string",
- "description": "ID associated with the SAML Identity Provider (IdP)"
+ "enum": [
+ "apparentPower",
+ "battery",
+ "button",
+ "co2",
+ "current",
+ "door",
+ "downstreamPower",
+ "frequency",
+ "humidity",
+ "indoorAirQuality",
+ "noise",
+ "pm25",
+ "powerFactor",
+ "realPower",
+ "remoteLockoutSwitch",
+ "temperature",
+ "tvoc",
+ "voltage",
+ "water"
+ ],
+ "description": "Type of sensor reading."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Apparent power reading in volt-amperes."
+ }
+ },
+ "description": "Reading for the 'apparentPower' metric. This will only be present if the 'metric' property equals 'apparentPower'."
+ },
+ "battery": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Remaining battery life."
+ }
+ },
+ "description": "Reading for the 'battery' metric. This will only be present if the 'metric' property equals 'battery'."
+ },
+ "button": {
+ "type": "object",
+ "properties": {
+ "pressType": {
+ "type": "string",
+ "enum": [
+ "long",
+ "short"
+ ],
+ "description": "Type of button press that occurred."
+ }
+ },
+ "description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
+ },
+ "co2": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "CO2 reading in parts per million."
+ }
+ },
+ "description": "Reading for the 'co2' metric. This will only be present if the 'metric' property equals 'co2'."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current reading in amperes."
+ }
+ },
+ "description": "Reading for the 'current' metric. This will only be present if the 'metric' property equals 'current'."
+ },
+ "door": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "boolean",
+ "description": "True if the door is open."
+ }
+ },
+ "description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
+ },
+ "downstreamPower": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "True if power is turned on to the device that is connected downstream of the MT40 power monitor."
+ }
+ },
+ "description": "Reading for the 'downstreamPower' metric. This will only be present if the 'metric' property equals 'downstreamPower'."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current frequency reading in hertz."
+ }
+ },
+ "description": "Reading for the 'frequency' metric. This will only be present if the 'metric' property equals 'frequency'."
+ },
+ "humidity": {
+ "type": "object",
+ "properties": {
+ "relativePercentage": {
+ "type": "integer",
+ "description": "Humidity reading in %RH."
+ }
+ },
+ "description": "Reading for the 'humidity' metric. This will only be present if the 'metric' property equals 'humidity'."
+ },
+ "indoorAirQuality": {
+ "type": "object",
+ "properties": {
+ "score": {
+ "type": "integer",
+ "description": "Indoor air quality score between 0 and 100."
+ }
+ },
+ "description": "Reading for the 'indoorAirQuality' metric. This will only be present if the 'metric' property equals 'indoorAirQuality'."
+ },
+ "noise": {
+ "type": "object",
+ "properties": {
+ "ambient": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "integer",
+ "description": "Ambient noise reading in adjusted decibels."
+ }
+ },
+ "description": "Ambient noise reading."
+ }
+ },
+ "description": "Reading for the 'noise' metric. This will only be present if the 'metric' property equals 'noise'."
+ },
+ "pm25": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "PM2.5 reading in micrograms per cubic meter."
+ }
+ },
+ "description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Power factor reading as a percentage."
+ }
+ },
+ "description": "Reading for the 'powerFactor' metric. This will only be present if the 'metric' property equals 'powerFactor'."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Real power reading in watts."
+ }
+ },
+ "description": "Reading for the 'realPower' metric. This will only be present if the 'metric' property equals 'realPower'."
},
- "consumerUrl": {
- "type": "string",
- "description": "URL that is consuming SAML Identity Provider (IdP)"
+ "remoteLockoutSwitch": {
+ "type": "object",
+ "properties": {
+ "locked": {
+ "type": "boolean",
+ "description": "True if power controls are disabled via the MT40's physical remote lockout switch."
+ }
+ },
+ "description": "Reading for the 'remoteLockoutSwitch' metric. This will only be present if the 'metric' property equals 'remoteLockoutSwitch'."
},
- "x509certSha1Fingerprint": {
- "type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ "temperature": {
+ "type": "object",
+ "properties": {
+ "fahrenheit": {
+ "type": "number",
+ "format": "float",
+ "description": "Temperature reading in degrees Fahrenheit."
+ },
+ "celsius": {
+ "type": "number",
+ "format": "float",
+ "description": "Temperature reading in degrees Celsius."
+ }
+ },
+ "description": "Reading for the 'temperature' metric. This will only be present if the 'metric' property equals 'temperature'."
},
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
+ "tvoc": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "TVOC reading in micrograms per cubic meter."
+ }
+ },
+ "description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Voltage reading in volts."
+ }
+ },
+ "description": "Reading for the 'voltage' metric. This will only be present if the 'metric' property equals 'voltage'."
+ },
+ "water": {
+ "type": "object",
+ "properties": {
+ "present": {
+ "type": "boolean",
+ "description": "True if water is detected."
+ }
+ },
+ "description": "Reading for the 'water' metric. This will only be present if the 'metric' property equals 'water'."
}
}
}
},
"example": [
{
- "idpId": "1284392014819",
- "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
+ "serial": "Q234-ABCD-5678",
+ "network": {
+ "id": "N_24329156",
+ "name": "Main Office"
+ },
+ "ts": "2021-10-18T23:54:48.000000Z",
+ "metric": "temperature",
+ "apparentPower": {
+ "draw": 15.9
+ },
+ "battery": {
+ "percentage": 91
+ },
+ "button": {
+ "pressType": "short"
+ },
+ "co2": {
+ "concentration": 100
+ },
+ "current": {
+ "draw": 0.13
+ },
+ "door": {
+ "open": true
+ },
+ "downstreamPower": {
+ "enabled": true
+ },
+ "frequency": {
+ "level": 60.1
+ },
+ "humidity": {
+ "relativePercentage": 34
+ },
+ "indoorAirQuality": {
+ "score": 89
+ },
+ "noise": {
+ "ambient": {
+ "level": 45
+ }
+ },
+ "pm25": {
+ "concentration": 100
+ },
+ "powerFactor": {
+ "percentage": 86
+ },
+ "realPower": {
+ "draw": 13.7
+ },
+ "remoteLockoutSwitch": {
+ "locked": false
+ },
+ "temperature": {
+ "fahrenheit": 77.81,
+ "celsius": 25.45
+ },
+ "tvoc": {
+ "concentration": 100
+ },
+ "voltage": {
+ "level": 122.4
+ },
+ "water": {
+ "present": true
+ }
}
]
}
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ }
}
}
},
- "summary": "Create a SAML IdP for your organization.",
+ "summary": "Return all reported readings from sensors in a given timespan, sorted by timestamp",
"tags": [
- "organizations",
- "configure",
- "saml",
- "idps"
+ "sensor",
+ "monitor",
+ "readings",
+ "history"
]
}
},
- "/organizations/{organizationId}/saml/idps/{idpId}": {
- "put": {
- "description": "Update a SAML IdP in your organization",
- "operationId": "updateOrganizationSamlIdp",
+ "/organizations/{organizationId}/sensor/readings/latest": {
+ "get": {
+ "description": "Return the latest available reading for each metric from each sensor, sorted by sensor serial",
+ "operationId": "getOrganizationSensorReadingsLatest",
"parameters": [
{
"name": "organizationId",
@@ -96680,39 +100948,63 @@
"required": true
},
{
- "name": "idpId",
- "in": "path",
- "description": "Idp ID",
+ "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"
- },
- "required": true
- }
- ],
- "requestBody": {
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "x509certSha1Fingerprint": {
- "type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
- },
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
- }
- },
- "example": {
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
- }
+ }
+ },
+ {
+ "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 readings by network.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
}
}
},
- "required": false
- },
+ {
+ "name": "serials",
+ "in": "query",
+ "description": "Optional parameter to filter readings by sensor.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "name": "metrics",
+ "in": "query",
+ "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are apparentPower, battery, button, co2, current, door, downstreamPower, frequency, humidity, indoorAirQuality, noise, pm25, powerFactor, realPower, remoteLockoutSwitch, temperature, tvoc, voltage, and water.",
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ }
+ }
+ ],
"responses": {
"200": {
"description": "Successful operation",
@@ -96723,48 +101015,376 @@
"items": {
"type": "object",
"properties": {
- "idpId": {
- "type": "string",
- "description": "ID associated with the SAML Identity Provider (IdP)"
- },
- "consumerUrl": {
+ "serial": {
"type": "string",
- "description": "URL that is consuming SAML Identity Provider (IdP)"
+ "description": "Serial number of the sensor that took the readings."
},
- "x509certSha1Fingerprint": {
- "type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
+ "network": {
+ "type": "object",
+ "properties": {
+ "id": {
+ "type": "string",
+ "description": "ID of the network."
+ },
+ "name": {
+ "type": "string",
+ "description": "Name of the network."
+ }
+ },
+ "description": "Network to which the sensor belongs."
},
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
+ "readings": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "ts": {
+ "type": "string",
+ "description": "Time at which the reading occurred, in ISO8601 format."
+ },
+ "metric": {
+ "type": "string",
+ "enum": [
+ "apparentPower",
+ "battery",
+ "button",
+ "co2",
+ "current",
+ "door",
+ "downstreamPower",
+ "frequency",
+ "humidity",
+ "indoorAirQuality",
+ "noise",
+ "pm25",
+ "powerFactor",
+ "realPower",
+ "remoteLockoutSwitch",
+ "temperature",
+ "tvoc",
+ "voltage",
+ "water"
+ ],
+ "description": "Type of sensor reading."
+ },
+ "apparentPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Apparent power reading in volt-amperes."
+ }
+ },
+ "description": "Reading for the 'apparentPower' metric. This will only be present if the 'metric' property equals 'apparentPower'."
+ },
+ "battery": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Remaining battery life."
+ }
+ },
+ "description": "Reading for the 'battery' metric. This will only be present if the 'metric' property equals 'battery'."
+ },
+ "button": {
+ "type": "object",
+ "properties": {
+ "pressType": {
+ "type": "string",
+ "enum": [
+ "long",
+ "short"
+ ],
+ "description": "Type of button press that occurred."
+ }
+ },
+ "description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
+ },
+ "co2": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "CO2 reading in parts per million."
+ }
+ },
+ "description": "Reading for the 'co2' metric. This will only be present if the 'metric' property equals 'co2'."
+ },
+ "current": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current reading in amperes."
+ }
+ },
+ "description": "Reading for the 'current' metric. This will only be present if the 'metric' property equals 'current'."
+ },
+ "door": {
+ "type": "object",
+ "properties": {
+ "open": {
+ "type": "boolean",
+ "description": "True if the door is open."
+ }
+ },
+ "description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
+ },
+ "downstreamPower": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "True if power is turned on to the device that is connected downstream of the MT40 power monitor."
+ }
+ },
+ "description": "Reading for the 'downstreamPower' metric. This will only be present if the 'metric' property equals 'downstreamPower'."
+ },
+ "frequency": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Electrical current frequency reading in hertz."
+ }
+ },
+ "description": "Reading for the 'frequency' metric. This will only be present if the 'metric' property equals 'frequency'."
+ },
+ "humidity": {
+ "type": "object",
+ "properties": {
+ "relativePercentage": {
+ "type": "integer",
+ "description": "Humidity reading in %RH."
+ }
+ },
+ "description": "Reading for the 'humidity' metric. This will only be present if the 'metric' property equals 'humidity'."
+ },
+ "indoorAirQuality": {
+ "type": "object",
+ "properties": {
+ "score": {
+ "type": "integer",
+ "description": "Indoor air quality score between 0 and 100."
+ }
+ },
+ "description": "Reading for the 'indoorAirQuality' metric. This will only be present if the 'metric' property equals 'indoorAirQuality'."
+ },
+ "noise": {
+ "type": "object",
+ "properties": {
+ "ambient": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "integer",
+ "description": "Ambient noise reading in adjusted decibels."
+ }
+ },
+ "description": "Ambient noise reading."
+ }
+ },
+ "description": "Reading for the 'noise' metric. This will only be present if the 'metric' property equals 'noise'."
+ },
+ "pm25": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "PM2.5 reading in micrograms per cubic meter."
+ }
+ },
+ "description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
+ },
+ "powerFactor": {
+ "type": "object",
+ "properties": {
+ "percentage": {
+ "type": "integer",
+ "description": "Power factor reading as a percentage."
+ }
+ },
+ "description": "Reading for the 'powerFactor' metric. This will only be present if the 'metric' property equals 'powerFactor'."
+ },
+ "realPower": {
+ "type": "object",
+ "properties": {
+ "draw": {
+ "type": "number",
+ "format": "float",
+ "description": "Real power reading in watts."
+ }
+ },
+ "description": "Reading for the 'realPower' metric. This will only be present if the 'metric' property equals 'realPower'."
+ },
+ "remoteLockoutSwitch": {
+ "type": "object",
+ "properties": {
+ "locked": {
+ "type": "boolean",
+ "description": "True if power controls are disabled via the MT40's physical remote lockout switch."
+ }
+ },
+ "description": "Reading for the 'remoteLockoutSwitch' metric. This will only be present if the 'metric' property equals 'remoteLockoutSwitch'."
+ },
+ "temperature": {
+ "type": "object",
+ "properties": {
+ "fahrenheit": {
+ "type": "number",
+ "format": "float",
+ "description": "Temperature reading in degrees Fahrenheit."
+ },
+ "celsius": {
+ "type": "number",
+ "format": "float",
+ "description": "Temperature reading in degrees Celsius."
+ }
+ },
+ "description": "Reading for the 'temperature' metric. This will only be present if the 'metric' property equals 'temperature'."
+ },
+ "tvoc": {
+ "type": "object",
+ "properties": {
+ "concentration": {
+ "type": "integer",
+ "description": "TVOC reading in micrograms per cubic meter."
+ }
+ },
+ "description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
+ },
+ "voltage": {
+ "type": "object",
+ "properties": {
+ "level": {
+ "type": "number",
+ "format": "float",
+ "description": "Voltage reading in volts."
+ }
+ },
+ "description": "Reading for the 'voltage' metric. This will only be present if the 'metric' property equals 'voltage'."
+ },
+ "water": {
+ "type": "object",
+ "properties": {
+ "present": {
+ "type": "boolean",
+ "description": "True if water is detected."
+ }
+ },
+ "description": "Reading for the 'water' metric. This will only be present if the 'metric' property equals 'water'."
+ }
+ }
+ },
+ "description": "Array of latest readings from the sensor. Each object represents a single reading for a single metric."
}
}
}
},
"example": [
{
- "idpId": "1284392014819",
- "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
+ "serial": "Q234-ABCD-5678",
+ "network": {
+ "id": "N_24329156",
+ "name": "Main Office"
+ },
+ "readings": [
+ {
+ "ts": "2021-10-18T23:54:48.000000Z",
+ "metric": "temperature",
+ "apparentPower": {
+ "draw": 15.9
+ },
+ "battery": {
+ "percentage": 91
+ },
+ "button": {
+ "pressType": "short"
+ },
+ "co2": {
+ "concentration": 100
+ },
+ "current": {
+ "draw": 0.13
+ },
+ "door": {
+ "open": true
+ },
+ "downstreamPower": {
+ "enabled": true
+ },
+ "frequency": {
+ "level": 60.1
+ },
+ "humidity": {
+ "relativePercentage": 34
+ },
+ "indoorAirQuality": {
+ "score": 89
+ },
+ "noise": {
+ "ambient": {
+ "level": 45
+ }
+ },
+ "pm25": {
+ "concentration": 100
+ },
+ "powerFactor": {
+ "percentage": 86
+ },
+ "realPower": {
+ "draw": 13.7
+ },
+ "remoteLockoutSwitch": {
+ "locked": false
+ },
+ "temperature": {
+ "fahrenheit": 77.81,
+ "celsius": 25.45
+ },
+ "tvoc": {
+ "concentration": 100
+ },
+ "voltage": {
+ "level": 122.4
+ },
+ "water": {
+ "present": true
+ }
+ }
+ ]
}
]
}
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ }
}
}
},
- "summary": "Update a SAML IdP in your organization",
+ "summary": "Return the latest available reading for each metric from each sensor, sorted by sensor serial",
"tags": [
- "organizations",
- "configure",
- "saml",
- "idps"
+ "sensor",
+ "monitor",
+ "readings",
+ "latest"
]
- },
+ }
+ },
+ "/organizations/{organizationId}/sm/admins/roles": {
"get": {
- "description": "Get a SAML IdP from your organization.",
- "operationId": "getOrganizationSamlIdp",
+ "description": "List the Limited Access Roles for an organization",
+ "operationId": "getOrganizationSmAdminsRoles",
"parameters": [
{
"name": "organizationId",
@@ -96776,109 +101396,28 @@
"required": true
},
{
- "name": "idpId",
- "in": "path",
- "description": "Idp ID",
+ "name": "perPage",
+ "in": "query",
+ "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.",
"schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "responses": {
- "200": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "idpId": {
- "type": "string",
- "description": "ID associated with the SAML Identity Provider (IdP)"
- },
- "consumerUrl": {
- "type": "string",
- "description": "URL that is consuming SAML Identity Provider (IdP)"
- },
- "x509certSha1Fingerprint": {
- "type": "string",
- "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation."
- },
- "sloLogoutUrl": {
- "type": "string",
- "description": "Dashboard will redirect users to this URL when they sign out."
- }
- }
- },
- "example": {
- "idpId": "1284392014819",
- "consumerUrl": "https://n7.meraki.com/saml/login/XXX",
- "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99",
- "sloLogoutUrl": "https://somewhere.com"
- }
- }
+ "type": "integer"
}
- }
- },
- "summary": "Get a SAML IdP from your organization.",
- "tags": [
- "organizations",
- "configure",
- "saml",
- "idps"
- ]
- },
- "delete": {
- "description": "Remove a SAML IdP in your organization.",
- "operationId": "deleteOrganizationSamlIdp",
- "parameters": [
- {
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
- "schema": {
- "type": "string"
- },
- "required": true
},
{
- "name": "idpId",
- "in": "path",
- "description": "Idp ID",
+ "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"
- },
- "required": true
- }
- ],
- "responses": {
- "204": {
- "description": "Successful operation"
- }
- },
- "summary": "Remove a SAML IdP in your organization.",
- "tags": [
- "organizations",
- "configure",
- "saml",
- "idps"
- ]
- }
- },
- "/organizations/{organizationId}/samlRoles": {
- "get": {
- "description": "List the SAML roles for this organization",
- "operationId": "getOrganizationSamlRoles",
- "parameters": [
+ }
+ },
{
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
+ "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"
- },
- "required": true
+ }
}
],
"responses": {
@@ -96887,92 +101426,113 @@
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ID associated with the SAML role"
- },
- "role": {
- "type": "string",
- "description": "The role of the SAML administrator"
- },
- "orgAccess": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the organization"
- },
- "networks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The network ID"
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
},
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the network"
- }
+ "description": "The tags of the limited access role"
}
- },
- "description": "The list of networks that the SAML administrator has privileges on"
+ }
},
- "tags": {
- "type": "array",
- "items": {
+ "description": "Array of Limited Access Roles"
+ },
+ "meta": {
+ "type": "object",
+ "properties": {
+ "counts": {
"type": "object",
"properties": {
- "tag": {
- "type": "string",
- "description": "The name of the tag"
- },
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the tag"
+ "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": "The list of tags that the SAML administrator has privleges on"
- }
+ },
+ "description": "Counts relating to the paginated dataset"
+ }
+ },
+ "description": "Metadata relevant to the paginated dataset"
}
}
},
- "example": [
- {
- "id": "1284392014819",
- "role": "myrole",
- "orgAccess": "none",
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
- ],
- "tags": [
- {
- "tag": "west",
- "access": "read-only"
+ "example": {
+ "items": [
+ {
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
+ "tags": [
+ "tag"
+ ]
+ }
+ ],
+ "meta": {
+ "counts": {
+ "items": {
+ "total": 10,
+ "remaining": 0
}
- ]
+ }
}
- ]
+ }
+ }
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
}
}
}
},
- "summary": "List the SAML roles for this organization",
+ "summary": "List the Limited Access Roles for an organization",
"tags": [
- "organizations",
+ "sm",
"configure",
- "samlRoles"
+ "admins",
+ "roles"
]
},
"post": {
- "description": "Create a SAML role",
- "operationId": "createOrganizationSamlRole",
+ "description": "Create a Limited Access Role",
+ "operationId": "createOrganizationSmAdminsRole",
"parameters": [
{
"name": "organizationId",
@@ -96990,95 +101550,37 @@
"schema": {
"type": "object",
"properties": {
- "role": {
+ "name": {
"type": "string",
- "description": "The role of the SAML administrator"
+ "description": "The name of the Limited Access Role"
},
- "orgAccess": {
+ "scope": {
"type": "string",
"enum": [
- "enterprise",
- "full",
- "none",
- "read-only"
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
],
- "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise'"
+ "description": "The scope of the Limited Access Role"
},
"tags": {
"type": "array",
"items": {
- "type": "object",
- "properties": {
- "tag": {
- "type": "string",
- "description": "The name of the tag"
- },
- "access": {
- "type": "string",
- "enum": [
- "full",
- "guest-ambassador",
- "monitor-only",
- "read-only"
- ],
- "description": "The privilege of the SAML administrator on the tag. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'"
- }
- },
- "required": [
- "tag",
- "access"
- ]
- },
- "description": "The list of tags that the SAML administrator has privileges on"
- },
- "networks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The network ID"
- },
- "access": {
- "type": "string",
- "enum": [
- "full",
- "guest-ambassador",
- "monitor-only",
- "read-only",
- "ssid-admin"
- ],
- "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only' or 'ssid-admin'"
- }
- },
- "required": [
- "id",
- "access"
- ]
+ "type": "string"
},
- "description": "The list of networks that the SAML administrator has privileges on"
+ "description": "The tags of the Limited Access Role"
}
},
"example": {
- "role": "myrole",
- "orgAccess": "none",
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
- ],
+ "name": "sample name",
+ "scope": "all_tags",
"tags": [
- {
- "tag": "west",
- "access": "read-only"
- }
+ "tag"
]
},
"required": [
- "role",
- "orgAccess"
+ "name"
]
}
}
@@ -97091,41 +101593,60 @@
"content": {
"application/json": {
"schema": {
- "type": "object"
+ "type": "object",
+ "properties": {
+ "roleId": {
+ "type": "string",
+ "description": "The Id of the limited access role"
+ },
+ "name": {
+ "type": "string",
+ "description": "The name of the limited access role"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the limited access role"
+ }
+ }
},
"example": {
- "id": "1284392014819",
- "role": "myrole",
- "orgAccess": "none",
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
- ],
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
"tags": [
- {
- "tag": "west",
- "access": "read-only"
- }
+ "tag"
]
}
}
}
}
},
- "summary": "Create a SAML role",
+ "summary": "Create a Limited Access Role",
"tags": [
- "organizations",
+ "sm",
"configure",
- "samlRoles"
+ "admins",
+ "roles"
]
}
},
- "/organizations/{organizationId}/samlRoles/{samlRoleId}": {
+ "/organizations/{organizationId}/sm/admins/roles/{roleId}": {
"get": {
- "description": "Return a SAML role",
- "operationId": "getOrganizationSamlRole",
+ "description": "Return a Limited Access Role",
+ "operationId": "getOrganizationSmAdminsRole",
"parameters": [
{
"name": "organizationId",
@@ -97137,9 +101658,9 @@
"required": true
},
{
- "name": "samlRoleId",
+ "name": "roleId",
"in": "path",
- "description": "Saml role ID",
+ "description": "Role ID",
"schema": {
"type": "string"
},
@@ -97154,85 +101675,56 @@
"schema": {
"type": "object",
"properties": {
- "id": {
+ "roleId": {
"type": "string",
- "description": "ID associated with the SAML role"
+ "description": "The Id of the limited access role"
},
- "role": {
+ "name": {
"type": "string",
- "description": "The role of the SAML administrator"
+ "description": "The name of the limited access role"
},
- "orgAccess": {
+ "scope": {
"type": "string",
- "description": "The privilege of the SAML administrator on the organization"
- },
- "networks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The network ID"
- },
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the network"
- }
- }
- },
- "description": "The list of networks that the SAML administrator has privileges on"
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
},
"tags": {
"type": "array",
"items": {
- "type": "object",
- "properties": {
- "tag": {
- "type": "string",
- "description": "The name of the tag"
- },
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the tag"
- }
- }
+ "type": "string"
},
- "description": "The list of tags that the SAML administrator has privleges on"
+ "description": "The tags of the limited access role"
}
}
},
"example": {
- "id": "1284392014819",
- "role": "myrole",
- "orgAccess": "none",
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
- ],
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
"tags": [
- {
- "tag": "west",
- "access": "read-only"
- }
+ "tag"
]
}
}
}
}
},
- "summary": "Return a SAML role",
+ "summary": "Return a Limited Access Role",
"tags": [
- "organizations",
+ "sm",
"configure",
- "samlRoles"
+ "admins",
+ "roles"
]
},
"put": {
- "description": "Update a SAML role",
- "operationId": "updateOrganizationSamlRole",
+ "description": "Update a Limited Access Role",
+ "operationId": "updateOrganizationSmAdminsRole",
"parameters": [
{
"name": "organizationId",
@@ -97244,9 +101736,9 @@
"required": true
},
{
- "name": "samlRoleId",
+ "name": "roleId",
"in": "path",
- "description": "Saml role ID",
+ "description": "Role ID",
"schema": {
"type": "string"
},
@@ -97259,90 +101751,33 @@
"schema": {
"type": "object",
"properties": {
- "role": {
+ "name": {
"type": "string",
- "description": "The role of the SAML administrator"
+ "description": "The name of the Limited Access Role"
},
- "orgAccess": {
+ "scope": {
"type": "string",
"enum": [
- "enterprise",
- "full",
- "none",
- "read-only"
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
],
- "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise'"
+ "description": "The scope of the Limited Access Role"
},
"tags": {
"type": "array",
"items": {
- "type": "object",
- "properties": {
- "tag": {
- "type": "string",
- "description": "The name of the tag"
- },
- "access": {
- "type": "string",
- "enum": [
- "full",
- "guest-ambassador",
- "monitor-only",
- "read-only"
- ],
- "description": "The privilege of the SAML administrator on the tag. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'"
- }
- },
- "required": [
- "tag",
- "access"
- ]
- },
- "description": "The list of tags that the SAML administrator has privileges on"
- },
- "networks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The network ID"
- },
- "access": {
- "type": "string",
- "enum": [
- "full",
- "guest-ambassador",
- "monitor-only",
- "read-only",
- "ssid-admin"
- ],
- "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only' or 'ssid-admin'"
- }
- },
- "required": [
- "id",
- "access"
- ]
+ "type": "string"
},
- "description": "The list of networks that the SAML administrator has privileges on"
+ "description": "The tags of the Limited Access Role"
}
},
"example": {
- "role": "myrole",
- "orgAccess": "none",
+ "name": "sample name",
+ "scope": "all_tags",
"tags": [
- {
- "tag": "west",
- "access": "read-only"
- }
- ],
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
+ "tag"
]
}
}
@@ -97358,85 +101793,56 @@
"schema": {
"type": "object",
"properties": {
- "id": {
- "type": "string",
- "description": "ID associated with the SAML role"
- },
- "role": {
+ "roleId": {
"type": "string",
- "description": "The role of the SAML administrator"
+ "description": "The Id of the limited access role"
},
- "orgAccess": {
+ "name": {
"type": "string",
- "description": "The privilege of the SAML administrator on the organization"
+ "description": "The name of the limited access role"
},
- "networks": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "The network ID"
- },
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the network"
- }
- }
- },
- "description": "The list of networks that the SAML administrator has privileges on"
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all_tags",
+ "some",
+ "without_all_tags",
+ "without_some"
+ ],
+ "description": "The scope of the limited access role"
},
"tags": {
"type": "array",
"items": {
- "type": "object",
- "properties": {
- "tag": {
- "type": "string",
- "description": "The name of the tag"
- },
- "access": {
- "type": "string",
- "description": "The privilege of the SAML administrator on the tag"
- }
- }
+ "type": "string"
},
- "description": "The list of tags that the SAML administrator has privleges on"
+ "description": "The tags of the limited access role"
}
}
},
"example": {
- "id": "1284392014819",
- "role": "myrole",
- "orgAccess": "none",
- "networks": [
- {
- "id": "N_24329156",
- "access": "full"
- }
- ],
+ "roleId": "1284392014819",
+ "name": "sample name",
+ "scope": "all_tags",
"tags": [
- {
- "tag": "west",
- "access": "read-only"
- }
+ "tag"
]
}
}
}
}
},
- "summary": "Update a SAML role",
+ "summary": "Update a Limited Access Role",
"tags": [
- "organizations",
+ "sm",
"configure",
- "samlRoles"
+ "admins",
+ "roles"
]
},
"delete": {
- "description": "Remove a SAML role",
- "operationId": "deleteOrganizationSamlRole",
+ "description": "Delete a Limited Access Role",
+ "operationId": "deleteOrganizationSmAdminsRole",
"parameters": [
{
"name": "organizationId",
@@ -97448,9 +101854,9 @@
"required": true
},
{
- "name": "samlRoleId",
+ "name": "roleId",
"in": "path",
- "description": "Saml role ID",
+ "description": "Role ID",
"schema": {
"type": "string"
},
@@ -97462,18 +101868,19 @@
"description": "Successful operation"
}
},
- "summary": "Remove a SAML role",
+ "summary": "Delete a Limited Access Role",
"tags": [
- "organizations",
+ "sm",
"configure",
- "samlRoles"
+ "admins",
+ "roles"
]
}
},
- "/organizations/{organizationId}/sensor/readings/history": {
+ "/organizations/{organizationId}/sm/apnsCert": {
"get": {
- "description": "Return all reported readings from sensors in a given timespan, sorted by timestamp",
- "operationId": "getOrganizationSensorReadingsHistory",
+ "description": "Get the organization's APNS certificate",
+ "operationId": "getOrganizationSmApnsCert",
"parameters": [
{
"name": "organizationId",
@@ -97483,327 +101890,273 @@
"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": "t0",
- "in": "query",
- "description": "The beginning of the timespan for the data. The maximum lookback period is 365 days and 6 hours from today.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "t1",
- "in": "query",
- "description": "The end of the timespan for the data. t1 can be a maximum of 7 days after t0.",
- "schema": {
- "type": "string"
- }
- },
- {
- "name": "timespan",
- "in": "query",
- "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 7 days. The default is 2 hours.",
- "schema": {
- "type": "number",
- "format": "float",
- "maximum": 604800
- }
- },
- {
- "name": "networkIds",
- "in": "query",
- "description": "Optional parameter to filter readings by network.",
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "certificate": {
+ "type": "string",
+ "description": "Organization APNS Certificate used by devices to communication with Apple"
+ }
+ }
+ },
+ "example": {
+ "certificate": " -----BEGIN CERTIFICATE-----\n MIIFdjCCBF6gAwIBAgIIM/hhf5ww8MwwDQYJKoZIhvcNAQELBQAwgYwxQDA+BgNV\n BAMMN0FwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIDIgQ2VydGlmaWNhdGlv\n biBBdXRob3JpdHkxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9y\n aXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yMDAyMjYx\n ODIzNDJaFw0yMTAyMjUxODIzNDJaMIGPMUwwSgYKCZImiZPyLGQBAQw8Y29tLmFw\n cGxlLm1nbXQuRXh0ZXJuYWwuOTA3NDJhYmYtZDhhZC00MTc2LTllZmQtMGNiMzg1\n MTM1MGM0MTIwMAYDVQQDDClBUFNQOjkwNzQyYWJmLWQ4YWQtNDE3Ni05ZWZkLTBj\n YjM4NTEzNTBjNDELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n ggEKAoIBAQDANdpo62hfxkP1IpMPXuO1+xKekUkY+iYae6cRaP886bodUaH1OwCj\n Qd011u9Vng6m8I9rcLdIOS+IkFGKcTAHRYY3noqfEQUPyi5TN6yM1/mVYVoWZUnY\n TrNWqDN/HfRagdYfZyQ7kAtOY2K8TF78HLLqQm7ez2+r4qibumoSli9+qCzKwDW/\n hbx7JTeMlbYkhLTFgBkRxlp+usKymsLKm8D7kdbxtct4mx6p9z1FiNu4U1Hi/PgK\n I/V3zHD4Ww7SzTICiLdCPeAmt042JvXAMQi0qhzrEdDiapmWwUC9xiiORN0BTIRA\n T+DddTx8Xcly4wj9vQFdGUGLrJnzB3xZAgMBAAGjggHVMIIB0TAJBgNVHRMEAjAA\n MB8GA1UdIwQYMBaAFPe+fCFgkds9G3vYOjKBad+ebH+bMIIBHAYDVR0gBIIBEzCC\n AQ8wggELBgkqhkiG92NkBQEwgf0wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ug\n b24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRh\n bmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNv\n bmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmlj\n YXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYIKwYBBQUHAgEWKWh0dHA6Ly93\n d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5MBMGA1UdJQQMMAoGCCsG\n AQUFBwMCMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmwuYXBwbGUuY29tL2Fh\n aTJjYS5jcmwwHQYDVR0OBBYEFDj4Jizt9bQX7dn3ypIanvaNIy8fMAsGA1UdDwQE\n AwIHgDAQBgoqhkiG92NkBgMCBAIFADANBgkqhkiG9w0BAQsFAAOCAQEARmLmy4Mh\n 80hTBHMj2whrC2LR0dIe2ngAUwYGSocyPZOzlGZYntUvpsNGwflbWSPNxFpVF15z\n exEcLPKM4f9KGdM27s/m/x1Es2us9Vve+wS+N0C84zMC++FJBIxj3yAINXqSpYJv\n bA5wccHlzP9F9Ks7sVNQB8y0mibYahtxVV959gC4522t5SRaEEsd82oTCtXE2Ljg\n fQ1IAmWi4MuMSPwp26oDSwun8Wxyx+sfi/it9YWxD36Ga9mrfIjK1WIHyhge0HHr\n olnvMfxgwI9E5gGV/4bQzPlmsHdz+/pLupWMkALaAxI9D7ajUG7iyyjJBCOpsr1s\n FjDvo6WUkaqMHA==\n -----END CERTIFICATE-----\n"
+ }
}
}
- },
+ }
+ },
+ "summary": "Get the organization's APNS certificate",
+ "tags": [
+ "sm",
+ "configure",
+ "apnsCert"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/sm/sentry/policies/assignments": {
+ "put": {
+ "description": "Update an Organizations Sentry Policies using the provided list. Sentry Policies are ordered in descending order of priority (i.e. highest priority at the bottom, this is opposite the Dashboard UI). Policies not present in the request will be deleted.",
+ "operationId": "updateOrganizationSmSentryPoliciesAssignments",
+ "parameters": [
{
- "name": "serials",
- "in": "query",
- "description": "Optional parameter to filter readings by sensor.",
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
"schema": {
- "type": "array",
- "items": {
- "type": "string"
+ "type": "string"
+ },
+ "required": true
+ }
+ ],
+ "requestBody": {
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network"
+ },
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Sentry Policy Id, if updating an existing Sentry Policy"
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags for the Sentry Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Group Policy Id"
+ }
+ },
+ "required": [
+ "smNetworkId",
+ "scope",
+ "tags",
+ "groupPolicyId"
+ ]
+ },
+ "description": "Array of Sentry Group Policies for the Network"
+ }
+ },
+ "required": [
+ "networkId"
+ ]
+ },
+ "description": "Sentry Group Policies for the Organization keyed by Network Id"
+ }
+ },
+ "example": {
+ "items": [
+ {
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "smNetworkId": "N_24329156",
+ "scope": "withAny",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "groupPolicyId": "1284392014819"
+ }
+ ]
+ }
+ ]
+ },
+ "required": [
+ "items"
+ ]
}
}
},
- {
- "name": "metrics",
- "in": "query",
- "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are battery, button, door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water.",
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- ],
+ "required": true
+ },
"responses": {
"200": {
"description": "Successful operation",
"content": {
"application/json": {
"schema": {
- "type": "array",
- "items": {
- "type": "object",
- "properties": {
- "serial": {
- "type": "string",
- "description": "Serial number of the sensor that took the reading."
- },
- "network": {
+ "type": "object",
+ "properties": {
+ "items": {
+ "type": "array",
+ "items": {
"type": "object",
"properties": {
- "id": {
+ "networkId": {
"type": "string",
- "description": "ID of the network."
+ "description": "The Id of the Network"
},
- "name": {
- "type": "string",
- "description": "Name of the network."
- }
- },
- "description": "Network to which the sensor belongs."
- },
- "ts": {
- "type": "string",
- "description": "Time at which the reading occurred, in ISO8601 format."
- },
- "metric": {
- "type": "string",
- "enum": [
- "battery",
- "button",
- "door",
- "humidity",
- "indoorAirQuality",
- "noise",
- "pm25",
- "temperature",
- "tvoc",
- "water"
- ],
- "description": "Type of sensor reading."
- },
- "battery": {
- "type": "object",
- "properties": {
- "percentage": {
- "type": "integer",
- "description": "Remaining battery life."
- }
- },
- "description": "Reading for the 'battery' metric. This will only be present if the 'metric' property equals 'battery'."
- },
- "button": {
- "type": "object",
- "properties": {
- "pressType": {
- "type": "string",
- "enum": [
- "long",
- "short"
- ],
- "description": "Type of button press that occurred."
- }
- },
- "description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
- },
- "door": {
- "type": "object",
- "properties": {
- "open": {
- "type": "boolean",
- "description": "True if the door is open."
- }
- },
- "description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
- },
- "humidity": {
- "type": "object",
- "properties": {
- "relativePercentage": {
- "type": "integer",
- "description": "Humidity reading in %RH."
- }
- },
- "description": "Reading for the 'humidity' metric. This will only be present if the 'metric' property equals 'humidity'."
- },
- "indoorAirQuality": {
- "type": "object",
- "properties": {
- "score": {
- "type": "integer",
- "description": "Indoor air quality score between 0 and 100."
- }
- },
- "description": "Reading for the 'indoorAirQuality' metric. This will only be present if the 'metric' property equals 'indoorAirQuality'."
- },
- "noise": {
- "type": "object",
- "properties": {
- "ambient": {
- "type": "object",
- "properties": {
- "level": {
- "type": "integer",
- "description": "Ambient noise reading in adjusted decibels."
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Id of the Sentry Policy"
+ },
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network the Sentry Policy is associated with. In a locale, this should be the Wireless Group if present, otherwise the Wired Group."
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network the Sentry Policy is assigned to"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Sentry Policy"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "groupNumber": {
+ "type": "string",
+ "description": "The number of the Group Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Id of the Group Policy. This is associated with the network specified by the networkId."
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the Sentry Policy"
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The creation time of the Sentry Policy"
+ },
+ "lastUpdatedAt": {
+ "type": "string",
+ "description": "The last update time of the Sentry Policy"
+ }
}
},
- "description": "Ambient noise reading."
- }
- },
- "description": "Reading for the 'noise' metric. This will only be present if the 'metric' property equals 'noise'."
- },
- "pm25": {
- "type": "object",
- "properties": {
- "concentration": {
- "type": "integer",
- "description": "PM2.5 reading in micrograms per cubic meter."
- }
- },
- "description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
- },
- "temperature": {
- "type": "object",
- "properties": {
- "fahrenheit": {
- "type": "number",
- "format": "float",
- "description": "Temperature reading in degrees Fahrenheit."
- },
- "celsius": {
- "type": "number",
- "format": "float",
- "description": "Temperature reading in degrees Celsius."
- }
- },
- "description": "Reading for the 'temperature' metric. This will only be present if the 'metric' property equals 'temperature'."
- },
- "tvoc": {
- "type": "object",
- "properties": {
- "concentration": {
- "type": "integer",
- "description": "TVOC reading in micrograms per cubic meter."
+ "description": "Array of Sentry Group Policies for the Network"
}
- },
- "description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
+ }
},
- "water": {
- "type": "object",
- "properties": {
- "present": {
- "type": "boolean",
- "description": "True if water is detected."
- }
- },
- "description": "Reading for the 'water' metric. This will only be present if the 'metric' property equals 'water'."
- }
+ "description": "Sentry Group Policies for the Organization keyed by Network Id"
}
}
},
- "example": [
- {
- "serial": "Q234-ABCD-5678",
- "network": {
- "id": "N_24329156",
- "name": "Main Office"
- },
- "ts": "2021-10-18T23:54:48Z",
- "metric": "temperature",
- "battery": {
- "percentage": 91
- },
- "button": {
- "pressType": "short"
- },
- "door": {
- "open": true
- },
- "humidity": {
- "relativePercentage": 34
- },
- "indoorAirQuality": {
- "score": 89
- },
- "noise": {
- "ambient": {
- "level": 45
- }
- },
- "pm25": {
- "concentration": 100
- },
- "temperature": {
- "fahrenheit": 77.81,
- "celsius": 25.45
- },
- "tvoc": {
- "concentration": 100
- },
- "water": {
- "present": true
+ "example": {
+ "items": [
+ {
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "networkId": "N_24329156",
+ "smNetworkId": "N_24329156",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "scope": "withAny",
+ "groupNumber": "1234",
+ "groupPolicyId": "1284392014819",
+ "priority": "1",
+ "createdAt": "2018-05-12T00:00:00Z",
+ "lastUpdatedAt": "2018-05-12T00:00:00Z"
+ }
+ ]
}
- }
- ]
- }
- },
- "headers": {
- "Link": {
- "schema": {
- "type": "string"
- },
- "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ ]
+ }
}
}
}
},
- "summary": "Return all reported readings from sensors in a given timespan, sorted by timestamp",
+ "summary": "Update an Organizations Sentry Policies using the provided list",
"tags": [
- "sensor",
- "monitor",
- "readings",
- "history"
+ "sm",
+ "configure",
+ "sentry",
+ "policies",
+ "assignments"
]
}
},
- "/organizations/{organizationId}/sensor/readings/latest": {
+ "/organizations/{organizationId}/sm/sentry/policies/assignments/byNetwork": {
"get": {
- "description": "Return the latest available reading for each metric from each sensor, sorted by sensor serial",
- "operationId": "getOrganizationSensorReadingsLatest",
+ "description": "List the Sentry Policies for an organization ordered in ascending order of priority",
+ "operationId": "getOrganizationSmSentryPoliciesAssignmentsByNetwork",
"parameters": [
{
"name": "organizationId",
@@ -97817,7 +102170,7 @@
{
"name": "perPage",
"in": "query",
- "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.",
+ "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.",
"schema": {
"type": "integer"
}
@@ -97841,29 +102194,7 @@
{
"name": "networkIds",
"in": "query",
- "description": "Optional parameter to filter readings by network.",
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- {
- "name": "serials",
- "in": "query",
- "description": "Optional parameter to filter readings by sensor.",
- "schema": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- },
- {
- "name": "metrics",
- "in": "query",
- "description": "Types of sensor readings to retrieve. If no metrics are supplied, all available types of readings will be retrieved. Allowed values are battery, button, door, humidity, indoorAirQuality, noise, pm25, temperature, tvoc, and water.",
+ "description": "Optional parameter to filter Sentry Policies by Network Id",
"schema": {
"type": "array",
"items": {
@@ -97882,218 +102213,140 @@
"items": {
"type": "object",
"properties": {
- "serial": {
- "type": "string",
- "description": "Serial number of the sensor that took the readings."
- },
- "network": {
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "ID of the network."
- },
- "name": {
- "type": "string",
- "description": "Name of the network."
- }
- },
- "description": "Network to which the sensor belongs."
- },
- "readings": {
+ "items": {
"type": "array",
"items": {
"type": "object",
"properties": {
- "ts": {
+ "networkId": {
"type": "string",
- "description": "Time at which the reading occurred, in ISO8601 format."
+ "description": "The Id of the Network"
},
- "metric": {
- "type": "string",
- "enum": [
- "battery",
- "button",
- "door",
- "humidity",
- "indoorAirQuality",
- "noise",
- "pm25",
- "temperature",
- "tvoc",
- "water"
- ],
- "description": "Type of sensor reading."
- },
- "battery": {
- "type": "object",
- "properties": {
- "percentage": {
- "type": "integer",
- "description": "Remaining battery life."
- }
- },
- "description": "Reading for the 'battery' metric. This will only be present if the 'metric' property equals 'battery'."
- },
- "button": {
- "type": "object",
- "properties": {
- "pressType": {
- "type": "string",
- "enum": [
- "long",
- "short"
- ],
- "description": "Type of button press that occurred."
- }
- },
- "description": "Reading for the 'button' metric. This will only be present if the 'metric' property equals 'button'."
- },
- "door": {
- "type": "object",
- "properties": {
- "open": {
- "type": "boolean",
- "description": "True if the door is open."
- }
- },
- "description": "Reading for the 'door' metric. This will only be present if the 'metric' property equals 'door'."
- },
- "humidity": {
- "type": "object",
- "properties": {
- "relativePercentage": {
- "type": "integer",
- "description": "Humidity reading in %RH."
- }
- },
- "description": "Reading for the 'humidity' metric. This will only be present if the 'metric' property equals 'humidity'."
- },
- "indoorAirQuality": {
- "type": "object",
- "properties": {
- "score": {
- "type": "integer",
- "description": "Indoor air quality score between 0 and 100."
- }
- },
- "description": "Reading for the 'indoorAirQuality' metric. This will only be present if the 'metric' property equals 'indoorAirQuality'."
- },
- "noise": {
- "type": "object",
- "properties": {
- "ambient": {
- "type": "object",
- "properties": {
- "level": {
- "type": "integer",
- "description": "Ambient noise reading in adjusted decibels."
- }
+ "policies": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "policyId": {
+ "type": "string",
+ "description": "The Id of the Sentry Policy"
},
- "description": "Ambient noise reading."
- }
- },
- "description": "Reading for the 'noise' metric. This will only be present if the 'metric' property equals 'noise'."
- },
- "pm25": {
- "type": "object",
- "properties": {
- "concentration": {
- "type": "integer",
- "description": "PM2.5 reading in micrograms per cubic meter."
+ "networkId": {
+ "type": "string",
+ "description": "The Id of the Network the Sentry Policy is associated with. In a locale, this should be the Wireless Group if present, otherwise the Wired Group."
+ },
+ "smNetworkId": {
+ "type": "string",
+ "description": "The Id of the Systems Manager Network the Sentry Policy is assigned to"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "The tags of the Sentry Policy"
+ },
+ "scope": {
+ "type": "string",
+ "enum": [
+ "all",
+ "none",
+ "withAll",
+ "withAny",
+ "withoutAll",
+ "withoutAny"
+ ],
+ "description": "The scope of the Sentry Policy"
+ },
+ "groupNumber": {
+ "type": "string",
+ "description": "The number of the Group Policy"
+ },
+ "groupPolicyId": {
+ "type": "string",
+ "description": "The Id of the Group Policy. This is associated with the network specified by the networkId."
+ },
+ "priority": {
+ "type": "string",
+ "description": "The priority of the Sentry Policy"
+ },
+ "createdAt": {
+ "type": "string",
+ "description": "The creation time of the Sentry Policy"
+ },
+ "lastUpdatedAt": {
+ "type": "string",
+ "description": "The last update time of the Sentry Policy"
+ }
}
},
- "description": "Reading for the 'pm25' metric. This will only be present if the 'metric' property equals 'pm25'."
- },
- "temperature": {
- "type": "object",
- "properties": {
- "fahrenheit": {
- "type": "number",
- "format": "float",
- "description": "Temperature reading in degrees Fahrenheit."
+ "description": "Array of Sentry Group Policies for the Network"
+ }
+ }
+ },
+ "description": "Sentry Group Policies for the Organization keyed by the Network or Locale Id the Policy belongs to"
+ },
+ "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"
+ }
},
- "celsius": {
- "type": "number",
- "format": "float",
- "description": "Temperature reading in degrees Celsius."
- }
- },
- "description": "Reading for the 'temperature' metric. This will only be present if the 'metric' property equals 'temperature'."
- },
- "tvoc": {
- "type": "object",
- "properties": {
- "concentration": {
- "type": "integer",
- "description": "TVOC reading in micrograms per cubic meter."
- }
- },
- "description": "Reading for the 'tvoc' metric. This will only be present if the 'metric' property equals 'tvoc'."
+ "description": "Counts relating to the paginated items"
+ }
},
- "water": {
- "type": "object",
- "properties": {
- "present": {
- "type": "boolean",
- "description": "True if water is detected."
- }
- },
- "description": "Reading for the 'water' metric. This will only be present if the 'metric' property equals 'water'."
- }
+ "description": "Counts relating to the paginated dataset"
}
},
- "description": "Array of latest readings from the sensor. Each object represents a single reading for a single metric."
+ "description": "Metadata relevant to the paginated dataset"
}
}
}
},
"example": [
{
- "serial": "Q234-ABCD-5678",
- "network": {
- "id": "N_24329156",
- "name": "Main Office"
- },
- "readings": [
+ "items": [
{
- "ts": "2021-10-18T23:54:48Z",
- "metric": "temperature",
- "battery": {
- "percentage": 91
- },
- "button": {
- "pressType": "short"
- },
- "door": {
- "open": true
- },
- "humidity": {
- "relativePercentage": 34
- },
- "indoorAirQuality": {
- "score": 89
- },
- "noise": {
- "ambient": {
- "level": 45
+ "networkId": "N_24329156",
+ "policies": [
+ {
+ "policyId": "1284392014819",
+ "networkId": "N_24329156",
+ "smNetworkId": "N_24329156",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "scope": "withAny",
+ "groupNumber": "1234",
+ "groupPolicyId": "1284392014819",
+ "priority": "1",
+ "createdAt": "2018-05-12T00:00:00Z",
+ "lastUpdatedAt": "2018-05-12T00:00:00Z"
}
- },
- "pm25": {
- "concentration": 100
- },
- "temperature": {
- "fahrenheit": 77.81,
- "celsius": 25.45
- },
- "tvoc": {
- "concentration": 100
- },
- "water": {
- "present": true
+ ]
+ }
+ ],
+ "meta": {
+ "counts": {
+ "items": {
+ "total": 10,
+ "remaining": 0
}
}
- ]
+ }
}
]
}
@@ -98108,56 +102361,14 @@
}
}
},
- "summary": "Return the latest available reading for each metric from each sensor, sorted by sensor serial",
- "tags": [
- "sensor",
- "monitor",
- "readings",
- "latest"
- ]
- }
- },
- "/organizations/{organizationId}/sm/apnsCert": {
- "get": {
- "description": "Get the organization's APNS certificate",
- "operationId": "getOrganizationSmApnsCert",
- "parameters": [
- {
- "name": "organizationId",
- "in": "path",
- "description": "Organization ID",
- "schema": {
- "type": "string"
- },
- "required": true
- }
- ],
- "responses": {
- "200": {
- "description": "Successful operation",
- "content": {
- "application/json": {
- "schema": {
- "type": "object",
- "properties": {
- "certificate": {
- "type": "string",
- "description": "Organization APNS Certificate used by devices to communication with Apple"
- }
- }
- },
- "example": {
- "certificate": " -----BEGIN CERTIFICATE-----\n MIIFdjCCBF6gAwIBAgIIM/hhf5ww8MwwDQYJKoZIhvcNAQELBQAwgYwxQDA+BgNV\n BAMMN0FwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIDIgQ2VydGlmaWNhdGlv\n biBBdXRob3JpdHkxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9y\n aXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yMDAyMjYx\n ODIzNDJaFw0yMTAyMjUxODIzNDJaMIGPMUwwSgYKCZImiZPyLGQBAQw8Y29tLmFw\n cGxlLm1nbXQuRXh0ZXJuYWwuOTA3NDJhYmYtZDhhZC00MTc2LTllZmQtMGNiMzg1\n MTM1MGM0MTIwMAYDVQQDDClBUFNQOjkwNzQyYWJmLWQ4YWQtNDE3Ni05ZWZkLTBj\n YjM4NTEzNTBjNDELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw\n ggEKAoIBAQDANdpo62hfxkP1IpMPXuO1+xKekUkY+iYae6cRaP886bodUaH1OwCj\n Qd011u9Vng6m8I9rcLdIOS+IkFGKcTAHRYY3noqfEQUPyi5TN6yM1/mVYVoWZUnY\n TrNWqDN/HfRagdYfZyQ7kAtOY2K8TF78HLLqQm7ez2+r4qibumoSli9+qCzKwDW/\n hbx7JTeMlbYkhLTFgBkRxlp+usKymsLKm8D7kdbxtct4mx6p9z1FiNu4U1Hi/PgK\n I/V3zHD4Ww7SzTICiLdCPeAmt042JvXAMQi0qhzrEdDiapmWwUC9xiiORN0BTIRA\n T+DddTx8Xcly4wj9vQFdGUGLrJnzB3xZAgMBAAGjggHVMIIB0TAJBgNVHRMEAjAA\n MB8GA1UdIwQYMBaAFPe+fCFgkds9G3vYOjKBad+ebH+bMIIBHAYDVR0gBIIBEzCC\n AQ8wggELBgkqhkiG92NkBQEwgf0wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ug\n b24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRh\n bmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNv\n bmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmlj\n YXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wNQYIKwYBBQUHAgEWKWh0dHA6Ly93\n d3cuYXBwbGUuY29tL2NlcnRpZmljYXRlYXV0aG9yaXR5MBMGA1UdJQQMMAoGCCsG\n AQUFBwMCMDAGA1UdHwQpMCcwJaAjoCGGH2h0dHA6Ly9jcmwuYXBwbGUuY29tL2Fh\n aTJjYS5jcmwwHQYDVR0OBBYEFDj4Jizt9bQX7dn3ypIanvaNIy8fMAsGA1UdDwQE\n AwIHgDAQBgoqhkiG92NkBgMCBAIFADANBgkqhkiG9w0BAQsFAAOCAQEARmLmy4Mh\n 80hTBHMj2whrC2LR0dIe2ngAUwYGSocyPZOzlGZYntUvpsNGwflbWSPNxFpVF15z\n exEcLPKM4f9KGdM27s/m/x1Es2us9Vve+wS+N0C84zMC++FJBIxj3yAINXqSpYJv\n bA5wccHlzP9F9Ks7sVNQB8y0mibYahtxVV959gC4522t5SRaEEsd82oTCtXE2Ljg\n fQ1IAmWi4MuMSPwp26oDSwun8Wxyx+sfi/it9YWxD36Ga9mrfIjK1WIHyhge0HHr\n olnvMfxgwI9E5gGV/4bQzPlmsHdz+/pLupWMkALaAxI9D7ajUG7iyyjJBCOpsr1s\n FjDvo6WUkaqMHA==\n -----END CERTIFICATE-----\n"
- }
- }
- }
- }
- },
- "summary": "Get the organization's APNS certificate",
+ "summary": "List the Sentry Policies for an organization ordered in ascending order of priority",
"tags": [
"sm",
"configure",
- "apnsCert"
+ "sentry",
+ "policies",
+ "assignments",
+ "byNetwork"
]
}
},
@@ -99134,39 +103345,171 @@
"items": {
"type": "object",
"properties": {
- "name": {
- "type": "string",
- "description": "Name of the device"
- },
+ "name": {
+ "type": "string",
+ "description": "Name of the device"
+ },
+ "model": {
+ "type": "string",
+ "description": "Model of the device"
+ },
+ "serial": {
+ "type": "string",
+ "description": "Serial number of the device"
+ },
+ "mac": {
+ "type": "string",
+ "description": "Mac address of the device"
+ },
+ "productType": {
+ "type": "string",
+ "description": "Product type of the device"
+ },
+ "network": {
+ "type": "object",
+ "properties": {
+ "name": {
+ "type": "string",
+ "description": "Network name"
+ },
+ "id": {
+ "type": "string",
+ "description": "Network id"
+ }
+ },
+ "description": "Network info"
+ },
+ "usage": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "number",
+ "format": "float",
+ "description": "Total data usage of the device"
+ },
+ "percentage": {
+ "type": "number",
+ "format": "float",
+ "description": "Data usage of the device by percentage"
+ }
+ },
+ "description": "Data usage of the device"
+ },
+ "clients": {
+ "type": "object",
+ "properties": {
+ "counts": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "description": "Total counts of clients"
+ }
+ },
+ "description": "Counts of clients"
+ }
+ },
+ "description": "Clients"
+ }
+ }
+ }
+ },
+ "example": [
+ {
+ "name": "My AP",
+ "model": "MR34",
+ "serial": "Q234-ABCD-5678",
+ "mac": "00:11:22:33:44:55",
+ "productType": "switch",
+ "network": {
+ "name": "Main Office",
+ "id": "N_24329156"
+ },
+ "usage": {
+ "total": 18000.111,
+ "percentage": 80.223456789
+ },
+ "clients": {
+ "counts": {
+ "total": 4
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ "summary": "Return metrics for organization's top 10 devices sorted by data usage over given time range",
+ "tags": [
+ "organizations",
+ "monitor",
+ "summary",
+ "top",
+ "devices",
+ "byUsage"
+ ]
+ }
+ },
+ "/organizations/{organizationId}/summary/top/devices/models/byUsage": {
+ "get": {
+ "description": "Return metrics for organization's top 10 device models sorted by data usage over given time range. Default unit is megabytes.",
+ "operationId": "getOrganizationSummaryTopDevicesModelsByUsage",
+ "parameters": [
+ {
+ "name": "organizationId",
+ "in": "path",
+ "description": "Organization ID",
+ "schema": {
+ "type": "string"
+ },
+ "required": true
+ },
+ {
+ "name": "t0",
+ "in": "query",
+ "description": "The beginning of the timespan for the data.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "t1",
+ "in": "query",
+ "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.",
+ "schema": {
+ "type": "string"
+ }
+ },
+ {
+ "name": "timespan",
+ "in": "query",
+ "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 31 days. The default is 1 day.",
+ "schema": {
+ "type": "number",
+ "format": "float",
+ "minimum": 28800,
+ "maximum": 2678400
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Successful operation",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
"model": {
"type": "string",
- "description": "Model of the device"
- },
- "serial": {
- "type": "string",
- "description": "Serial number of the device"
- },
- "mac": {
- "type": "string",
- "description": "Mac address of the device"
- },
- "productType": {
- "type": "string",
- "description": "Product type of the device"
+ "description": "The device model"
},
- "network": {
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Network name"
- },
- "id": {
- "type": "string",
- "description": "Network id"
- }
- },
- "description": "Network info"
+ "count": {
+ "type": "integer",
+ "description": "Total number of devices per model"
},
"usage": {
"type": "object",
@@ -99174,54 +103517,26 @@
"total": {
"type": "number",
"format": "float",
- "description": "Total data usage of the device"
+ "description": "Total usage in megabytes"
},
- "percentage": {
+ "average": {
"type": "number",
"format": "float",
- "description": "Data usage of the device by percentage"
- }
- },
- "description": "Data usage of the device"
- },
- "clients": {
- "type": "object",
- "properties": {
- "counts": {
- "type": "object",
- "properties": {
- "total": {
- "type": "integer",
- "description": "Total counts of clients"
- }
- },
- "description": "Counts of clients"
+ "description": "Average usage in megabytes"
}
},
- "description": "Clients"
+ "description": "Usage info in megabytes"
}
}
}
},
"example": [
{
- "name": "My AP",
"model": "MR34",
- "serial": "Q234-ABCD-5678",
- "mac": "00:11:22:33:44:55",
- "productType": "switch",
- "network": {
- "name": "Main Office",
- "id": "N_24329156"
- },
+ "count": 2,
"usage": {
- "total": 18000.111,
- "percentage": 80.223456789
- },
- "clients": {
- "counts": {
- "total": 4
- }
+ "total": 2000.0,
+ "average": 1000.0
}
}
]
@@ -99229,21 +103544,22 @@
}
}
},
- "summary": "Return metrics for organization's top 10 devices sorted by data usage over given time range",
+ "summary": "Return metrics for organization's top 10 device models sorted by data usage over given time range",
"tags": [
"organizations",
"monitor",
"summary",
"top",
"devices",
+ "models",
"byUsage"
]
}
},
- "/organizations/{organizationId}/summary/top/devices/models/byUsage": {
+ "/organizations/{organizationId}/summary/top/networks/byStatus": {
"get": {
- "description": "Return metrics for organization's top 10 device models sorted by data usage over given time range. Default unit is megabytes.",
- "operationId": "getOrganizationSummaryTopDevicesModelsByUsage",
+ "description": "List the client and status overview information for the networks in an organization. Usage is measured in kilobytes and from the last seven days.",
+ "operationId": "getOrganizationSummaryTopNetworksByStatus",
"parameters": [
{
"name": "organizationId",
@@ -99255,30 +103571,27 @@
"required": true
},
{
- "name": "t0",
+ "name": "perPage",
"in": "query",
- "description": "The beginning of the timespan for the data.",
+ "description": "The number of entries per page returned. Acceptable range is 3 - 5000.",
"schema": {
- "type": "string"
+ "type": "integer"
}
},
{
- "name": "t1",
+ "name": "startingAfter",
"in": "query",
- "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.",
+ "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": "timespan",
+ "name": "endingBefore",
"in": "query",
- "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 31 days. The default is 1 day.",
+ "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": "number",
- "format": "float",
- "minimum": 28800,
- "maximum": 2678400
+ "type": "string"
}
}
],
@@ -99292,56 +103605,202 @@
"items": {
"type": "object",
"properties": {
- "model": {
+ "networkId": {
"type": "string",
- "description": "The device model"
+ "description": "Network identifier"
},
- "count": {
- "type": "integer",
- "description": "Total number of devices per model"
+ "name": {
+ "type": "string",
+ "description": "Network name"
},
- "usage": {
+ "url": {
+ "type": "string",
+ "description": "Network clients list URL"
+ },
+ "tags": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Network tags"
+ },
+ "clients": {
"type": "object",
"properties": {
- "total": {
- "type": "number",
- "format": "float",
- "description": "Total usage in megabytes"
+ "counts": {
+ "type": "object",
+ "properties": {
+ "total": {
+ "type": "integer",
+ "description": "Total count of clients in network"
+ }
+ },
+ "description": "Network client counts"
},
- "average": {
- "type": "number",
- "format": "float",
- "description": "Average usage in megabytes"
+ "usage": {
+ "type": "object",
+ "properties": {
+ "upstream": {
+ "type": "number",
+ "format": "float",
+ "description": "Total upstream usage in network, in KB"
+ },
+ "downstream": {
+ "type": "number",
+ "format": "float",
+ "description": "Total downstream usage in network, in KB"
+ }
+ },
+ "description": "Network client usage data"
}
},
- "description": "Usage info in megabytes"
+ "description": "Network clients data"
+ },
+ "statuses": {
+ "type": "object",
+ "properties": {
+ "overall": {
+ "type": "string",
+ "description": "Overall status of network"
+ },
+ "byProductType": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "productType": {
+ "type": "string",
+ "description": "Product type"
+ },
+ "counts": {
+ "type": "object",
+ "properties": {
+ "online": {
+ "type": "integer",
+ "description": "Count of online devices"
+ },
+ "offline": {
+ "type": "integer",
+ "description": "Count of offline devices"
+ },
+ "alerting": {
+ "type": "integer",
+ "description": "Count of alerting devices"
+ },
+ "dormant": {
+ "type": "integer",
+ "description": "Count of dormant devices"
+ }
+ },
+ "description": "Counts of devices by status"
+ }
+ }
+ },
+ "description": "List of status counts by product type"
+ }
+ },
+ "description": "Network device statuses"
+ },
+ "devices": {
+ "type": "object",
+ "properties": {
+ "byProductType": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "properties": {
+ "productType": {
+ "type": "string",
+ "description": "Product type"
+ },
+ "url": {
+ "type": "string",
+ "description": "URL to clients list for the relevant product type"
+ }
+ }
+ },
+ "description": "URLs by product type"
+ }
+ },
+ "description": "Network device information"
+ },
+ "productTypes": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "description": "Product types in network"
}
}
}
},
"example": [
{
- "model": "MR34",
- "count": 2,
- "usage": {
- "total": 2000.0,
- "average": 1000.0
- }
+ "networkId": "N_24329156",
+ "name": "Main Office",
+ "url": "https://n1.meraki.com//n//manage/nodes/list",
+ "tags": [
+ "tag1",
+ "tag2"
+ ],
+ "clients": {
+ "counts": {
+ "total": 72
+ },
+ "usage": {
+ "upstream": 3732658.44,
+ "downstream": 983732658.87
+ }
+ },
+ "statuses": {
+ "overall": "online",
+ "byProductType": [
+ {
+ "productType": "wireless",
+ "counts": {
+ "online": 2,
+ "offline": 1,
+ "alerting": 0,
+ "dormant": 3
+ }
+ }
+ ]
+ },
+ "devices": {
+ "byProductType": [
+ {
+ "productType": "wireless",
+ "url": "https://n1.meraki.com//n//manage/nodes/new_list/000000000000"
+ }
+ ]
+ },
+ "productTypes": [
+ "appliance",
+ "switch",
+ "wireless"
+ ]
}
]
}
+ },
+ "headers": {
+ "Link": {
+ "schema": {
+ "type": "string"
+ },
+ "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests."
+ }
}
}
},
- "summary": "Return metrics for organization's top 10 device models sorted by data usage over given time range",
+ "summary": "List the client and status overview information for the networks in an organization",
"tags": [
"organizations",
"monitor",
"summary",
"top",
- "devices",
- "models",
- "byUsage"
+ "networks",
+ "byStatus"
]
}
},
@@ -100082,6 +104541,20 @@
"format": "date-time",
"description": "Last reported time for the device"
},
+ "highAvailability": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Indicates whether High Availability is enabled for the device. For devices that do not support HA, this will be 'false'"
+ },
+ "role": {
+ "type": "string",
+ "description": "The HA role of the device on the network. For devices that do not support HA, this will be 'primary'"
+ }
+ },
+ "description": "Device High Availability Capabilities"
+ },
"uplinks": {
"type": "array",
"items": {
@@ -100187,6 +104660,10 @@
"serial": "Q234-ABCD-5678",
"model": "MX68C",
"lastReportedAt": "2018-02-11T00:00:00Z",
+ "highAvailability": {
+ "enabled": true,
+ "role": "primary"
+ },
"uplinks": [
{
"interface": "wan1",
@@ -102615,9 +107092,15 @@
{
"name": "applications"
},
+ {
+ "name": "areas"
+ },
{
"name": "arpInspection"
},
+ {
+ "name": "arpTable"
+ },
{
"name": "artifacts"
},
@@ -102648,9 +107131,15 @@
{
"name": "bonjourForwarding"
},
+ {
+ "name": "boundaries"
+ },
{
"name": "brandingPolicies"
},
+ {
+ "name": "byBoundary"
+ },
{
"name": "byClient"
},
@@ -102669,6 +107158,9 @@
{
"name": "byNetwork"
},
+ {
+ "name": "byStatus"
+ },
{
"name": "bySwitch"
},
@@ -102681,6 +107173,9 @@
{
"name": "bypassActivationLockAttempts"
},
+ {
+ "name": "cableTest"
+ },
{
"name": "callbacks"
},
@@ -102768,6 +107263,9 @@
{
"name": "desktopLogs"
},
+ {
+ "name": "detections"
+ },
{
"name": "deviceCommandLogs"
},
@@ -102906,6 +107404,9 @@
{
"name": "licensing"
},
+ {
+ "name": "lines"
+ },
{
"name": "linkAggregations"
},
@@ -103143,6 +107644,9 @@
{
"name": "sense"
},
+ {
+ "name": "sentry"
+ },
{
"name": "servers"
},
@@ -103332,6 +107836,9 @@
{
"name": "vppAccounts"
},
+ {
+ "name": "wakeOnLan"
+ },
{
"name": "warmSpare"
},
@@ -104177,6 +108684,30 @@
"resource": "/networks/{networkId}/appliance/vpn/siteToSiteVpn",
"operation": "update"
},
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Create a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles",
+ "operation": "create"
+ },
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Delete a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles/{roleId}",
+ "operation": "destroy"
+ },
+ {
+ "group": "Sm/actions/admins/role",
+ "summary": "Update a Limited Access Role",
+ "resource": "/organizations/{organizationId}/sm/admins/roles/{roleId}",
+ "operation": "update"
+ },
+ {
+ "group": "Sm/actions/sentry/policies/assignments",
+ "summary": "Update an Organizations Sentry Policies using the provided list. Sentry Policies are ordered in descending order of priority (i.e. highest priority at the bottom, this is opposite the Dashboard UI). Policies not present in the request will be deleted.",
+ "resource": "/organizations/{organizationId}/sm/sentry/policies/assignments",
+ "operation": "update"
+ },
{
"group": "Ssid",
"summary": "Update the attributes of an MR SSID",