{ "openapi": "3.0.1", "info": { "title": "Cisco Meraki Dashboard API \u2014 organizations", "description": "The organizations operations of the Cisco Meraki Dashboard API, split by product area from Cisco's published OpenAPI definition.", "version": "1.72.0", "contact": { "name": "Meraki Developer Community", "url": "https://meraki.io/community" }, "x-provenance": { "method": "harvested", "authored_by": "Cisco Meraki", "harvested_by": "API Evangelist", "harvested_on": "2026-07-31", "first_party": true, "note": "Split by first tag from Cisco's published spec3.json; operations unmodified.", "provider_published": true }, "x-evidence": [ { "type": "source", "url": "https://github.com/meraki/openapi/blob/master/openapi/spec3.json" }, { "type": "raw", "url": "https://raw.githubusercontent.com/meraki/openapi/master/openapi/spec3.json" }, { "type": "alternate", "url": "https://api.meraki.com/api/v1/openapiSpec" } ] }, "servers": [ { "url": "https://api.meraki.com/{basePath}", "variables": { "basePath": { "default": "api/v1" } } } ], "security": [ { "meraki_api_key": [] }, { "bearerAuth": [] } ], "tags": [ { "name": "acls", "description": "" }, { "name": "actionBatches", "description": "" }, { "name": "adaptivePolicy", "description": "" }, { "name": "adaptivePolicyGroups", "description": "" }, { "name": "addresses", "description": "" }, { "name": "admins", "description": "" }, { "name": "alertTypes", "description": "" }, { "name": "alerts", "description": "" }, { "name": "api", "description": "" }, { "name": "apiRequests", "description": "" }, { "name": "appliances", "description": "" }, { "name": "applicationCategories", "description": "" }, { "name": "applications", "description": "" }, { "name": "assets", "description": "" }, { "name": "assignments", "description": "" }, { "name": "autoLocate", "description": "" }, { "name": "availabilities", "description": "" }, { "name": "bands", "description": "" }, { "name": "bandwidthUsageHistory", "description": "" }, { "name": "brandingPolicies", "description": "" }, { "name": "bulk", "description": "" }, { "name": "bulkUpdate", "description": "" }, { "name": "byClient", "description": "" }, { "name": "byDevice", "description": "" }, { "name": "byEnergyUsage", "description": "" }, { "name": "byInterval", "description": "" }, { "name": "byModel", "description": "" }, { "name": "byNetwork", "description": "" }, { "name": "byPipeline", "description": "" }, { "name": "bySite", "description": "" }, { "name": "byStatus", "description": "" }, { "name": "byType", "description": "" }, { "name": "byUsage", "description": "" }, { "name": "byUtilization", "description": "" }, { "name": "callbacks", "description": "" }, { "name": "captures", "description": "" }, { "name": "categories", "description": "" }, { "name": "cellular", "description": "" }, { "name": "changeHistory", "description": "" }, { "name": "clients", "description": "" }, { "name": "configTemplates", "description": "" }, { "name": "configurationChanges", "description": "" }, { "name": "configure", "description": "" }, { "name": "connectivity", "description": "" }, { "name": "connectors", "description": "" }, { "name": "controller", "description": "" }, { "name": "data", "description": "" }, { "name": "deployable", "description": "" }, { "name": "deployed", "description": "" }, { "name": "details", "description": "" }, { "name": "devices", "description": "" }, { "name": "downloadUrl", "description": "" }, { "name": "earlyAccess", "description": "" }, { "name": "eligible", "description": "" }, { "name": "eox", "description": "" }, { "name": "features", "description": "" }, { "name": "firewall", "description": "" }, { "name": "firmware", "description": "" }, { "name": "floorPlans", "description": "" }, { "name": "geolocations", "description": "" }, { "name": "global", "description": "" }, { "name": "group", "description": "" }, { "name": "groups", "description": "" }, { "name": "historical", "description": "" }, { "name": "history", "description": "" }, { "name": "idps", "description": "" }, { "name": "integrations", "description": "" }, { "name": "inventory", "description": "" }, { "name": "jobs", "description": "" }, { "name": "licenses", "description": "" }, { "name": "loginSecurity", "description": "" }, { "name": "logs", "description": "" }, { "name": "manufacturers", "description": "" }, { "name": "memory", "description": "" }, { "name": "migrations", "description": "" }, { "name": "models", "description": "" }, { "name": "monitor", "description": "" }, { "name": "moves", "description": "" }, { "name": "networks", "description": "" }, { "name": "openapiSpec", "description": "" }, { "name": "optIns", "description": "" }, { "name": "orders", "description": "" }, { "name": "organizations", "description": "" }, { "name": "overview", "description": "" }, { "name": "overviews", "description": "" }, { "name": "packetCapture", "description": "" }, { "name": "pipelines", "description": "" }, { "name": "policies", "description": "" }, { "name": "policyObjects", "description": "" }, { "name": "powerModules", "description": "" }, { "name": "priorities", "description": "" }, { "name": "profiles", "description": "" }, { "name": "provisioning", "description": "" }, { "name": "regions", "description": "" }, { "name": "responseCodes", "description": "" }, { "name": "rest", "description": "" }, { "name": "roles", "description": "" }, { "name": "rules", "description": "" }, { "name": "rulesets", "description": "" }, { "name": "saml", "description": "" }, { "name": "samlRoles", "description": "" }, { "name": "sase", "description": "" }, { "name": "schedules", "description": "" }, { "name": "search", "description": "" }, { "name": "servers", "description": "" }, { "name": "settings", "description": "" }, { "name": "sites", "description": "" }, { "name": "snmp", "description": "" }, { "name": "splash", "description": "" }, { "name": "ssids", "description": "" }, { "name": "statuses", "description": "" }, { "name": "summary", "description": "" }, { "name": "swaps", "description": "" }, { "name": "switches", "description": "" }, { "name": "syslog", "description": "" }, { "name": "system", "description": "" }, { "name": "taxonomy", "description": "" }, { "name": "themes", "description": "" }, { "name": "top", "description": "" }, { "name": "towers", "description": "" }, { "name": "types", "description": "" }, { "name": "upgrades", "description": "" }, { "name": "uplinks", "description": "" }, { "name": "uplinksLossAndLatency", "description": "" }, { "name": "usage", "description": "" }, { "name": "webhooks", "description": "" }, { "name": "xdr", "description": "" } ], "components": { "securitySchemes": { "meraki_api_key": { "type": "apiKey", "name": "X-Cisco-Meraki-API-Key", "in": "header" }, "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "API Key" } } }, "paths": { "/organizations": { "get": { "description": "List the organizations that the user has privileges on", "operationId": "getOrganizations", "parameters": [ { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 9000. Default is 9000.", "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": "Organization ID" }, "name": { "type": "string", "description": "Organization name" }, "url": { "type": "string", "description": "Organization URL" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable API access" } }, "description": "API related settings" }, "licensing": { "type": "object", "properties": { "model": { "type": "string", "enum": [ "co-term", "per-device", "subscription" ], "description": "Organization licensing model. Can be 'co-term', 'per-device', or 'subscription'." } }, "description": "Licensing related settings" }, "cloud": { "type": "object", "properties": { "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of region" }, "host": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of location" } }, "description": "Where organization data is hosted" } }, "description": "Region info" } }, "description": "Data for this organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty. Details may be named 'MSP ID', 'customer number', 'IP restriction mode for API', or 'IP restriction mode for dashboard', if the organization admin has configured any." } }, "description": "Information about the organization's management system" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } } } }, "example": [ { "id": "2930418", "name": "My organization", "url": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "api": { "enabled": true }, "licensing": { "model": "co-term" }, "cloud": { "region": { "name": "North America", "host": { "name": "United States" } } }, "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } } ] } }, "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 organizations that the user has privileges on", "tags": [ "organizations", "configure" ] }, "post": { "description": "Create a new organization", "operationId": "createOrganization", "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty" } }, "description": "Information about the organization's management system" } }, "example": { "name": "My organization", "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Organization ID" }, "name": { "type": "string", "description": "Organization name" }, "url": { "type": "string", "description": "Organization URL" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable API access" } }, "description": "API related settings" }, "licensing": { "type": "object", "properties": { "model": { "type": "string", "enum": [ "co-term", "per-device", "subscription" ], "description": "Organization licensing model. Can be 'co-term', 'per-device', or 'subscription'." } }, "description": "Licensing related settings" }, "cloud": { "type": "object", "properties": { "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of region" }, "host": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of location" } }, "description": "Where organization data is hosted" } }, "description": "Region info" } }, "description": "Data for this organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty. Details may be named 'MSP ID', 'customer number', 'IP restriction mode for API', or 'IP restriction mode for dashboard', if the organization admin has configured any." } }, "description": "Information about the organization's management system" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } } }, "example": { "id": "2930418", "name": "My organization", "url": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "api": { "enabled": true }, "licensing": { "model": "co-term" }, "cloud": { "region": { "name": "North America", "host": { "name": "United States" } } }, "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } } } } } }, "summary": "Create a new organization", "tags": [ "organizations", "configure" ] } }, "/organizations/{organizationId}": { "get": { "description": "Return an organization", "operationId": "getOrganization", "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": { "id": { "type": "string", "description": "Organization ID" }, "name": { "type": "string", "description": "Organization name" }, "url": { "type": "string", "description": "Organization URL" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable API access" } }, "description": "API related settings" }, "licensing": { "type": "object", "properties": { "model": { "type": "string", "enum": [ "co-term", "per-device", "subscription" ], "description": "Organization licensing model. Can be 'co-term', 'per-device', or 'subscription'." } }, "description": "Licensing related settings" }, "cloud": { "type": "object", "properties": { "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of region" }, "host": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of location" } }, "description": "Where organization data is hosted" } }, "description": "Region info" } }, "description": "Data for this organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty. Details may be named 'MSP ID', 'customer number', 'IP restriction mode for API', or 'IP restriction mode for dashboard', if the organization admin has configured any." } }, "description": "Information about the organization's management system" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } } }, "example": { "id": "2930418", "name": "My organization", "url": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "api": { "enabled": true }, "licensing": { "model": "co-term" }, "cloud": { "region": { "name": "North America", "host": { "name": "United States" } } }, "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return an organization", "tags": [ "organizations", "configure" ] }, "put": { "description": "Update an organization", "operationId": "updateOrganization", "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 organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty" } }, "description": "Information about the organization's management system" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "If true, enable the access to the Cisco Meraki Dashboard API" } }, "description": "API-specific settings" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } }, "example": { "name": "My organization", "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] }, "api": { "enabled": true } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Organization ID" }, "name": { "type": "string", "description": "Organization name" }, "url": { "type": "string", "description": "Organization URL" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable API access" } }, "description": "API related settings" }, "licensing": { "type": "object", "properties": { "model": { "type": "string", "enum": [ "co-term", "per-device", "subscription" ], "description": "Organization licensing model. Can be 'co-term', 'per-device', or 'subscription'." } }, "description": "Licensing related settings" }, "cloud": { "type": "object", "properties": { "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of region" }, "host": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of location" } }, "description": "Where organization data is hosted" } }, "description": "Region info" } }, "description": "Data for this organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty. Details may be named 'MSP ID', 'customer number', 'IP restriction mode for API', or 'IP restriction mode for dashboard', if the organization admin has configured any." } }, "description": "Information about the organization's management system" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } } }, "example": { "id": "2930418", "name": "My organization", "url": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "api": { "enabled": true }, "licensing": { "model": "co-term" }, "cloud": { "region": { "name": "North America", "host": { "name": "United States" } } }, "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an organization", "tags": [ "organizations", "configure" ] }, "delete": { "description": "Delete an organization", "operationId": "deleteOrganization", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete an organization", "tags": [ "organizations", "configure" ] } }, "/organizations/{organizationId}/actionBatches": { "post": { "callbacks": { "actionBatch": { "{$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": { "id": { "type": "string", "description": "ID of the action batch. Can be used to check the status of the action batch at /organizations/{organizationId}/actionBatches/{actionBatchId}" }, "organizationId": { "type": "string", "description": "ID of the organization this action batch belongs to" }, "confirmed": { "type": "boolean", "description": "Flag describing whether the action should be previewed before executing or not" }, "synchronous": { "type": "boolean", "description": "Flag describing whether actions should run synchronously or asynchronously" }, "status": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "Flag describing whether all actions in the action batch have completed" }, "failed": { "type": "boolean", "description": "Flag describing whether any actions in the action batch failed" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "List of errors encountered when running actions in the action batch" }, "createdResources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the created resource" }, "uri": { "type": "string", "description": "URI, not including base, of the created resource" } } }, "description": "Resources created as a result of this action batch" } }, "required": [ "createdResources" ], "description": "Status of action batch" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used by this action" }, "body": { "type": "object", "additionalProperties": true, "description": "Data provided in the body of the Action. Contents depend on the Action type" } }, "required": [ "resource", "operation" ] }, "description": "A set of changes made as part of this action (more details)" } }, "required": [ "actions" ] } } } } } }, "responses": { "2XX": { "description": "Your server return this code if it accepts the callback" } } } } } }, "description": "Create an action batch", "operationId": "createOrganizationActionBatch", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "confirmed": { "type": "boolean", "description": "Set to true for immediate execution. Set to false if the action should be previewed before executing. This property cannot be unset once it is true. Defaults to false." }, "synchronous": { "type": "boolean", "description": "Set to true to force the batch to run synchronous. There can be at most 20 actions in synchronous batch. Defaults to false." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used" }, "body": { "type": "object", "description": "The body of the action", "default": {} } }, "required": [ "resource", "operation" ] }, "description": "A set of changes to make as part of this action (more details)" }, "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": { "confirmed": true, "synchronous": true, "actions": [ { "resource": "/devices/QXXX-XXXX-XXXX/switch/ports/3", "operation": "create" } ], "callback": { "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "sharedSecret": "secret", "httpServer": { "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M=" }, "payloadTemplate": { "id": "wpt_2100" } } }, "required": [ "actions" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the action batch. Can be used to check the status of the action batch at /organizations/{organizationId}/actionBatches/{actionBatchId}" }, "organizationId": { "type": "string", "description": "ID of the organization this action batch belongs to" }, "confirmed": { "type": "boolean", "description": "Flag describing whether the action should be previewed before executing or not" }, "synchronous": { "type": "boolean", "description": "Flag describing whether actions should run synchronously or asynchronously" }, "status": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "Flag describing whether all actions in the action batch have completed" }, "failed": { "type": "boolean", "description": "Flag describing whether any actions in the action batch failed" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "List of errors encountered when running actions in the action batch" }, "createdResources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the created resource" }, "uri": { "type": "string", "description": "URI, not including base, of the created resource" } } }, "description": "Resources created as a result of this action batch" } }, "required": [ "createdResources" ], "description": "Status of action batch" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used by this action" }, "body": { "type": "object", "additionalProperties": true, "description": "Data provided in the body of the Action. Contents depend on the Action type" } }, "required": [ "resource", "operation" ] }, "description": "A set of changes made as part of this action (more details)" }, "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" } }, "required": [ "actions" ] }, "example": { "id": "1234", "organizationId": "2930418", "confirmed": true, "synchronous": false, "status": { "completed": true, "failed": false, "errors": [], "createdResources": [ { "id": "1284392014819", "uri": "/networks/L_XXXXX/groupPolicies/100" } ] }, "actions": [ { "resource": "/devices/QXXX-XXXX-XXXX/switch/ports/3", "operation": "update" } ], "callback": { "id": "1284392014819", "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "status": "new" } } } } } }, "summary": "Create an action batch", "tags": [ "organizations", "configure", "actionBatches" ] }, "get": { "description": "Return the list of action batches in the organization", "operationId": "getOrganizationActionBatches", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "status", "in": "query", "description": "Filter batches by status. Valid types are pending, completed, and failed.", "schema": { "type": "string", "enum": [ "completed", "failed", "pending" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the action batch. Can be used to check the status of the action batch at /organizations/{organizationId}/actionBatches/{actionBatchId}" }, "organizationId": { "type": "string", "description": "ID of the organization this action batch belongs to" }, "confirmed": { "type": "boolean", "description": "Flag describing whether the action should be previewed before executing or not" }, "synchronous": { "type": "boolean", "description": "Flag describing whether actions should run synchronously or asynchronously" }, "status": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "Flag describing whether all actions in the action batch have completed" }, "failed": { "type": "boolean", "description": "Flag describing whether any actions in the action batch failed" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "List of errors encountered when running actions in the action batch" }, "createdResources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the created resource" }, "uri": { "type": "string", "description": "URI, not including base, of the created resource" } } }, "description": "Resources created as a result of this action batch" } }, "required": [ "createdResources" ], "description": "Status of action batch" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used by this action" }, "body": { "type": "object", "additionalProperties": true, "description": "Data provided in the body of the Action. Contents depend on the Action type" } }, "required": [ "resource", "operation" ] }, "description": "A set of changes made as part of this action (more details)" } }, "required": [ "actions" ] } }, "example": [ { "id": "1234", "organizationId": "2930418", "confirmed": true, "synchronous": false, "status": { "completed": true, "failed": false, "errors": [], "createdResources": [ { "id": "1284392014819", "uri": "/networks/L_XXXXX/groupPolicies/100" } ] }, "actions": [ { "resource": "/devices/QXXX-XXXX-XXXX/switch/ports/3", "operation": "update" } ] } ] } } } }, "summary": "Return the list of action batches in the organization", "tags": [ "organizations", "configure", "actionBatches" ] } }, "/organizations/{organizationId}/actionBatches/{actionBatchId}": { "get": { "description": "Return an action batch", "operationId": "getOrganizationActionBatch", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "actionBatchId", "in": "path", "description": "Action batch ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the action batch. Can be used to check the status of the action batch at /organizations/{organizationId}/actionBatches/{actionBatchId}" }, "organizationId": { "type": "string", "description": "ID of the organization this action batch belongs to" }, "confirmed": { "type": "boolean", "description": "Flag describing whether the action should be previewed before executing or not" }, "synchronous": { "type": "boolean", "description": "Flag describing whether actions should run synchronously or asynchronously" }, "status": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "Flag describing whether all actions in the action batch have completed" }, "failed": { "type": "boolean", "description": "Flag describing whether any actions in the action batch failed" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "List of errors encountered when running actions in the action batch" }, "createdResources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the created resource" }, "uri": { "type": "string", "description": "URI, not including base, of the created resource" } } }, "description": "Resources created as a result of this action batch" } }, "required": [ "createdResources" ], "description": "Status of action batch" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used by this action" }, "body": { "type": "object", "additionalProperties": true, "description": "Data provided in the body of the Action. Contents depend on the Action type" } }, "required": [ "resource", "operation" ] }, "description": "A set of changes made as part of this action (more details)" }, "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" } }, "required": [ "actions" ] }, "example": { "id": "1234", "organizationId": "2930418", "confirmed": true, "synchronous": false, "status": { "completed": true, "failed": false, "errors": [], "createdResources": [ { "id": "1284392014819", "uri": "/networks/L_XXXXX/groupPolicies/100" } ] }, "actions": [ { "resource": "/devices/QXXX-XXXX-XXXX/switch/ports/3", "operation": "update" } ], "callback": { "id": "1284392014819", "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "status": "new" } } } } } }, "summary": "Return an action batch", "tags": [ "organizations", "configure", "actionBatches" ] }, "delete": { "description": "Delete an action batch", "operationId": "deleteOrganizationActionBatch", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "actionBatchId", "in": "path", "description": "Action batch ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete an action batch", "tags": [ "organizations", "configure", "actionBatches" ] }, "put": { "description": "Update an action batch", "operationId": "updateOrganizationActionBatch", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "actionBatchId", "in": "path", "description": "Action batch ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "confirmed": { "type": "boolean", "description": "A boolean representing whether or not the batch has been confirmed. This property cannot be unset once it is true." }, "synchronous": { "type": "boolean", "description": "Set to true to force the batch to run synchronous. There can be at most 20 actions in synchronous batch." } }, "example": { "confirmed": true, "synchronous": false } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the action batch. Can be used to check the status of the action batch at /organizations/{organizationId}/actionBatches/{actionBatchId}" }, "organizationId": { "type": "string", "description": "ID of the organization this action batch belongs to" }, "confirmed": { "type": "boolean", "description": "Flag describing whether the action should be previewed before executing or not" }, "synchronous": { "type": "boolean", "description": "Flag describing whether actions should run synchronously or asynchronously" }, "status": { "type": "object", "properties": { "completed": { "type": "boolean", "description": "Flag describing whether all actions in the action batch have completed" }, "failed": { "type": "boolean", "description": "Flag describing whether any actions in the action batch failed" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "List of errors encountered when running actions in the action batch" }, "createdResources": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the created resource" }, "uri": { "type": "string", "description": "URI, not including base, of the created resource" } } }, "description": "Resources created as a result of this action batch" } }, "required": [ "createdResources" ], "description": "Status of action batch" }, "actions": { "type": "array", "items": { "type": "object", "properties": { "resource": { "type": "string", "description": "Unique identifier for the resource to be acted on" }, "operation": { "type": "string", "description": "The operation to be used by this action" }, "body": { "type": "object", "additionalProperties": true, "description": "Data provided in the body of the Action. Contents depend on the Action type" } }, "required": [ "resource", "operation" ] }, "description": "A set of changes made as part of this action (more details)" } }, "required": [ "actions" ] }, "example": { "id": "1234", "organizationId": "2930418", "confirmed": true, "synchronous": false, "status": { "completed": true, "failed": false, "errors": [], "createdResources": [ { "id": "1284392014819", "uri": "/networks/L_XXXXX/groupPolicies/100" } ] }, "actions": [ { "resource": "/devices/QXXX-XXXX-XXXX/switch/ports/3", "operation": "update" } ] } } } } }, "summary": "Update an action batch", "tags": [ "organizations", "configure", "actionBatches" ] } }, "/organizations/{organizationId}/adaptivePolicy/acls": { "get": { "description": "List adaptive policy ACLs in a organization", "operationId": "getOrganizationAdaptivePolicyAcls", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "aclId": { "type": "string", "description": "ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "Name of the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL" }, "ipVersion": { "type": "string", "description": "IP version of adpative policy ACL" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol" }, "srcPort": { "type": "string", "description": "Source port" }, "dstPort": { "type": "string", "description": "Destination port" }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\n" } } }, "description": "An ordered array of the adaptive policy ACL rules" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was last updated" } } } }, "example": [ { "aclId": "12345678", "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "ipVersion": "ipv6", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", "updatedAt": "2021-05-19T17:11:54Z" } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List adaptive policy ACLs in a organization", "tags": [ "organizations", "configure", "adaptivePolicy", "acls" ] }, "post": { "description": "Creates new adaptive policy ACL", "operationId": "createOrganizationAdaptivePolicyAcl", "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 the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL", "default": "" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule." }, "protocol": { "type": "string", "enum": [ "any", "icmp", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." }, "srcPort": { "type": "string", "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." }, "dstPort": { "type": "string", "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\nCan only be enabled when policy protocol is 'allow tcp'\n" } }, "required": [ "policy", "protocol" ] }, "description": "An ordered array of the adaptive policy ACL rules." }, "ipVersion": { "type": "string", "enum": [ "any", "ipv4", "ipv6" ], "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" } }, "example": { "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "ipVersion": "ipv6" }, "required": [ "name", "rules", "ipVersion" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "aclId": { "type": "string", "description": "ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "Name of the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL" }, "ipVersion": { "type": "string", "description": "IP version of adpative policy ACL" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol" }, "srcPort": { "type": "string", "description": "Source port" }, "dstPort": { "type": "string", "description": "Destination port" }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\n" } } }, "description": "An ordered array of the adaptive policy ACL rules" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was last updated" } } }, "example": { "aclId": "12345678", "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "ipVersion": "ipv6", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", "updatedAt": "2021-05-19T17:11:54Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Creates new adaptive policy ACL", "tags": [ "organizations", "configure", "adaptivePolicy", "acls" ] } }, "/organizations/{organizationId}/adaptivePolicy/acls/{aclId}": { "get": { "description": "Returns the adaptive policy ACL information", "operationId": "getOrganizationAdaptivePolicyAcl", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "aclId", "in": "path", "description": "Acl ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "aclId": { "type": "string", "description": "ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "Name of the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL" }, "ipVersion": { "type": "string", "description": "IP version of adpative policy ACL" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol" }, "srcPort": { "type": "string", "description": "Source port" }, "dstPort": { "type": "string", "description": "Destination port" }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\n" } } }, "description": "An ordered array of the adaptive policy ACL rules" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was last updated" } } }, "example": { "aclId": "12345678", "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "ipVersion": "ipv6", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", "updatedAt": "2021-05-19T17:11:54Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns the adaptive policy ACL information", "tags": [ "organizations", "configure", "adaptivePolicy", "acls" ] }, "put": { "description": "Updates an adaptive policy ACL", "operationId": "updateOrganizationAdaptivePolicyAcl", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "aclId", "in": "path", "description": "Acl ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "'allow' or 'deny' traffic specified by this rule." }, "protocol": { "type": "string", "enum": [ "any", "icmp", "tcp", "udp" ], "description": "The type of protocol (must be 'tcp', 'udp', 'icmp' or 'any')." }, "srcPort": { "type": "string", "description": "Source port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." }, "dstPort": { "type": "string", "description": "Destination port. Must be in the format of single port: '1', port list: '1,2' or port range: '1-10', and in the range of 1-65535, or 'any'. Default is 'any'." }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\nCan only be enabled when policy protocol is 'allow tcp'\n" } }, "required": [ "policy", "protocol" ] }, "description": "An ordered array of the adaptive policy ACL rules. An empty array will clear the rules." }, "ipVersion": { "type": "string", "enum": [ "any", "ipv4", "ipv6" ], "description": "IP version of adpative policy ACL. One of: 'any', 'ipv4' or 'ipv6'" } }, "example": { "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "ipVersion": "ipv6" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "aclId": { "type": "string", "description": "ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "Name of the adaptive policy ACL" }, "description": { "type": "string", "description": "Description of the adaptive policy ACL" }, "ipVersion": { "type": "string", "description": "IP version of adpative policy ACL" }, "rules": { "type": "array", "items": { "type": "object", "properties": { "policy": { "type": "string", "description": "'allow' or 'deny' traffic specified by this rule" }, "protocol": { "type": "string", "description": "The type of protocol" }, "srcPort": { "type": "string", "description": "Source port" }, "dstPort": { "type": "string", "description": "Destination port" }, "log": { "type": "boolean", "description": "If enabled, when this rule is hit an entry will be logged to the event log\n" }, "tcpEstablished": { "type": "boolean", "description": "If enabled, means TCP connection with this node must be established.\n" } } }, "description": "An ordered array of the adaptive policy ACL rules" }, "createdAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was created" }, "updatedAt": { "type": "string", "format": "date-time", "description": "When the adaptive policy ACL was last updated" } } }, "example": { "aclId": "12345678", "name": "Block sensitive web traffic", "description": "Blocks sensitive web traffic", "ipVersion": "ipv6", "rules": [ { "policy": "deny", "protocol": "tcp", "srcPort": "1,33", "dstPort": "22-30", "log": true, "tcpEstablished": true } ], "createdAt": "2021-05-19T17:08:25Z", "updatedAt": "2021-05-19T17:11:54Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Updates an adaptive policy ACL", "tags": [ "organizations", "configure", "adaptivePolicy", "acls" ] }, "delete": { "description": "Deletes the specified adaptive policy ACL. Note this adaptive policy ACL will also be removed from policies using it.", "operationId": "deleteOrganizationAdaptivePolicyAcl", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "aclId", "in": "path", "description": "Acl ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Deletes the specified adaptive policy ACL", "tags": [ "organizations", "configure", "adaptivePolicy", "acls" ] } }, "/organizations/{organizationId}/adaptivePolicy/groups": { "get": { "description": "List adaptive policy groups in a organization", "operationId": "getOrganizationAdaptivePolicyGroups", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "groupId": { "type": "string", "description": "The ID of the adaptive policy group" }, "name": { "type": "string", "description": "The name of the adaptive policy group" }, "sgt": { "type": "integer", "description": "The security group tag for the adaptive policy group" }, "description": { "type": "string", "description": "The description for the adaptive policy group" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects for the adaptive policy group" }, "isDefaultGroup": { "type": "boolean", "description": "Whether the adaptive policy group is the default group" }, "requiredIpMappings": { "type": "array", "items": { "type": "string" }, "description": "List of required IP mappings for the adaptive policy group" }, "createdAt": { "type": "string", "description": "Created at timestamp for the adaptive policy group" }, "updatedAt": { "type": "string", "description": "Updated at timestamp for the adaptive policy group" } } } }, "example": [ { "groupId": "1234", "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ], "isDefaultGroup": false, "requiredIpMappings": [], "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List adaptive policy groups in a organization", "tags": [ "organizations", "configure", "adaptivePolicy", "groups" ] }, "post": { "description": "Creates a new adaptive policy group", "operationId": "createOrganizationAdaptivePolicyGroup", "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 the group" }, "sgt": { "type": "integer", "description": "SGT value of the group" }, "description": { "type": "string", "description": "Description of the group (default: \"\")" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects that belong to this group; traffic from addresses specified by these policy objects will be tagged with this group's SGT value if no other tagging scheme is being used (each requires one unique attribute) (default: [])" } }, "example": { "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ] }, "required": [ "name", "sgt" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "groupId": { "type": "string", "description": "The ID of the adaptive policy group" }, "name": { "type": "string", "description": "The name of the adaptive policy group" }, "sgt": { "type": "integer", "description": "The security group tag for the adaptive policy group" }, "description": { "type": "string", "description": "The description for the adaptive policy group" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects for the adaptive policy group" }, "isDefaultGroup": { "type": "boolean", "description": "Whether the adaptive policy group is the default group" }, "requiredIpMappings": { "type": "array", "items": { "type": "string" }, "description": "List of required IP mappings for the adaptive policy group" }, "createdAt": { "type": "string", "description": "Created at timestamp for the adaptive policy group" }, "updatedAt": { "type": "string", "description": "Updated at timestamp for the adaptive policy group" } } }, "example": { "groupId": "1234", "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ], "isDefaultGroup": false, "requiredIpMappings": [], "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Creates a new adaptive policy group", "tags": [ "organizations", "configure", "adaptivePolicy", "groups" ] } }, "/organizations/{organizationId}/adaptivePolicy/groups/{id}": { "get": { "description": "Returns an adaptive policy group", "operationId": "getOrganizationAdaptivePolicyGroup", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "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": { "groupId": { "type": "string", "description": "The ID of the adaptive policy group" }, "name": { "type": "string", "description": "The name of the adaptive policy group" }, "sgt": { "type": "integer", "description": "The security group tag for the adaptive policy group" }, "description": { "type": "string", "description": "The description for the adaptive policy group" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects for the adaptive policy group" }, "isDefaultGroup": { "type": "boolean", "description": "Whether the adaptive policy group is the default group" }, "requiredIpMappings": { "type": "array", "items": { "type": "string" }, "description": "List of required IP mappings for the adaptive policy group" }, "createdAt": { "type": "string", "description": "Created at timestamp for the adaptive policy group" }, "updatedAt": { "type": "string", "description": "Updated at timestamp for the adaptive policy group" } } }, "example": { "groupId": "1234", "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ], "isDefaultGroup": false, "requiredIpMappings": [], "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns an adaptive policy group", "tags": [ "organizations", "configure", "adaptivePolicy", "groups" ] }, "put": { "description": "Updates an adaptive policy group. If updating \"Infrastructure\", only the SGT is allowed. Cannot update \"Unknown\".", "operationId": "updateOrganizationAdaptivePolicyGroup", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the group" }, "sgt": { "type": "integer", "description": "SGT value of the group" }, "description": { "type": "string", "description": "Description of the group" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects that belong to this group; traffic from addresses specified by these policy objects will be tagged with this group's SGT value if no other tagging scheme is being used (each requires one unique attribute)" } }, "example": { "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "groupId": { "type": "string", "description": "The ID of the adaptive policy group" }, "name": { "type": "string", "description": "The name of the adaptive policy group" }, "sgt": { "type": "integer", "description": "The security group tag for the adaptive policy group" }, "description": { "type": "string", "description": "The description for the adaptive policy group" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the policy object" }, "name": { "type": "string", "description": "The name of the policy object" } } }, "description": "The policy objects for the adaptive policy group" }, "isDefaultGroup": { "type": "boolean", "description": "Whether the adaptive policy group is the default group" }, "requiredIpMappings": { "type": "array", "items": { "type": "string" }, "description": "List of required IP mappings for the adaptive policy group" }, "createdAt": { "type": "string", "description": "Created at timestamp for the adaptive policy group" }, "updatedAt": { "type": "string", "description": "Updated at timestamp for the adaptive policy group" } } }, "example": { "groupId": "1234", "name": "Employee Group", "sgt": 1000, "description": "Group of XYZ Corp Employees", "policyObjects": [ { "id": "2345", "name": "Example Policy Object" } ], "isDefaultGroup": false, "requiredIpMappings": [], "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Updates an adaptive policy group", "tags": [ "organizations", "configure", "adaptivePolicy", "groups" ] }, "delete": { "description": "Deletes the specified adaptive policy group and any associated policies and references", "operationId": "deleteOrganizationAdaptivePolicyGroup", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Deletes the specified adaptive policy group and any associated policies and references", "tags": [ "organizations", "configure", "adaptivePolicy", "groups" ] } }, "/organizations/{organizationId}/adaptivePolicy/overview": { "get": { "description": "Returns adaptive policy aggregate statistics for an organization", "operationId": "getOrganizationAdaptivePolicyOverview", "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": { "groups": { "type": "integer", "description": "Number of adaptive policy groups currently in the organization." }, "customGroups": { "type": "integer", "description": "Number of user-created adaptive policy groups currently in the organization." }, "customAcls": { "type": "integer", "description": "Number of user-created adaptive policy ACLs currently in the organization." }, "policies": { "type": "integer", "description": "Number of adaptive policies currently in the organization." }, "denyPolicies": { "type": "integer", "description": "Number of adaptive policies currently in the organization that deny all traffic." }, "allowPolicies": { "type": "integer", "description": "Number of adaptive policies currently in the organization that allow all traffic." }, "policyObjects": { "type": "integer", "description": "Number of policy objects (with the adaptive policy type) currently in the organization." } }, "description": "The current amount of various adaptive policy objects." }, "limits": { "type": "object", "properties": { "customGroups": { "type": "integer", "description": "Maximum number of user-created adaptive policy groups allowed in the organization." }, "rulesInAnAcl": { "type": "integer", "description": "Maximum number of rules allowed in an adaptive policy ACL in the organization." }, "aclsInAPolicy": { "type": "integer", "description": "Maximum number of adaptive policy ACLs that can be assigned to an adaptive policy in the organization." }, "policyObjects": { "type": "integer", "description": "Maximum number of policy objects (with the adaptive policy type) allowed in the organization." } }, "description": "The current limits of various adaptive policy objects." } } }, "example": { "counts": { "groups": 10, "customGroups": 8, "customAcls": 12, "policies": 100, "denyPolicies": 30, "allowPolicies": 70, "policyObjects": 13 }, "limits": { "customGroups": 60, "rulesInAnAcl": 16, "aclsInAPolicy": 7, "policyObjects": 8000 } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns adaptive policy aggregate statistics for an organization", "tags": [ "organizations", "monitor", "adaptivePolicy", "overview" ] } }, "/organizations/{organizationId}/adaptivePolicy/policies": { "get": { "description": "List adaptive policies in an organization", "operationId": "getOrganizationAdaptivePolicyPolicies", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "adaptivePolicyId": { "type": "string", "description": "The ID for the adaptive policy" }, "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the source group" }, "name": { "type": "string", "description": "The name for the source group" }, "sgt": { "type": "integer", "description": "The security group tag for the source group" } }, "description": "The source group for the given adaptive policy" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the destination group" }, "name": { "type": "string", "description": "The name for the destination group" }, "sgt": { "type": "integer", "description": "The security group tag for the destination group" } }, "description": "The destination group for the given adaptive policy" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the access control list" }, "name": { "type": "string", "description": "The name for the access control list" } } }, "description": "The access control lists for the adaptive policy" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL" }, "createdAt": { "type": "string", "description": "The created at timestamp for the adaptive policy" }, "updatedAt": { "type": "string", "description": "The updated at timestamp for the adaptive policy" } } } }, "example": [ { "adaptivePolicyId": "111", "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow", "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List adaptive policies in an organization", "tags": [ "organizations", "configure", "adaptivePolicy", "policies" ] }, "post": { "description": "Add an Adaptive Policy", "operationId": "createOrganizationAdaptivePolicyPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the source adaptive policy group" }, "name": { "type": "string", "description": "The name of the source adaptive policy group" }, "sgt": { "type": "integer", "description": "The SGT of the source adaptive policy group" } }, "description": "The source adaptive policy group (requires one unique attribute)" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the destination adaptive policy group" }, "name": { "type": "string", "description": "The name of the destination adaptive policy group" }, "sgt": { "type": "integer", "description": "The SGT of the destination adaptive policy group" } }, "description": "The destination adaptive policy group (requires one unique attribute)" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "The name of the adaptive policy ACL" } } }, "description": "An ordered array of adaptive policy ACLs (each requires one unique attribute) that apply to this policy (default: [])" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL (default: \"default\")" } }, "example": { "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow" }, "required": [ "sourceGroup", "destinationGroup" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "adaptivePolicyId": { "type": "string", "description": "The ID for the adaptive policy" }, "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the source group" }, "name": { "type": "string", "description": "The name for the source group" }, "sgt": { "type": "integer", "description": "The security group tag for the source group" } }, "description": "The source group for the given adaptive policy" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the destination group" }, "name": { "type": "string", "description": "The name for the destination group" }, "sgt": { "type": "integer", "description": "The security group tag for the destination group" } }, "description": "The destination group for the given adaptive policy" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the access control list" }, "name": { "type": "string", "description": "The name for the access control list" } } }, "description": "The access control lists for the adaptive policy" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL" }, "createdAt": { "type": "string", "description": "The created at timestamp for the adaptive policy" }, "updatedAt": { "type": "string", "description": "The updated at timestamp for the adaptive policy" } } }, "example": { "adaptivePolicyId": "111", "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow", "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Add an Adaptive Policy", "tags": [ "organizations", "configure", "adaptivePolicy", "policies" ] } }, "/organizations/{organizationId}/adaptivePolicy/policies/{id}": { "get": { "description": "Return an adaptive policy", "operationId": "getOrganizationAdaptivePolicyPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "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": { "adaptivePolicyId": { "type": "string", "description": "The ID for the adaptive policy" }, "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the source group" }, "name": { "type": "string", "description": "The name for the source group" }, "sgt": { "type": "integer", "description": "The security group tag for the source group" } }, "description": "The source group for the given adaptive policy" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the destination group" }, "name": { "type": "string", "description": "The name for the destination group" }, "sgt": { "type": "integer", "description": "The security group tag for the destination group" } }, "description": "The destination group for the given adaptive policy" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the access control list" }, "name": { "type": "string", "description": "The name for the access control list" } } }, "description": "The access control lists for the adaptive policy" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL" }, "createdAt": { "type": "string", "description": "The created at timestamp for the adaptive policy" }, "updatedAt": { "type": "string", "description": "The updated at timestamp for the adaptive policy" } } }, "example": { "adaptivePolicyId": "111", "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow", "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return an adaptive policy", "tags": [ "organizations", "configure", "adaptivePolicy", "policies" ] }, "put": { "description": "Update an Adaptive Policy", "operationId": "updateOrganizationAdaptivePolicyPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the source adaptive policy group" }, "name": { "type": "string", "description": "The name of the source adaptive policy group" }, "sgt": { "type": "integer", "description": "The SGT of the source adaptive policy group" } }, "description": "The source adaptive policy group (requires one unique attribute)" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the destination adaptive policy group" }, "name": { "type": "string", "description": "The name of the destination adaptive policy group" }, "sgt": { "type": "integer", "description": "The SGT of the destination adaptive policy group" } }, "description": "The destination adaptive policy group (requires one unique attribute)" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the adaptive policy ACL" }, "name": { "type": "string", "description": "The name of the adaptive policy ACL" } } }, "description": "An ordered array of adaptive policy ACLs (each requires one unique attribute) that apply to this policy" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL" } }, "example": { "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "adaptivePolicyId": { "type": "string", "description": "The ID for the adaptive policy" }, "sourceGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the source group" }, "name": { "type": "string", "description": "The name for the source group" }, "sgt": { "type": "integer", "description": "The security group tag for the source group" } }, "description": "The source group for the given adaptive policy" }, "destinationGroup": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the destination group" }, "name": { "type": "string", "description": "The name for the destination group" }, "sgt": { "type": "integer", "description": "The security group tag for the destination group" } }, "description": "The destination group for the given adaptive policy" }, "acls": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID for the access control list" }, "name": { "type": "string", "description": "The name for the access control list" } } }, "description": "The access control lists for the adaptive policy" }, "lastEntryRule": { "type": "string", "enum": [ "allow", "default", "deny" ], "description": "The rule to apply if there is no matching ACL" }, "createdAt": { "type": "string", "description": "The created at timestamp for the adaptive policy" }, "updatedAt": { "type": "string", "description": "The updated at timestamp for the adaptive policy" } } }, "example": { "adaptivePolicyId": "111", "sourceGroup": { "id": "222", "name": "IoT Devices", "sgt": 50 }, "destinationGroup": { "id": "333", "name": "IoT Servers", "sgt": 51 }, "acls": [ { "id": "444", "name": "Block web" } ], "lastEntryRule": "allow", "createdAt": "2019-06-27T21:34:25.253480Z", "updatedAt": "2019-06-27T21:34:25.253480Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an Adaptive Policy", "tags": [ "organizations", "configure", "adaptivePolicy", "policies" ] }, "delete": { "description": "Delete an Adaptive Policy", "operationId": "deleteOrganizationAdaptivePolicyPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Delete an Adaptive Policy", "tags": [ "organizations", "configure", "adaptivePolicy", "policies" ] } }, "/organizations/{organizationId}/adaptivePolicy/settings": { "get": { "description": "Returns global adaptive policy settings in an organization", "operationId": "getOrganizationAdaptivePolicySettings", "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": { "enabledNetworks": { "type": "array", "items": { "type": "string" }, "description": "List of network IDs with adaptive policy enabled" } } }, "example": { "enabledNetworks": [ "L_11111111", "L_22222222", "N_33333333", "L_44444444" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns global adaptive policy settings in an organization", "tags": [ "organizations", "configure", "adaptivePolicy", "settings" ] }, "put": { "description": "Update global adaptive policy settings", "operationId": "updateOrganizationAdaptivePolicySettings", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabledNetworks": { "type": "array", "items": { "type": "string" }, "description": "List of network IDs with adaptive policy enabled" } }, "example": { "enabledNetworks": [ "L_11111111", "L_22222222", "N_33333333", "L_44444444" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "enabledNetworks": { "type": "array", "items": { "type": "string" }, "description": "List of network IDs with adaptive policy enabled" } } }, "example": { "enabledNetworks": [ "L_11111111", "L_22222222", "N_33333333", "L_44444444" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update global adaptive policy settings", "tags": [ "organizations", "configure", "adaptivePolicy", "settings" ] } }, "/organizations/{organizationId}/admins": { "get": { "description": "List the dashboard administrators in this organization", "operationId": "getOrganizationAdmins", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the result set by the included set of network IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Admin's ID" }, "name": { "type": "string", "description": "Admin's username" }, "email": { "type": "string", "description": "Admin's email address" }, "orgAccess": { "type": "string", "enum": [ "camera-sensor", "enterprise", "full", "none", "read-only" ], "description": "Admin's level of access to the organization" }, "accountStatus": { "type": "string", "enum": [ "locked", "ok", "pending", "unverified" ], "description": "Status of the admin's account" }, "twoFactorAuthEnabled": { "type": "boolean", "description": "Indicates whether two-factor authentication is enabled" }, "hasApiKey": { "type": "boolean", "description": "Indicates whether the admin has an API key" }, "lastActive": { "type": "string", "format": "date-time", "description": "Time when the admin was last active" }, "tags": { "type": "array", "items": { "type": "object", "properties": { "tag": { "type": "string", "description": "Tag value" }, "access": { "type": "string", "description": "Access level for the tag" } } }, "description": "Admin tag information" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID" }, "access": { "type": "string", "description": "Admin's level of access to the network" } } }, "description": "Admin network access information" }, "authenticationMethod": { "type": "string", "enum": [ "Cisco SecureX Sign-On", "Email" ], "description": "Admin's authentication method" } } } }, "example": [ { "id": "212406", "name": "Miles Meraki", "email": "miles@meraki.com", "orgAccess": "none", "accountStatus": "ok", "twoFactorAuthEnabled": false, "hasApiKey": true, "lastActive": "2018-02-11T00:00:00Z", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ], "authenticationMethod": "Email" } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "List the dashboard administrators in this organization", "tags": [ "organizations", "configure", "admins" ] }, "post": { "description": "Create a new dashboard administrator", "operationId": "createOrganizationAdmin", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "email": { "type": "string", "description": "The email of the dashboard administrator. This attribute can not be updated." }, "name": { "type": "string", "description": "The name of the dashboard administrator" }, "orgAccess": { "type": "string", "enum": [ "enterprise", "full", "none", "read-only" ], "description": "The privilege of the dashboard administrator on the organization. Can be one of 'full', 'read-only', 'enterprise' or 'none'" }, "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 dashboard 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 dashboard administrator has privileges on" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The network ID" }, "access": { "type": "string", "description": "The privilege of the dashboard administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'" } }, "required": [ "id", "access" ] }, "description": "The list of networks that the dashboard administrator has privileges on" }, "authenticationMethod": { "type": "string", "enum": [ "Email" ], "description": "No longer used as of Cisco SecureX end-of-life. Can be one of 'Email'. The default is Email authentication." } }, "example": { "email": "miles@meraki.com", "name": "Miles Meraki", "orgAccess": "none", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ], "authenticationMethod": "Email" }, "required": [ "email", "name", "orgAccess" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Admin's ID" }, "name": { "type": "string", "description": "Admin's username" }, "email": { "type": "string", "description": "Admin's email address" }, "orgAccess": { "type": "string", "enum": [ "camera-sensor", "enterprise", "full", "none", "read-only" ], "description": "Admin's level of access to the organization" }, "accountStatus": { "type": "string", "enum": [ "locked", "ok", "pending", "unverified" ], "description": "Status of the admin's account" }, "twoFactorAuthEnabled": { "type": "boolean", "description": "Indicates whether two-factor authentication is enabled" }, "hasApiKey": { "type": "boolean", "description": "Indicates whether the admin has an API key" }, "lastActive": { "type": "string", "format": "date-time", "description": "Time when the admin was last active" }, "tags": { "type": "array", "items": { "type": "object", "properties": { "tag": { "type": "string", "description": "Tag value" }, "access": { "type": "string", "description": "Access level for the tag" } } }, "description": "Admin tag information" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID" }, "access": { "type": "string", "description": "Admin's level of access to the network" } } }, "description": "Admin network access information" }, "authenticationMethod": { "type": "string", "enum": [ "Cisco SecureX Sign-On", "Email" ], "description": "Admin's authentication method" } } }, "example": { "id": "212406", "name": "Miles Meraki", "email": "miles@meraki.com", "orgAccess": "none", "accountStatus": "ok", "twoFactorAuthEnabled": false, "hasApiKey": true, "lastActive": "2018-02-11T00:00:00Z", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ], "authenticationMethod": "Email" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Create a new dashboard administrator", "tags": [ "organizations", "configure", "admins" ] } }, "/organizations/{organizationId}/admins/{adminId}": { "put": { "description": "Update an administrator", "operationId": "updateOrganizationAdmin", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "adminId", "in": "path", "description": "Admin ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the dashboard administrator" }, "orgAccess": { "type": "string", "enum": [ "enterprise", "full", "none", "read-only" ], "description": "The privilege of the dashboard administrator on the organization. Can be one of 'full', 'read-only', 'enterprise' or 'none'" }, "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 dashboard 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 dashboard administrator has privileges on" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The network ID" }, "access": { "type": "string", "description": "The privilege of the dashboard administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only'" } }, "required": [ "id", "access" ] }, "description": "The list of networks that the dashboard administrator has privileges on" } }, "example": { "name": "Miles Meraki", "orgAccess": "none", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Admin's ID" }, "name": { "type": "string", "description": "Admin's username" }, "email": { "type": "string", "description": "Admin's email address" }, "orgAccess": { "type": "string", "enum": [ "camera-sensor", "enterprise", "full", "none", "read-only" ], "description": "Admin's level of access to the organization" }, "accountStatus": { "type": "string", "enum": [ "locked", "ok", "pending", "unverified" ], "description": "Status of the admin's account" }, "twoFactorAuthEnabled": { "type": "boolean", "description": "Indicates whether two-factor authentication is enabled" }, "hasApiKey": { "type": "boolean", "description": "Indicates whether the admin has an API key" }, "lastActive": { "type": "string", "format": "date-time", "description": "Time when the admin was last active" }, "tags": { "type": "array", "items": { "type": "object", "properties": { "tag": { "type": "string", "description": "Tag value" }, "access": { "type": "string", "description": "Access level for the tag" } } }, "description": "Admin tag information" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID" }, "access": { "type": "string", "description": "Admin's level of access to the network" } } }, "description": "Admin network access information" }, "authenticationMethod": { "type": "string", "enum": [ "Cisco SecureX Sign-On", "Email" ], "description": "Admin's authentication method" } } }, "example": { "id": "212406", "name": "Miles Meraki", "email": "miles@meraki.com", "orgAccess": "none", "accountStatus": "ok", "twoFactorAuthEnabled": false, "hasApiKey": true, "lastActive": "2018-02-11T00:00:00Z", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ], "authenticationMethod": "Email" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Update an administrator", "tags": [ "organizations", "configure", "admins" ] }, "delete": { "description": "Revoke all access for a dashboard administrator within this organization", "operationId": "deleteOrganizationAdmin", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "adminId", "in": "path", "description": "Admin ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Revoke all access for a dashboard administrator within this organization", "tags": [ "organizations", "configure", "admins" ] } }, "/organizations/{organizationId}/alerts/profiles": { "get": { "description": "List all organization-wide alert configurations", "operationId": "getOrganizationAlertsProfiles", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The alert config ID" }, "type": { "type": "string", "description": "The alert type" }, "enabled": { "type": "boolean", "description": "Is the alert config enabled" }, "alertCondition": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The total duration in seconds that the threshold should be crossed before alerting" }, "window": { "type": "integer", "description": "The look back period in seconds for sensing the alert" }, "bit_rate_bps": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Utilization alerts." }, "interface": { "type": "string", "description": "The uplink observed for the alert" } }, "description": "The conditions that determine if the alert triggers" }, "recipients": { "type": "object", "properties": { "emails": { "type": "array", "items": { "type": "string" }, "description": "A list of emails that will receive information about the alert" }, "httpServerIds": { "type": "array", "items": { "type": "string" }, "description": "A list base64 encoded urls of webhook endpoints that will receive information about the alert" } }, "description": "List of recipients that will recieve the alert." }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "Networks with these tags will be monitored for the alert" }, "description": { "type": "string", "description": "User supplied description of the alert" } } } }, "example": [ { "id": "1284392014819", "type": "wanUtilization", "enabled": true, "alertCondition": { "duration": 60, "window": 600, "bit_rate_bps": 10000, "interface": "wan1" }, "recipients": { "emails": [ "admin@example.org" ], "httpServerIds": [ "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aA==" ] }, "networkTags": [ "tag1", "tag2" ], "description": "WAN 1 high utilization" } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "List all organization-wide alert configurations", "tags": [ "organizations", "configure", "alerts", "profiles" ] }, "post": { "description": "Create an organization-wide alert configuration", "operationId": "createOrganizationAlertsProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "appOutage", "voipJitter", "voipMos", "voipPacketLoss", "wanLatency", "wanPacketLoss", "wanStatus", "wanUtilization" ], "description": "The alert type" }, "alertCondition": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The total duration in seconds that the threshold should be crossed before alerting" }, "window": { "type": "integer", "description": "The look back period in seconds for sensing the alert" }, "bit_rate_bps": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Utilization alerts." }, "loss_ratio": { "type": "number", "format": "float", "description": "The threshold the metric must cross to be valid for alerting. Used only for Packet Loss alerts." }, "latency_ms": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Latency alerts." }, "jitter_ms": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for VoIP Jitter alerts." }, "mos": { "type": "number", "format": "float", "description": "The threshold the metric must drop below to be valid for alerting. Used only for VoIP MOS alerts." }, "interface": { "type": "string", "enum": [ "cellular", "wan1", "wan2", "wan3", "wan4" ], "description": "The uplink observed for the alert. interface must be one of the following: wan1, wan2, wan3, cellular, wan4" } }, "description": "The conditions that determine if the alert triggers" }, "recipients": { "type": "object", "properties": { "emails": { "type": "array", "items": { "type": "string" }, "description": "A list of emails that will receive information about the alert" }, "httpServerIds": { "type": "array", "items": { "type": "string" }, "description": "A list base64 encoded urls of webhook endpoints that will receive information about the alert" } }, "description": "List of recipients that will recieve the alert." }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "Networks with these tags will be monitored for the alert" }, "description": { "type": "string", "description": "User supplied description of the alert" } }, "example": { "type": "wanUtilization", "alertCondition": { "duration": 60, "window": 600, "bit_rate_bps": 10000, "loss_ratio": 0.1, "latency_ms": 100, "jitter_ms": 100, "mos": 3.5, "interface": "wan1" }, "recipients": { "emails": [ "admin@example.org" ], "httpServerIds": [ "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aA==" ] }, "networkTags": [ "tag1", "tag2" ], "description": "WAN 1 high utilization" }, "required": [ "type", "alertCondition", "recipients", "networkTags" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The alert config ID" }, "type": { "type": "string", "description": "The alert type" }, "enabled": { "type": "boolean", "description": "Is the alert config enabled" }, "alertCondition": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The total duration in seconds that the threshold should be crossed before alerting" }, "window": { "type": "integer", "description": "The look back period in seconds for sensing the alert" }, "bit_rate_bps": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Utilization alerts." }, "interface": { "type": "string", "description": "The uplink observed for the alert" } }, "description": "The conditions that determine if the alert triggers" }, "recipients": { "type": "object", "properties": { "emails": { "type": "array", "items": { "type": "string" }, "description": "A list of emails that will receive information about the alert" }, "httpServerIds": { "type": "array", "items": { "type": "string" }, "description": "A list base64 encoded urls of webhook endpoints that will receive information about the alert" } }, "description": "List of recipients that will recieve the alert." }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "Networks with these tags will be monitored for the alert" }, "description": { "type": "string", "description": "User supplied description of the alert" } } }, "example": { "id": "1284392014819", "type": "wanUtilization", "enabled": true, "alertCondition": { "duration": 60, "window": 600, "bit_rate_bps": 10000, "interface": "wan1" }, "recipients": { "emails": [ "admin@example.org" ], "httpServerIds": [ "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aA==" ] }, "networkTags": [ "tag1", "tag2" ], "description": "WAN 1 high utilization" } } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:write" ] } ], "summary": "Create an organization-wide alert configuration", "tags": [ "organizations", "configure", "alerts", "profiles" ] } }, "/organizations/{organizationId}/alerts/profiles/{alertConfigId}": { "put": { "description": "Update an organization-wide alert config", "operationId": "updateOrganizationAlertsProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "alertConfigId", "in": "path", "description": "Alert config ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Is the alert config enabled" }, "type": { "type": "string", "enum": [ "appOutage", "voipJitter", "voipMos", "voipPacketLoss", "wanLatency", "wanPacketLoss", "wanStatus", "wanUtilization" ], "description": "The alert type" }, "alertCondition": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The total duration in seconds that the threshold should be crossed before alerting" }, "window": { "type": "integer", "description": "The look back period in seconds for sensing the alert" }, "bit_rate_bps": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Utilization alerts." }, "loss_ratio": { "type": "number", "format": "float", "description": "The threshold the metric must cross to be valid for alerting. Used only for Packet Loss alerts." }, "latency_ms": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Latency alerts." }, "jitter_ms": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for VoIP Jitter alerts." }, "mos": { "type": "number", "format": "float", "description": "The threshold the metric must drop below to be valid for alerting. Used only for VoIP MOS alerts." }, "interface": { "type": "string", "enum": [ "cellular", "wan1", "wan2", "wan3", "wan4" ], "description": "The uplink observed for the alert. interface must be one of the following: wan1, wan2, wan3, cellular, wan4" } }, "description": "The conditions that determine if the alert triggers" }, "recipients": { "type": "object", "properties": { "emails": { "type": "array", "items": { "type": "string" }, "description": "A list of emails that will receive information about the alert" }, "httpServerIds": { "type": "array", "items": { "type": "string" }, "description": "A list base64 encoded urls of webhook endpoints that will receive information about the alert" } }, "description": "List of recipients that will recieve the alert." }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "Networks with these tags will be monitored for the alert" }, "description": { "type": "string", "description": "User supplied description of the alert" } }, "example": { "enabled": true, "type": "wanUtilization", "alertCondition": { "duration": 60, "window": 600, "bit_rate_bps": 10000, "loss_ratio": 0.1, "latency_ms": 100, "jitter_ms": 100, "mos": 3.5, "interface": "wan1" }, "recipients": { "emails": [ "admin@example.org" ], "httpServerIds": [ "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aA==" ] }, "networkTags": [ "tag1", "tag2" ], "description": "WAN 1 high utilization" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The alert config ID" }, "type": { "type": "string", "description": "The alert type" }, "enabled": { "type": "boolean", "description": "Is the alert config enabled" }, "alertCondition": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The total duration in seconds that the threshold should be crossed before alerting" }, "window": { "type": "integer", "description": "The look back period in seconds for sensing the alert" }, "bit_rate_bps": { "type": "integer", "description": "The threshold the metric must cross to be valid for alerting. Used only for WAN Utilization alerts." }, "interface": { "type": "string", "description": "The uplink observed for the alert" } }, "description": "The conditions that determine if the alert triggers" }, "recipients": { "type": "object", "properties": { "emails": { "type": "array", "items": { "type": "string" }, "description": "A list of emails that will receive information about the alert" }, "httpServerIds": { "type": "array", "items": { "type": "string" }, "description": "A list base64 encoded urls of webhook endpoints that will receive information about the alert" } }, "description": "List of recipients that will recieve the alert." }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "Networks with these tags will be monitored for the alert" }, "description": { "type": "string", "description": "User supplied description of the alert" } } }, "example": { "id": "1284392014819", "type": "wanUtilization", "enabled": true, "alertCondition": { "duration": 60, "window": 600, "bit_rate_bps": 10000, "interface": "wan1" }, "recipients": { "emails": [ "admin@example.org" ], "httpServerIds": [ "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vcGF0aA==" ] }, "networkTags": [ "tag1", "tag2" ], "description": "WAN 1 high utilization" } } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:write" ] } ], "summary": "Update an organization-wide alert config", "tags": [ "organizations", "configure", "alerts", "profiles" ] }, "delete": { "description": "Removes an organization-wide alert config", "operationId": "deleteOrganizationAlertsProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "alertConfigId", "in": "path", "description": "Alert config ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "sdwan:telemetry:write" ] } ], "summary": "Removes an organization-wide alert config", "tags": [ "organizations", "configure", "alerts", "profiles" ] } }, "/organizations/{organizationId}/api/rest/provisioning/pipelines/jobs": { "get": { "description": "List pipeline jobs, with optional status filtering", "operationId": "getOrganizationApiRestProvisioningPipelinesJobs", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "pipelineIds", "in": "query", "description": "Pipeline IDs to retrieve jobs for", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "status", "in": "query", "description": "If provided, filters jobs by status", "schema": { "type": "string", "enum": [ "complete", "deferred", "failed", "new", "ready", "running", "scheduled" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "pipeline": { "type": "object", "properties": { "id": { "type": "string", "description": "Pipeline ID" } }, "description": "Parent pipeline" }, "jobId": { "type": "string", "description": "Job ID" }, "operation": { "type": "object", "properties": { "name": { "type": "string", "description": "Operation name" } }, "description": "Operation info" }, "status": { "type": "string", "enum": [ "complete", "deferred", "failed", "new", "ready", "running", "scheduled" ], "description": "Job status" }, "errors": { "type": "array", "items": { "type": "object", "properties": { "message": { "type": "string", "description": "Error message" } } }, "description": "Job errors" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Detail name" }, "value": { "type": "string", "description": "Detail value" } } }, "description": "Job details (type-specific)" } } }, "description": "Pipeline job with operation details and status" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "pipeline": { "id": "1234" }, "jobId": "456", "operation": { "name": "enroll wired site" }, "status": "complete", "errors": [ { "message": "Failed to enroll site" } ], "details": [ { "name": "networkId", "value": "N_123" } ] } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } }, "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 pipeline jobs, with optional status filtering", "tags": [ "organizations", "configure", "api", "rest", "provisioning", "pipelines", "jobs" ] } }, "/organizations/{organizationId}/api/rest/provisioning/pipelines/jobs/overviews/byPipeline": { "get": { "description": "Retrieves pipeline overviews with aggregated job status counts", "operationId": "getOrganizationApiRestProvisioningPipelinesJobsOverviewsByPipeline", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "pipelineIds", "in": "query", "description": "Pipeline IDs to retrieve overviews for", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "pipelineId": { "type": "string", "description": "Pipeline ID" }, "operation": { "type": "object", "properties": { "id": { "type": "string", "description": "Pipeline operation identifier" } }, "description": "Pipeline operation info" }, "status": { "type": "string", "description": "Pipeline status" }, "counts": { "type": "object", "properties": { "jobs": { "type": "object", "properties": { "total": { "type": "integer", "minimum": 0, "description": "Total jobs" }, "byStatus": { "type": "object", "properties": { "completed": { "type": "integer", "minimum": 0, "description": "Completed jobs" }, "failed": { "type": "integer", "minimum": 0, "description": "Failed jobs" }, "pending": { "type": "integer", "minimum": 0, "description": "Pending jobs" } }, "description": "Counts by summary status. `completed` includes jobs with raw status `complete`, `failed` includes jobs with raw status `failed`, and `pending` includes every other job status." } }, "description": "Job count breakdown" }, "byJobOperation": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": [ "attach spoke to connectors", "bulk detachment workflow", "bulk enrollment workflow", "complete bulk detachment", "complete bulk enrollment", "complete connector deployment", "complete connector teardown", "complete hub offboarding", "complete hub onboarding", "complete multi cloud onboarding", "deploy CNHE SSE connector", "deploy multi cloud region", "detach spoke from connectors", "detach wired site", "enroll wired site", "offboard multi cloud sites workflow", "onboard multi cloud sites workflow", "teardown CNHE SSE connector", "teardown multi cloud connector" ], "description": "Pipeline job operation display name. Values are registered operation names and may grow additively." }, "total": { "type": "integer", "minimum": 0, "description": "Total jobs for this operation" }, "byStatus": { "type": "object", "properties": { "completed": { "type": "integer", "minimum": 0, "description": "Completed jobs" }, "failed": { "type": "integer", "minimum": 0, "description": "Failed jobs" }, "pending": { "type": "integer", "minimum": 0, "description": "Pending jobs" } }, "description": "Counts by summary status. `completed` includes jobs with raw status `complete`, `failed` includes jobs with raw status `failed`, and `pending` includes every other job status." } } }, "description": "Job count breakdown by pipeline job operation. Contains at most one entry per pipeline job operation with matching jobs. New registered operations may add entries over time." } }, "description": "Job counts" } } }, "description": "Pipeline summary with aggregated job and operation status counts" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "pipelineId": "1234", "operation": { "id": "attachOrganizationSaseSites" }, "status": "active", "counts": { "jobs": { "total": 3, "byStatus": { "completed": 1, "failed": 1, "pending": 1 } }, "byJobOperation": [ { "name": "enroll wired site", "total": 2, "byStatus": { "completed": 1, "failed": 0, "pending": 1 } } ] } } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Retrieves pipeline overviews with aggregated job status counts", "tags": [ "organizations", "configure", "api", "rest", "provisioning", "pipelines", "jobs", "overviews", "byPipeline" ] } }, "/organizations/{organizationId}/apiRequests": { "get": { "description": "List the API requests made by an organization", "operationId": "getOrganizationApiRequests", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 31 days.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "adminId", "in": "query", "description": "Filter the results by the ID of the admin who made the API requests", "schema": { "type": "string" } }, { "name": "path", "in": "query", "description": "Filter the results by the path of the API requests", "schema": { "type": "string" } }, { "name": "method", "in": "query", "description": "Filter the results by the method of the API requests (must be 'GET', 'PUT', 'POST' or 'DELETE')", "schema": { "type": "string", "enum": [ "DELETE", "GET", "POST", "PUT" ] } }, { "name": "responseCode", "in": "query", "description": "Filter the results by the response code of the API requests", "schema": { "type": "integer" } }, { "name": "sourceIp", "in": "query", "description": "Filter the results by the IP address of the originating API request", "schema": { "type": "string" } }, { "name": "userAgent", "in": "query", "description": "Filter the results by the user agent string of the API request", "schema": { "type": "string" } }, { "name": "version", "in": "query", "description": "Filter the results by the API version of the API request", "schema": { "type": "integer", "enum": [ 0, 1 ] } }, { "name": "operationIds", "in": "query", "description": "Filter the results by one or more operation IDs for the API request", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "adminId": { "type": "string", "description": "Database ID for the admin user who made the API request." }, "method": { "type": "string", "description": "HTTP method used in the API request." }, "host": { "type": "string", "description": "The host which the API request was directed at." }, "path": { "type": "string", "description": "The API request path." }, "queryString": { "type": "string", "description": "The query string sent with the API request." }, "userAgent": { "type": "string", "description": "The API request user agent." }, "ts": { "type": "string", "format": "date-time", "description": "Timestamp, in iso8601 format, indicating when the API request was made." }, "responseCode": { "type": "integer", "description": "API request response code." }, "sourceIp": { "type": "string", "description": "Public IP address from which the API request was made." }, "version": { "type": "integer", "enum": [ 0, 1 ], "description": "API version of the endpoint." }, "operationId": { "type": "string", "description": "Operation ID for the endpoint." }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the client which made the request, if applicable.", "nullable": true }, "type": { "type": "string", "enum": [ "api_key", "oauth" ], "description": "Type of client which made the request, if applicable. Available options are: oauth, api_key" } }, "description": "Client information" } } } }, "example": [ { "adminId": "212406", "method": "GET", "host": "server.example.com", "path": "/api/v1/organizations/12345/apiRequests", "queryString": "timespan=604800", "userAgent": "PostmanRuntime/7.6.0", "ts": "2018-02-11T00:00:00.090210Z", "responseCode": 200, "sourceIp": "123.123.123.1", "version": 1, "operationId": "getOrganizationApiRequests", "client": { "id": "0hoXjtjX6C-Nk4Nr6kEbCJJFRmIgycaG1HBE572hlIc", "type": "oauth" } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the API requests made by an organization", "tags": [ "organizations", "monitor", "apiRequests" ] } }, "/organizations/{organizationId}/apiRequests/overview": { "get": { "description": "Return an aggregated overview of API requests data", "operationId": "getOrganizationApiRequestsOverview", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 31 days.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "responseCodeCounts": { "type": "object", "properties": { "200": { "type": "integer", "description": "HTTP 200 response code count." }, "201": { "type": "integer", "description": "HTTP 201 response code count." }, "202": { "type": "integer", "description": "HTTP 202 response code count." }, "203": { "type": "integer", "description": "HTTP 203 response code count." }, "204": { "type": "integer", "description": "HTTP 204 response code count." }, "205": { "type": "integer", "description": "HTTP 205 response code count." }, "206": { "type": "integer", "description": "HTTP 206 response code count." }, "207": { "type": "integer", "description": "HTTP 207 response code count." }, "208": { "type": "integer", "description": "HTTP 208 response code count." }, "226": { "type": "integer", "description": "HTTP 226 response code count." }, "300": { "type": "integer", "description": "HTTP 300 response code count." }, "301": { "type": "integer", "description": "HTTP 301 response code count." }, "302": { "type": "integer", "description": "HTTP 302 response code count." }, "303": { "type": "integer", "description": "HTTP 303 response code count." }, "304": { "type": "integer", "description": "HTTP 304 response code count." }, "305": { "type": "integer", "description": "HTTP 305 response code count." }, "306": { "type": "integer", "description": "HTTP 306 response code count." }, "307": { "type": "integer", "description": "HTTP 307 response code count." }, "308": { "type": "integer", "description": "HTTP 308 response code count." }, "400": { "type": "integer", "description": "HTTP 400 response code count." }, "401": { "type": "integer", "description": "HTTP 401 response code count." }, "402": { "type": "integer", "description": "HTTP 402 response code count." }, "403": { "type": "integer", "description": "HTTP 403 response code count." }, "404": { "type": "integer", "description": "HTTP 404 response code count." }, "405": { "type": "integer", "description": "HTTP 405 response code count." }, "406": { "type": "integer", "description": "HTTP 406 response code count." }, "407": { "type": "integer", "description": "HTTP 407 response code count." }, "408": { "type": "integer", "description": "HTTP 408 response code count." }, "409": { "type": "integer", "description": "HTTP 409 response code count." }, "410": { "type": "integer", "description": "HTTP 410 response code count." }, "411": { "type": "integer", "description": "HTTP 411 response code count." }, "412": { "type": "integer", "description": "HTTP 412 response code count." }, "413": { "type": "integer", "description": "HTTP 413 response code count." }, "414": { "type": "integer", "description": "HTTP 414 response code count." }, "415": { "type": "integer", "description": "HTTP 415 response code count." }, "416": { "type": "integer", "description": "HTTP 416 response code count." }, "417": { "type": "integer", "description": "HTTP 417 response code count." }, "421": { "type": "integer", "description": "HTTP 421 response code count." }, "422": { "type": "integer", "description": "HTTP 422 response code count." }, "423": { "type": "integer", "description": "HTTP 423 response code count." }, "424": { "type": "integer", "description": "HTTP 424 response code count." }, "425": { "type": "integer", "description": "HTTP 425 response code count." }, "426": { "type": "integer", "description": "HTTP 426 response code count." }, "428": { "type": "integer", "description": "HTTP 428 response code count." }, "429": { "type": "integer", "description": "HTTP 429 response code count." }, "431": { "type": "integer", "description": "HTTP 431 response code count." }, "451": { "type": "integer", "description": "HTTP 451 response code count." }, "500": { "type": "integer", "description": "HTTP 500 response code count." } }, "description": "object of all supported HTTP response code" } } }, "example": { "responseCodeCounts": { "200": 500, "201": 100, "202": 20, "203": 50, "204": 75, "205": 0, "206": 0, "207": 0, "208": 0, "226": 0, "300": 0, "301": 60, "302": 0, "303": 0, "304": 0, "305": 0, "306": 0, "307": 0, "308": 0, "400": 20, "401": 0, "402": 32, "403": 0, "404": 55, "405": 0, "406": 0, "407": 0, "408": 0, "409": 0, "410": 0, "411": 0, "412": 0, "413": 0, "414": 0, "415": 0, "416": 0, "417": 0, "421": 0, "422": 0, "423": 0, "424": 0, "425": 0, "426": 0, "428": 0, "429": 0, "431": 0, "451": 0, "500": 3 } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return an aggregated overview of API requests data", "tags": [ "organizations", "monitor", "apiRequests", "overview" ] } }, "/organizations/{organizationId}/apiRequests/overview/responseCodes/byInterval": { "get": { "description": "Tracks organizations' API requests by response code across a given time period", "operationId": "getOrganizationApiRequestsOverviewResponseCodesByInterval", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 31 days. If interval is provided, the timespan will be autocalculated.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "interval", "in": "query", "description": "The time interval in seconds for returned data. The valid intervals are: 120, 3600, 14400, 21600. The default is 21600. Interval is calculated if time params are provided.", "schema": { "type": "integer" } }, { "name": "version", "in": "query", "description": "Filter by API version of the endpoint. Allowable values are: [0, 1]", "schema": { "type": "integer", "enum": [ 0, 1 ] } }, { "name": "operationIds", "in": "query", "description": "Filter by operation ID of the endpoint", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "sourceIps", "in": "query", "description": "Filter by source IP that made the API request", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "adminIds", "in": "query", "description": "Filter by admin ID of user that made the API request", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "userAgent", "in": "query", "description": "Filter by user agent string for API request. This will filter by a complete or partial match.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "startTs": { "type": "string", "format": "date-time", "description": "The start time of the access period" }, "endTs": { "type": "string", "format": "date-time", "description": "The end time of the access period" }, "counts": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "integer", "description": "Response status code of the API response" }, "count": { "type": "integer", "description": "Number of records that match the status code" } } }, "description": "list of response codes and a count of how many requests had that code in the given time period" } } } }, "example": [ { "startTs": "2018-02-11T00:00:00Z", "endTs": "2018-05-12T00:00:00Z", "counts": [ { "code": 200, "count": 198938 } ] } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Tracks organizations' API requests by response code across a given time period", "tags": [ "organizations", "monitor", "apiRequests", "overview", "responseCodes", "byInterval" ] } }, "/organizations/{organizationId}/assurance/alerts": { "get": { "description": "Return all health alerts for an organization", "operationId": "getOrganizationAssuranceAlerts", "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 4 - 300. Default is 30.", "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": "sortOrder", "in": "query", "description": "Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } }, { "name": "networkId", "in": "query", "description": "Optional parameter to filter alerts by network ids.", "schema": { "type": "string" } }, { "name": "severity", "in": "query", "description": "Optional parameter to filter by severity type.", "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Optional parameter to filter by alert type.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "aaa_not_enabled", "acl_ipv4_conflict", "afc_height_empty", "afc_status_bad", "ap_became_repeater", "ap_noauth", "ap_tunnel_down", "arp_failure", "asymmetry", "aurora1_subnet_overlap", "aurora2_consilience", "auto_vpn_failure", "auto_vpn_uplink_decision", "bad_connectivity", "bad_gateway", "bad_ip6conf", "bad_ipconf", "bad_vlanconf", "ccd", "cellular_data_cap", "cellular_failover", "cellular_failover_bandwidth", "cellular_up_down", "certificate_enrollment", "certificate_expiration", "certificate_renewal", "client_wayfinding_clustering_warning", "client_wayfinding_missing_config", "cloud_archive_alert", "collisions_errors", "config_bad_fetch", "config_error", "config_stale", "configuration_change", "console_error_authorization", "console_error_timeout", "country_mismatch", "crc_errors", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", "device_config_failure", "device_no_space", "device_ping_status", "dfs_event_pattern", "dhcp_no_leases", "disassociation", "dns_down", "dom_stats_alert", "door_tamper", "eapol_test_failed", "ethernet_negotiation_failure", "eu_regulatory_firmware_mismatch", "fan_down", "faulty_cable", "firewall", "firmware_version", "frags_errors", "high_cpu_mx", "high_interference", "high_memory_mx", "high_temperature_mx", "http_acl_ipv6_conflict", "https_secure_port_conflict", "https_secure_trustpoint_missing", "https_session_modules_conflict", "image_sensor_failure", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", "invalid_config", "iot_orchestrator_grpc_down", "ip_conflict", "isp_issue_local_branch", "jabbers_errors", "known_hardware_problem", "l3_dynamic_routes_overflow", "l3_hosts_overflow", "line_vty_conflict", "line_vty_error", "low_power", "mac_flap_alert", "manual_config_fix_required", "manual_country_mismatch", "mars_read_only_ap_unreachable", "mcg_dr_allowed_vlans_mismatch", "meraki_shelluser_conflict", "meraki_tdluser_conflict", "meraki_user_conflict", "mg_safe_mode", "mgmt_uplink_vlan_mismatch", "missing_config_options", "missized_errors", "mmc_issue", "modular_supervisor_node_group_mismatch", "monitoring_stack_error", "monitoring_tls_tunnel_connected", "monitoring_unsupported_version", "mps_down", "netconf_abnormal", "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", "not_supported_compression_algorithm", "not_supported_hostkey_algorithm", "not_supported_kex_algorithm", "not_supported_mac_algorithm", "not_supported_publickey_algorithm", "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", "openroaming_firmware_incompatible", "pcc_apns_check_cert", "pcc_apns_expired", "pcc_apns_expires_soon", "pcc_duplicate_device_identifier", "pcc_duplicate_imei", "pcc_empty_device_identifier", "pcc_empty_imei", "pcc_self_signed_scep_expired", "pcc_self_signed_scep_expires_soon", "pending_config_approval", "poe_denied", "poe_overload", "poe_power_error", "port_channel_mixed_speed_ports", "primary_uplink_status", "probe_cable_unknown", "push_api_device_availability", "radar_detection", "reboot_count", "reboot_count_no_xmit_mon", "reboot_count_panic", "reg_dom_mismatch", "rogue_dhcp", "rps_backup", "rps_down", "secure_connect_auth_failure", "secure_connect_auth_in_progress", "secure_connect_auth_timeout", "snmp_community_string_too_long", "speed_downshift", "ssh_error_authentication", "ssh_error_authorization", "ssh_error_timeout", "ssh_port_rotary_conflict", "ssid_radius_server", "stack_cable_auth_failure", "stack_misconfigured", "stack_not_configured", "stack_version_mismatch", "start_monitoring_provisioning", "sticky_client", "stp_bpdu_conflict", "stp_bpdu_delay", "stp_bpduguard_active", "stp_loopguard_active", "stp_root_status_changed", "stp_rootguard_active", "stp_tcn_errors", "successful_connect_degraded", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switch_reserved_vlans", "switchport_allowed_vlans_missing", "telemetry_collector_cert_expiration", "telemetry_streaming_failure", "temperature_cable_disconnect", "thousand_eyes_application_alert", "time_to_connect_degraded", "traffic_shaping_rule_saturation", "udld_err_n_mismatch", "udld_err_tx_rx_loop", "udld_err_unidir", "unknown_config_options", "unreachable", "unseen", "uplink_saturation", "using_mtun_http", "vlan_disconnect", "vlan_mismatch", "vlan_prefix_starvation", "vmx_incompatible_firmware", "voip_jitter", "voip_mos", "voip_packet_loss", "vpn_backhaul", "vpn_outage", "vrrp_failover", "vwlc_unclaimed_standby", "wan_latency", "wan_packet_loss", "wan_status", "wan_usage", "water_cable_disconnect", "water_usb_connect", "wireless_capacity_degraded", "wireless_coverage_degraded", "wlc_add_standby", "wlc_ap_guardrail", "wlc_ap_limit", "wlc_ap_onboard", "wlc_ha_active_recovery", "wlc_ha_fail_over_past_day", "wlc_ha_standby_offline", "wlc_ha_standby_recovery", "wlc_interface_errors", "wlc_unassigned_ap", "wpa3_warning", "wrong_console_credentials", "yang_authz_conflict", "yang_process_abnormal", "z_canary_alert", "z_canary_priority_alert" ] } } }, { "name": "tsStart", "in": "query", "description": "Optional parameter to filter by starting timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "tsEnd", "in": "query", "description": "Optional parameter to filter by end timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "category", "in": "query", "description": "Optional parameter to filter by category.", "schema": { "type": "string", "enum": [ "configuration", "connectivity", "device_health", "experience_metrics", "insights" ] } }, { "name": "sortBy", "in": "query", "description": "Optional parameter to set column to sort by.", "schema": { "type": "string", "enum": [ "category", "dismissedAt", "resolvedAt", "severity", "startedAt" ] } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by primary device serial", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "Optional parameter to filter by device types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MCG", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "WLC", "Z" ] } } }, { "name": "deviceTags", "in": "query", "description": "Optional parameter to filter by device tags", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "active", "in": "query", "description": "Optional parameter to filter by active alerts defaults to true", "schema": { "type": "boolean" } }, { "name": "dismissed", "in": "query", "description": "Optional parameter to filter by dismissed alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "resolved", "in": "query", "description": "Optional parameter to filter by resolved alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "suppressAlertsForOfflineNodes", "in": "query", "description": "When set to true the api will only return connectivity alerts for a given device if that device is in an offline state. This only applies to devices. This is ignored when resolved is true. Example: If a Switch has a VLan Mismatch and is Unreachable. only the Unreachable alert will be returned. Defaults to false.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the health alert" }, "categoryType": { "type": "string", "description": "Category type that the health alert belongs to" }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the network where alert appears" }, "id": { "type": "string", "description": "ID of the network where alert appears" }, "url": { "type": "string", "description": "Authoritative Dashboard URL for the network" } }, "required": [ "name", "id", "url" ], "description": "Network details" }, "startedAt": { "type": "string", "format": "date-time", "description": "Time when the alert started" }, "resolvedAt": { "type": "string", "format": "date-time", "description": "Time when the alert was resolved", "nullable": true }, "dismissedAt": { "type": "string", "format": "date-time", "description": "Time when the alert was dismissed", "nullable": true }, "deviceType": { "type": "string", "description": "Device Type that the alert occurred on", "nullable": true }, "type": { "type": "string", "description": "Alert Type" }, "title": { "type": "string", "description": "Human Readable Title for Alert type" }, "description": { "type": "string", "description": "Description of the alert", "nullable": true }, "severity": { "type": "string", "description": "Alert severity" }, "scope": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "URL of affected device" }, "name": { "type": "string", "description": "Name of affected device" }, "order": { "type": "integer", "description": "Order of affected device in array" }, "productType": { "type": "string", "description": "Type of affected device" }, "serial": { "type": "string", "description": "Serial of affected device" }, "mac": { "type": "string", "description": "MAC address of affected device" }, "imei": { "type": "string", "description": "IMEI of affected device" }, "lldp": { "type": "object", "properties": { "port": { "type": "string", "description": "Port of affect device" } }, "description": "Port of affected device" } } }, "description": "Description of affected devices" }, "applications": { "type": "array", "items": { "type": "object" }, "description": "Applications affected by the alert" }, "peers": { "type": "array", "items": { "type": "object" }, "description": "Peers affected by the alert" }, "others": { "type": "array", "items": { "type": "object" }, "description": "Other affected items by the alert" } }, "description": "Scope of the alert (which devices and networks are affected)" } }, "required": [ "id", "categoryType", "network", "startedAt", "type", "title", "severity" ] } }, "example": [ { "id": "1234", "categoryType": "connectivity", "network": { "name": "Network 2", "id": "L_1020981", "url": "https://n1.meraki.com//n//manage/nodes/list" }, "startedAt": "2022-04-01T15:48:57Z", "resolvedAt": "2022-04-02T15:48:57Z", "dismissedAt": "2022-04-02T15:48:57Z", "deviceType": "MS", "type": "crc_errors_error", "title": "CRC errors detected", "description": "Very high proportion of CRC errors on port id", "severity": "warning", "scope": { "devices": [ { "url": "https://n237.meraki.com/MS-PM-First-Floo/n/_5kUKaTd/manage/nodes/new_list/7911238", "name": "Device 1", "order": 0, "productType": "switch", "serial": "Q2QP-5VYM-YM8H", "mac": "aa:bb:cd:dd", "imei": "353593090031649", "lldp": { "port": "33" } } ] } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return all health alerts for an organization", "tags": [ "organizations", "monitor", "alerts" ] } }, "/organizations/{organizationId}/assurance/alerts/dismiss": { "post": { "description": "Dismiss health alerts", "operationId": "dismissOrganizationAssuranceAlerts", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "alertIds": { "type": "array", "items": { "type": "string" }, "description": "Array of alert IDs in this organization to dismiss. Missing or inaccessible alert IDs return 404." } }, "example": { "alertIds": [ "1234", "4567" ] }, "required": [ "alertIds" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "summary": "Dismiss health alerts", "tags": [ "organizations", "monitor", "alerts" ] } }, "/organizations/{organizationId}/assurance/alerts/overview": { "get": { "description": "Return overview of active health alerts for an organization", "operationId": "getOrganizationAssuranceAlertsOverview", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkId", "in": "query", "description": "Optional parameter to filter alerts overview by network ids.", "schema": { "type": "string" } }, { "name": "severity", "in": "query", "description": "Optional parameter to filter alerts overview by severity type.", "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Optional parameter to filter by alert type.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "aaa_not_enabled", "acl_ipv4_conflict", "afc_height_empty", "afc_status_bad", "ap_became_repeater", "ap_noauth", "ap_tunnel_down", "arp_failure", "asymmetry", "aurora1_subnet_overlap", "aurora2_consilience", "auto_vpn_failure", "auto_vpn_uplink_decision", "bad_connectivity", "bad_gateway", "bad_ip6conf", "bad_ipconf", "bad_vlanconf", "ccd", "cellular_data_cap", "cellular_failover", "cellular_failover_bandwidth", "cellular_up_down", "certificate_enrollment", "certificate_expiration", "certificate_renewal", "client_wayfinding_clustering_warning", "client_wayfinding_missing_config", "cloud_archive_alert", "collisions_errors", "config_bad_fetch", "config_error", "config_stale", "configuration_change", "console_error_authorization", "console_error_timeout", "country_mismatch", "crc_errors", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", "device_config_failure", "device_no_space", "device_ping_status", "dfs_event_pattern", "dhcp_no_leases", "disassociation", "dns_down", "dom_stats_alert", "door_tamper", "eapol_test_failed", "ethernet_negotiation_failure", "eu_regulatory_firmware_mismatch", "fan_down", "faulty_cable", "firewall", "firmware_version", "frags_errors", "high_cpu_mx", "high_interference", "high_memory_mx", "high_temperature_mx", "http_acl_ipv6_conflict", "https_secure_port_conflict", "https_secure_trustpoint_missing", "https_session_modules_conflict", "image_sensor_failure", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", "invalid_config", "iot_orchestrator_grpc_down", "ip_conflict", "isp_issue_local_branch", "jabbers_errors", "known_hardware_problem", "l3_dynamic_routes_overflow", "l3_hosts_overflow", "line_vty_conflict", "line_vty_error", "low_power", "mac_flap_alert", "manual_config_fix_required", "manual_country_mismatch", "mars_read_only_ap_unreachable", "mcg_dr_allowed_vlans_mismatch", "meraki_shelluser_conflict", "meraki_tdluser_conflict", "meraki_user_conflict", "mg_safe_mode", "mgmt_uplink_vlan_mismatch", "missing_config_options", "missized_errors", "mmc_issue", "modular_supervisor_node_group_mismatch", "monitoring_stack_error", "monitoring_tls_tunnel_connected", "monitoring_unsupported_version", "mps_down", "netconf_abnormal", "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", "not_supported_compression_algorithm", "not_supported_hostkey_algorithm", "not_supported_kex_algorithm", "not_supported_mac_algorithm", "not_supported_publickey_algorithm", "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", "openroaming_firmware_incompatible", "pcc_apns_check_cert", "pcc_apns_expired", "pcc_apns_expires_soon", "pcc_duplicate_device_identifier", "pcc_duplicate_imei", "pcc_empty_device_identifier", "pcc_empty_imei", "pcc_self_signed_scep_expired", "pcc_self_signed_scep_expires_soon", "pending_config_approval", "poe_denied", "poe_overload", "poe_power_error", "port_channel_mixed_speed_ports", "primary_uplink_status", "probe_cable_unknown", "push_api_device_availability", "radar_detection", "reboot_count", "reboot_count_no_xmit_mon", "reboot_count_panic", "reg_dom_mismatch", "rogue_dhcp", "rps_backup", "rps_down", "secure_connect_auth_failure", "secure_connect_auth_in_progress", "secure_connect_auth_timeout", "snmp_community_string_too_long", "speed_downshift", "ssh_error_authentication", "ssh_error_authorization", "ssh_error_timeout", "ssh_port_rotary_conflict", "ssid_radius_server", "stack_cable_auth_failure", "stack_misconfigured", "stack_not_configured", "stack_version_mismatch", "start_monitoring_provisioning", "sticky_client", "stp_bpdu_conflict", "stp_bpdu_delay", "stp_bpduguard_active", "stp_loopguard_active", "stp_root_status_changed", "stp_rootguard_active", "stp_tcn_errors", "successful_connect_degraded", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switch_reserved_vlans", "switchport_allowed_vlans_missing", "telemetry_collector_cert_expiration", "telemetry_streaming_failure", "temperature_cable_disconnect", "thousand_eyes_application_alert", "time_to_connect_degraded", "traffic_shaping_rule_saturation", "udld_err_n_mismatch", "udld_err_tx_rx_loop", "udld_err_unidir", "unknown_config_options", "unreachable", "unseen", "uplink_saturation", "using_mtun_http", "vlan_disconnect", "vlan_mismatch", "vlan_prefix_starvation", "vmx_incompatible_firmware", "voip_jitter", "voip_mos", "voip_packet_loss", "vpn_backhaul", "vpn_outage", "vrrp_failover", "vwlc_unclaimed_standby", "wan_latency", "wan_packet_loss", "wan_status", "wan_usage", "water_cable_disconnect", "water_usb_connect", "wireless_capacity_degraded", "wireless_coverage_degraded", "wlc_add_standby", "wlc_ap_guardrail", "wlc_ap_limit", "wlc_ap_onboard", "wlc_ha_active_recovery", "wlc_ha_fail_over_past_day", "wlc_ha_standby_offline", "wlc_ha_standby_recovery", "wlc_interface_errors", "wlc_unassigned_ap", "wpa3_warning", "wrong_console_credentials", "yang_authz_conflict", "yang_process_abnormal", "z_canary_alert", "z_canary_priority_alert" ] } } }, { "name": "tsStart", "in": "query", "description": "Optional parameter to filter by starting timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "tsEnd", "in": "query", "description": "Optional parameter to filter by end timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "category", "in": "query", "description": "Optional parameter to filter by category.", "schema": { "type": "string", "enum": [ "configuration", "connectivity", "device_health", "experience_metrics", "insights" ] } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by primary device serial", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "Optional parameter to filter by device types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MCG", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "WLC", "Z" ] } } }, { "name": "deviceTags", "in": "query", "description": "Optional parameter to filter by device tags", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "active", "in": "query", "description": "Optional parameter to filter by active alerts defaults to true", "schema": { "type": "boolean" } }, { "name": "dismissed", "in": "query", "description": "Optional parameter to filter by dismissed alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "resolved", "in": "query", "description": "Optional parameter to filter by resolved alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "suppressAlertsForOfflineNodes", "in": "query", "description": "When set to true the api will only return connectivity alerts for a given device if that device is in an offline state. This only applies to devices. This is ignored when resolved is true. Example: If a Switch has a VLan Mismatch and is Unreachable. only the Unreachable alert will be returned. Defaults to false.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of alerts on the organization" }, "bySeverity": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "critical", "informational", "warning" ], "description": "Severity Type" }, "count": { "type": "integer", "description": "Total count of the given severity type" } }, "required": [ "type", "count" ] }, "description": "Counts of alerts on organization by severity" } }, "required": [ "total", "bySeverity" ], "description": "Counts of alerts on the organization" } }, "required": [ "counts" ] }, "example": { "counts": { "total": 14, "bySeverity": [ { "type": "critical", "count": 1 } ] } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return overview of active health alerts for an organization", "tags": [ "organizations", "monitor", "alerts", "overview" ] } }, "/organizations/{organizationId}/assurance/alerts/overview/byNetwork": { "get": { "description": "Return a Summary of Alerts grouped by network and severity", "operationId": "getOrganizationAssuranceAlertsOverviewByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } }, { "name": "networkId", "in": "query", "description": "Optional parameter to filter alerts overview by network id.", "schema": { "type": "string" } }, { "name": "severity", "in": "query", "description": "Optional parameter to filter alerts overview by severity type.", "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Optional parameter to filter by alert type.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "aaa_not_enabled", "acl_ipv4_conflict", "afc_height_empty", "afc_status_bad", "ap_became_repeater", "ap_noauth", "ap_tunnel_down", "arp_failure", "asymmetry", "aurora1_subnet_overlap", "aurora2_consilience", "auto_vpn_failure", "auto_vpn_uplink_decision", "bad_connectivity", "bad_gateway", "bad_ip6conf", "bad_ipconf", "bad_vlanconf", "ccd", "cellular_data_cap", "cellular_failover", "cellular_failover_bandwidth", "cellular_up_down", "certificate_enrollment", "certificate_expiration", "certificate_renewal", "client_wayfinding_clustering_warning", "client_wayfinding_missing_config", "cloud_archive_alert", "collisions_errors", "config_bad_fetch", "config_error", "config_stale", "configuration_change", "console_error_authorization", "console_error_timeout", "country_mismatch", "crc_errors", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", "device_config_failure", "device_no_space", "device_ping_status", "dfs_event_pattern", "dhcp_no_leases", "disassociation", "dns_down", "dom_stats_alert", "door_tamper", "eapol_test_failed", "ethernet_negotiation_failure", "eu_regulatory_firmware_mismatch", "fan_down", "faulty_cable", "firewall", "firmware_version", "frags_errors", "high_cpu_mx", "high_interference", "high_memory_mx", "high_temperature_mx", "http_acl_ipv6_conflict", "https_secure_port_conflict", "https_secure_trustpoint_missing", "https_session_modules_conflict", "image_sensor_failure", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", "invalid_config", "iot_orchestrator_grpc_down", "ip_conflict", "isp_issue_local_branch", "jabbers_errors", "known_hardware_problem", "l3_dynamic_routes_overflow", "l3_hosts_overflow", "line_vty_conflict", "line_vty_error", "low_power", "mac_flap_alert", "manual_config_fix_required", "manual_country_mismatch", "mars_read_only_ap_unreachable", "mcg_dr_allowed_vlans_mismatch", "meraki_shelluser_conflict", "meraki_tdluser_conflict", "meraki_user_conflict", "mg_safe_mode", "mgmt_uplink_vlan_mismatch", "missing_config_options", "missized_errors", "mmc_issue", "modular_supervisor_node_group_mismatch", "monitoring_stack_error", "monitoring_tls_tunnel_connected", "monitoring_unsupported_version", "mps_down", "netconf_abnormal", "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", "not_supported_compression_algorithm", "not_supported_hostkey_algorithm", "not_supported_kex_algorithm", "not_supported_mac_algorithm", "not_supported_publickey_algorithm", "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", "openroaming_firmware_incompatible", "pcc_apns_check_cert", "pcc_apns_expired", "pcc_apns_expires_soon", "pcc_duplicate_device_identifier", "pcc_duplicate_imei", "pcc_empty_device_identifier", "pcc_empty_imei", "pcc_self_signed_scep_expired", "pcc_self_signed_scep_expires_soon", "pending_config_approval", "poe_denied", "poe_overload", "poe_power_error", "port_channel_mixed_speed_ports", "primary_uplink_status", "probe_cable_unknown", "push_api_device_availability", "radar_detection", "reboot_count", "reboot_count_no_xmit_mon", "reboot_count_panic", "reg_dom_mismatch", "rogue_dhcp", "rps_backup", "rps_down", "secure_connect_auth_failure", "secure_connect_auth_in_progress", "secure_connect_auth_timeout", "snmp_community_string_too_long", "speed_downshift", "ssh_error_authentication", "ssh_error_authorization", "ssh_error_timeout", "ssh_port_rotary_conflict", "ssid_radius_server", "stack_cable_auth_failure", "stack_misconfigured", "stack_not_configured", "stack_version_mismatch", "start_monitoring_provisioning", "sticky_client", "stp_bpdu_conflict", "stp_bpdu_delay", "stp_bpduguard_active", "stp_loopguard_active", "stp_root_status_changed", "stp_rootguard_active", "stp_tcn_errors", "successful_connect_degraded", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switch_reserved_vlans", "switchport_allowed_vlans_missing", "telemetry_collector_cert_expiration", "telemetry_streaming_failure", "temperature_cable_disconnect", "thousand_eyes_application_alert", "time_to_connect_degraded", "traffic_shaping_rule_saturation", "udld_err_n_mismatch", "udld_err_tx_rx_loop", "udld_err_unidir", "unknown_config_options", "unreachable", "unseen", "uplink_saturation", "using_mtun_http", "vlan_disconnect", "vlan_mismatch", "vlan_prefix_starvation", "vmx_incompatible_firmware", "voip_jitter", "voip_mos", "voip_packet_loss", "vpn_backhaul", "vpn_outage", "vrrp_failover", "vwlc_unclaimed_standby", "wan_latency", "wan_packet_loss", "wan_status", "wan_usage", "water_cable_disconnect", "water_usb_connect", "wireless_capacity_degraded", "wireless_coverage_degraded", "wlc_add_standby", "wlc_ap_guardrail", "wlc_ap_limit", "wlc_ap_onboard", "wlc_ha_active_recovery", "wlc_ha_fail_over_past_day", "wlc_ha_standby_offline", "wlc_ha_standby_recovery", "wlc_interface_errors", "wlc_unassigned_ap", "wpa3_warning", "wrong_console_credentials", "yang_authz_conflict", "yang_process_abnormal", "z_canary_alert", "z_canary_priority_alert" ] } } }, { "name": "tsStart", "in": "query", "description": "Optional parameter to filter by starting timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "tsEnd", "in": "query", "description": "Optional parameter to filter by end timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "category", "in": "query", "description": "Optional parameter to filter by category.", "schema": { "type": "string", "enum": [ "configuration", "connectivity", "device_health", "experience_metrics", "insights" ] } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by primary device serial", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "Optional parameter to filter by device types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MCG", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "WLC", "Z" ] } } }, { "name": "deviceTags", "in": "query", "description": "Optional parameter to filter by device tags", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "active", "in": "query", "description": "Optional parameter to filter by active alerts defaults to true", "schema": { "type": "boolean" } }, { "name": "dismissed", "in": "query", "description": "Optional parameter to filter by dismissed alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "resolved", "in": "query", "description": "Optional parameter to filter by resolved alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "suppressAlertsForOfflineNodes", "in": "query", "description": "When set to true the api will only return connectivity alerts for a given device if that device is in an offline state. This only applies to devices. This is ignored when resolved is true. Example: If a Switch has a VLan Mismatch and is Unreachable. only the Unreachable alert will be returned. Defaults to false.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "id" }, "networkName": { "type": "string", "description": "Name" }, "alertCount": { "type": "integer", "description": "Total Alerts" }, "lastAlertedAt": { "type": "string", "format": "date-time", "description": "Last time an alert was seen for this network" }, "severityCounts": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Type" }, "count": { "type": "integer", "description": "Count" } }, "required": [ "type", "count" ] }, "description": "Alerts By Severity" } }, "required": [ "networkId", "networkName", "alertCount", "lastAlertedAt", "severityCounts" ] }, "description": "Alert Counts by Network" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "integer", "description": "Total Alerts" } }, "required": [ "items" ], "description": "Counts" } }, "required": [ "counts" ], "description": "Metadata about the response" } }, "required": [ "items", "meta" ] }, "example": { "items": [ { "networkId": "L_30618", "networkName": "s01797.us", "alertCount": 3, "lastAlertedAt": "2022-04-01T15:48:57Z", "severityCounts": [ { "type": "warning", "count": 3 } ] } ], "meta": { "counts": { "items": 2 } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return a Summary of Alerts grouped by network and severity", "tags": [ "organizations", "monitor", "alerts", "overview", "byNetwork" ] } }, "/organizations/{organizationId}/assurance/alerts/overview/byType": { "get": { "description": "Return a Summary of Alerts grouped by type and severity", "operationId": "getOrganizationAssuranceAlertsOverviewByType", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'ascending'.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } }, { "name": "networkId", "in": "query", "description": "Optional parameter to filter alerts overview by network ids.", "schema": { "type": "string" } }, { "name": "severity", "in": "query", "description": "Optional parameter to filter alerts overview by severity type.", "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Optional parameter to filter by alert type.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "aaa_not_enabled", "acl_ipv4_conflict", "afc_height_empty", "afc_status_bad", "ap_became_repeater", "ap_noauth", "ap_tunnel_down", "arp_failure", "asymmetry", "aurora1_subnet_overlap", "aurora2_consilience", "auto_vpn_failure", "auto_vpn_uplink_decision", "bad_connectivity", "bad_gateway", "bad_ip6conf", "bad_ipconf", "bad_vlanconf", "ccd", "cellular_data_cap", "cellular_failover", "cellular_failover_bandwidth", "cellular_up_down", "certificate_enrollment", "certificate_expiration", "certificate_renewal", "client_wayfinding_clustering_warning", "client_wayfinding_missing_config", "cloud_archive_alert", "collisions_errors", "config_bad_fetch", "config_error", "config_stale", "configuration_change", "console_error_authorization", "console_error_timeout", "country_mismatch", "crc_errors", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", "device_config_failure", "device_no_space", "device_ping_status", "dfs_event_pattern", "dhcp_no_leases", "disassociation", "dns_down", "dom_stats_alert", "door_tamper", "eapol_test_failed", "ethernet_negotiation_failure", "eu_regulatory_firmware_mismatch", "fan_down", "faulty_cable", "firewall", "firmware_version", "frags_errors", "high_cpu_mx", "high_interference", "high_memory_mx", "high_temperature_mx", "http_acl_ipv6_conflict", "https_secure_port_conflict", "https_secure_trustpoint_missing", "https_session_modules_conflict", "image_sensor_failure", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", "invalid_config", "iot_orchestrator_grpc_down", "ip_conflict", "isp_issue_local_branch", "jabbers_errors", "known_hardware_problem", "l3_dynamic_routes_overflow", "l3_hosts_overflow", "line_vty_conflict", "line_vty_error", "low_power", "mac_flap_alert", "manual_config_fix_required", "manual_country_mismatch", "mars_read_only_ap_unreachable", "mcg_dr_allowed_vlans_mismatch", "meraki_shelluser_conflict", "meraki_tdluser_conflict", "meraki_user_conflict", "mg_safe_mode", "mgmt_uplink_vlan_mismatch", "missing_config_options", "missized_errors", "mmc_issue", "modular_supervisor_node_group_mismatch", "monitoring_stack_error", "monitoring_tls_tunnel_connected", "monitoring_unsupported_version", "mps_down", "netconf_abnormal", "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", "not_supported_compression_algorithm", "not_supported_hostkey_algorithm", "not_supported_kex_algorithm", "not_supported_mac_algorithm", "not_supported_publickey_algorithm", "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", "openroaming_firmware_incompatible", "pcc_apns_check_cert", "pcc_apns_expired", "pcc_apns_expires_soon", "pcc_duplicate_device_identifier", "pcc_duplicate_imei", "pcc_empty_device_identifier", "pcc_empty_imei", "pcc_self_signed_scep_expired", "pcc_self_signed_scep_expires_soon", "pending_config_approval", "poe_denied", "poe_overload", "poe_power_error", "port_channel_mixed_speed_ports", "primary_uplink_status", "probe_cable_unknown", "push_api_device_availability", "radar_detection", "reboot_count", "reboot_count_no_xmit_mon", "reboot_count_panic", "reg_dom_mismatch", "rogue_dhcp", "rps_backup", "rps_down", "secure_connect_auth_failure", "secure_connect_auth_in_progress", "secure_connect_auth_timeout", "snmp_community_string_too_long", "speed_downshift", "ssh_error_authentication", "ssh_error_authorization", "ssh_error_timeout", "ssh_port_rotary_conflict", "ssid_radius_server", "stack_cable_auth_failure", "stack_misconfigured", "stack_not_configured", "stack_version_mismatch", "start_monitoring_provisioning", "sticky_client", "stp_bpdu_conflict", "stp_bpdu_delay", "stp_bpduguard_active", "stp_loopguard_active", "stp_root_status_changed", "stp_rootguard_active", "stp_tcn_errors", "successful_connect_degraded", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switch_reserved_vlans", "switchport_allowed_vlans_missing", "telemetry_collector_cert_expiration", "telemetry_streaming_failure", "temperature_cable_disconnect", "thousand_eyes_application_alert", "time_to_connect_degraded", "traffic_shaping_rule_saturation", "udld_err_n_mismatch", "udld_err_tx_rx_loop", "udld_err_unidir", "unknown_config_options", "unreachable", "unseen", "uplink_saturation", "using_mtun_http", "vlan_disconnect", "vlan_mismatch", "vlan_prefix_starvation", "vmx_incompatible_firmware", "voip_jitter", "voip_mos", "voip_packet_loss", "vpn_backhaul", "vpn_outage", "vrrp_failover", "vwlc_unclaimed_standby", "wan_latency", "wan_packet_loss", "wan_status", "wan_usage", "water_cable_disconnect", "water_usb_connect", "wireless_capacity_degraded", "wireless_coverage_degraded", "wlc_add_standby", "wlc_ap_guardrail", "wlc_ap_limit", "wlc_ap_onboard", "wlc_ha_active_recovery", "wlc_ha_fail_over_past_day", "wlc_ha_standby_offline", "wlc_ha_standby_recovery", "wlc_interface_errors", "wlc_unassigned_ap", "wpa3_warning", "wrong_console_credentials", "yang_authz_conflict", "yang_process_abnormal", "z_canary_alert", "z_canary_priority_alert" ] } } }, { "name": "tsStart", "in": "query", "description": "Optional parameter to filter by starting timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "tsEnd", "in": "query", "description": "Optional parameter to filter by end timestamp", "schema": { "type": "string", "format": "date-time" } }, { "name": "category", "in": "query", "description": "Optional parameter to filter by category.", "schema": { "type": "string", "enum": [ "configuration", "connectivity", "device_health", "experience_metrics", "insights" ] } }, { "name": "sortBy", "in": "query", "description": "Optional parameter to set column to sort by.", "schema": { "type": "string", "enum": [ "count", "lastAlertedAt", "networkCount", "severity", "startedAt" ] } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by primary device serial", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "Optional parameter to filter by device types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MCG", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "WLC", "Z" ] } } }, { "name": "deviceTags", "in": "query", "description": "Optional parameter to filter by device tags", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "active", "in": "query", "description": "Optional parameter to filter by active alerts defaults to true", "schema": { "type": "boolean" } }, { "name": "dismissed", "in": "query", "description": "Optional parameter to filter by dismissed alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "resolved", "in": "query", "description": "Optional parameter to filter by resolved alerts defaults to false", "schema": { "type": "boolean" } }, { "name": "includeDeviceTags", "in": "query", "description": "Include grouped device tags for each alert type in the response.", "schema": { "type": "boolean" } }, { "name": "includeNetworks", "in": "query", "description": "Include affected networks for each alert type in the response.", "schema": { "type": "boolean" } }, { "name": "suppressAlertsForOfflineNodes", "in": "query", "description": "When set to true the api will only return connectivity alerts for a given device if that device is in an offline state. This only applies to devices. This is ignored when resolved is true. Example: If a Switch has a VLan Mismatch and is Unreachable. only the Unreachable alert will be returned. Defaults to false.", "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Alert Type" }, "categoryType": { "type": "string", "description": "Alert category" }, "severity": { "type": "string", "description": "Alert severity" }, "lastAlertedAt": { "type": "string", "format": "date-time", "description": "Last time an alert of this type was triggered" }, "lastResolvedAt": { "type": "string", "format": "date-time", "description": "Last time an alert of this type was resolved" }, "count": { "type": "integer", "description": "Total count of the given alert type" }, "networkCount": { "type": "integer", "description": "Number of affected networks for the alert type" }, "deviceTypes": { "type": "array", "items": { "type": "string" }, "description": "Affected device types for alerts in the group" }, "deviceTags": { "type": "array", "items": { "type": "string" }, "description": "Unique device tags for alerts in the group" }, "networks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Network identifier" }, "name": { "type": "string", "description": "Network name" } }, "required": [ "id", "name" ] }, "description": "Affected networks for alerts in the group" } }, "required": [ "type", "categoryType", "severity", "lastAlertedAt", "count", "networkCount", "deviceTypes", "deviceTags", "networks" ] }, "description": "Organization Alert counts by type" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "integer", "description": "Total Alerts" } }, "required": [ "items" ], "description": "Counts" } }, "required": [ "counts" ], "description": "Metadata about the response" } }, "required": [ "items", "meta" ] }, "example": { "items": [ { "type": "vlan_mismatch", "categoryType": "configuration", "severity": "warning", "lastAlertedAt": "2022-04-01T15:48:57Z", "lastResolvedAt": "2022-04-01T16:48:57Z", "count": 3, "networkCount": 2, "deviceTypes": [ "MS" ], "deviceTags": [ "core", "distribution" ], "networks": [ { "id": "N_123", "name": "Branch 1" } ] } ], "meta": { "counts": { "items": 4 } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return a Summary of Alerts grouped by type and severity", "tags": [ "organizations", "monitor", "alerts", "overview", "byType" ] } }, "/organizations/{organizationId}/assurance/alerts/overview/historical": { "get": { "description": "Returns historical health alert overviews", "operationId": "getOrganizationAssuranceAlertsOverviewHistorical", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "segmentDuration", "in": "query", "required": true, "description": "Amount of time in seconds for each segment in the returned dataset", "schema": { "type": "integer" } }, { "name": "networkId", "in": "query", "description": "Optional parameter to filter alerts overview by network ids.", "schema": { "type": "string" } }, { "name": "severity", "in": "query", "description": "Optional parameter to filter alerts overview by severity type.", "schema": { "type": "string" } }, { "name": "types", "in": "query", "description": "Optional parameter to filter by alert type.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "aaa_not_enabled", "acl_ipv4_conflict", "afc_height_empty", "afc_status_bad", "ap_became_repeater", "ap_noauth", "ap_tunnel_down", "arp_failure", "asymmetry", "aurora1_subnet_overlap", "aurora2_consilience", "auto_vpn_failure", "auto_vpn_uplink_decision", "bad_connectivity", "bad_gateway", "bad_ip6conf", "bad_ipconf", "bad_vlanconf", "ccd", "cellular_data_cap", "cellular_failover", "cellular_failover_bandwidth", "cellular_up_down", "certificate_enrollment", "certificate_expiration", "certificate_renewal", "client_wayfinding_clustering_warning", "client_wayfinding_missing_config", "cloud_archive_alert", "collisions_errors", "config_bad_fetch", "config_error", "config_stale", "configuration_change", "console_error_authorization", "console_error_timeout", "country_mismatch", "crc_errors", "dashboard_config_generation_failure", "detected_country_mismatch", "device_access_issue", "device_config_failure", "device_no_space", "device_ping_status", "dfs_event_pattern", "dhcp_no_leases", "disassociation", "dns_down", "dom_stats_alert", "door_tamper", "eapol_test_failed", "ethernet_negotiation_failure", "eu_regulatory_firmware_mismatch", "fan_down", "faulty_cable", "firewall", "firmware_version", "frags_errors", "high_cpu_mx", "high_interference", "high_memory_mx", "high_temperature_mx", "http_acl_ipv6_conflict", "https_secure_port_conflict", "https_secure_trustpoint_missing", "https_session_modules_conflict", "image_sensor_failure", "insecure_sm_networks_disabled_enrollment_auth_alert", "insight_web_app", "invalid_config", "iot_orchestrator_grpc_down", "ip_conflict", "isp_issue_local_branch", "jabbers_errors", "known_hardware_problem", "l3_dynamic_routes_overflow", "l3_hosts_overflow", "line_vty_conflict", "line_vty_error", "low_power", "mac_flap_alert", "manual_config_fix_required", "manual_country_mismatch", "mars_read_only_ap_unreachable", "mcg_dr_allowed_vlans_mismatch", "meraki_shelluser_conflict", "meraki_tdluser_conflict", "meraki_user_conflict", "mg_safe_mode", "mgmt_uplink_vlan_mismatch", "missing_config_options", "missized_errors", "mmc_issue", "modular_supervisor_node_group_mismatch", "monitoring_stack_error", "monitoring_tls_tunnel_connected", "monitoring_unsupported_version", "mps_down", "netconf_abnormal", "netconf_acl_ipv6_conflict", "netconf_error_authentication", "netconf_error_timeout", "no_dna_license", "no_enough_vty_num", "no_telemetry", "node_check", "not_supported_compression_algorithm", "not_supported_hostkey_algorithm", "not_supported_kex_algorithm", "not_supported_mac_algorithm", "not_supported_publickey_algorithm", "not_supported_ssh_algorithm", "ntp_issue", "odd_upstream_gateway", "openroaming_firmware_incompatible", "pcc_apns_check_cert", "pcc_apns_expired", "pcc_apns_expires_soon", "pcc_duplicate_device_identifier", "pcc_duplicate_imei", "pcc_empty_device_identifier", "pcc_empty_imei", "pcc_self_signed_scep_expired", "pcc_self_signed_scep_expires_soon", "pending_config_approval", "poe_denied", "poe_overload", "poe_power_error", "port_channel_mixed_speed_ports", "primary_uplink_status", "probe_cable_unknown", "push_api_device_availability", "radar_detection", "reboot_count", "reboot_count_no_xmit_mon", "reboot_count_panic", "reg_dom_mismatch", "rogue_dhcp", "rps_backup", "rps_down", "secure_connect_auth_failure", "secure_connect_auth_in_progress", "secure_connect_auth_timeout", "snmp_community_string_too_long", "speed_downshift", "ssh_error_authentication", "ssh_error_authorization", "ssh_error_timeout", "ssh_port_rotary_conflict", "ssid_radius_server", "stack_cable_auth_failure", "stack_misconfigured", "stack_not_configured", "stack_version_mismatch", "start_monitoring_provisioning", "sticky_client", "stp_bpdu_conflict", "stp_bpdu_delay", "stp_bpduguard_active", "stp_loopguard_active", "stp_root_status_changed", "stp_rootguard_active", "stp_tcn_errors", "successful_connect_degraded", "switch_not_setup_as_stack", "switch_required_vlans_missing", "switch_reserved_vlans", "switchport_allowed_vlans_missing", "telemetry_collector_cert_expiration", "telemetry_streaming_failure", "temperature_cable_disconnect", "thousand_eyes_application_alert", "time_to_connect_degraded", "traffic_shaping_rule_saturation", "udld_err_n_mismatch", "udld_err_tx_rx_loop", "udld_err_unidir", "unknown_config_options", "unreachable", "unseen", "uplink_saturation", "using_mtun_http", "vlan_disconnect", "vlan_mismatch", "vlan_prefix_starvation", "vmx_incompatible_firmware", "voip_jitter", "voip_mos", "voip_packet_loss", "vpn_backhaul", "vpn_outage", "vrrp_failover", "vwlc_unclaimed_standby", "wan_latency", "wan_packet_loss", "wan_status", "wan_usage", "water_cable_disconnect", "water_usb_connect", "wireless_capacity_degraded", "wireless_coverage_degraded", "wlc_add_standby", "wlc_ap_guardrail", "wlc_ap_limit", "wlc_ap_onboard", "wlc_ha_active_recovery", "wlc_ha_fail_over_past_day", "wlc_ha_standby_offline", "wlc_ha_standby_recovery", "wlc_interface_errors", "wlc_unassigned_ap", "wpa3_warning", "wrong_console_credentials", "yang_authz_conflict", "yang_process_abnormal", "z_canary_alert", "z_canary_priority_alert" ] } } }, { "name": "tsStart", "in": "query", "required": true, "description": "Parameter to define starting timestamp of historical totals", "schema": { "type": "string", "format": "date-time" } }, { "name": "tsEnd", "in": "query", "description": "Optional parameter to filter by end timestamp defaults to the current time", "schema": { "type": "string", "format": "date-time" } }, { "name": "category", "in": "query", "description": "Optional parameter to filter by category.", "schema": { "type": "string", "enum": [ "configuration", "connectivity", "device_health", "experience_metrics", "insights" ] } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by primary device serial", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "Optional parameter to filter by device types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MCG", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "WLC", "Z" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "segmentStart": { "type": "string", "format": "date-time", "description": "Starting datetime of the segment in iso8601 format" }, "totals": { "type": "object", "properties": { "informational": { "type": "integer", "description": "Informational Severity Count" }, "warning": { "type": "integer", "description": "Warning Severity Count" }, "critical": { "type": "integer", "description": "Critical Severity Count" } }, "description": "Totals by Severity" }, "byAlertType": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Alert Type" }, "informational": { "type": "integer", "description": "Informational Severity Count" }, "warning": { "type": "integer", "description": "Warning Severity Count" }, "critical": { "type": "integer", "description": "Critical Severity Count" } } }, "description": "Totals by Type" } }, "required": [ "segmentStart", "totals", "byAlertType" ] }, "description": "Historical Severity Counts" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "integer", "description": "Total Segments" } }, "required": [ "items" ], "description": "Counts" } }, "required": [ "counts" ], "description": "Metadata about the response" } }, "required": [ "items", "meta" ] }, "example": { "items": [ { "segmentStart": "2018-02-11T00:00:00Z", "totals": { "informational": 1, "warning": 1, "critical": 1 }, "byAlertType": [ { "type": "vlan_mismatch", "informational": 1, "warning": 1, "critical": 1 } ] } ], "meta": { "counts": { "items": 4 } } } } } } }, "summary": "Returns historical health alert overviews", "tags": [ "organizations", "monitor", "alerts", "overview", "historical" ] } }, "/organizations/{organizationId}/assurance/alerts/restore": { "post": { "description": "Restore health alerts from dismissed", "operationId": "restoreOrganizationAssuranceAlerts", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "alertIds": { "type": "array", "items": { "type": "string" }, "description": "Array of alert IDs in this organization to restore. Missing or inaccessible alert IDs return 404." } }, "example": { "alertIds": [ "1234", "4567" ] }, "required": [ "alertIds" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "summary": "Restore health alerts from dismissed", "tags": [ "organizations", "monitor", "alerts" ] } }, "/organizations/{organizationId}/assurance/alerts/taxonomy/categories": { "get": { "description": "Return a list of Category Types", "operationId": "getOrganizationAssuranceAlertsTaxonomyCategories", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Category type" }, "title": { "type": "string", "description": "Category title" } }, "required": [ "type", "title" ] } }, "example": [ { "type": "connectivity", "title": "Connectivity" } ] } } } }, "summary": "Return a list of Category Types", "tags": [ "organizations", "monitor", "alerts", "taxonomy", "categories" ] } }, "/organizations/{organizationId}/assurance/alerts/taxonomy/types": { "get": { "description": "Return a list of alert types", "operationId": "getOrganizationAssuranceAlertsTaxonomyTypes", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "Alert type" }, "title": { "type": "string", "description": "Alert type title" }, "categoryType": { "type": "string", "description": "Alert category type" }, "severities": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "description": "The severity for the alert type" } }, "required": [ "type" ] }, "description": "List of possible severities for the alert type" }, "deviceTypes": { "type": "array", "items": { "type": "string" }, "description": "List of possible device types for the alert type" } }, "required": [ "type", "title", "categoryType", "severities", "deviceTypes" ] } }, "example": [ { "type": "unreachable", "title": "Unreachable device", "categoryType": "connectivity", "severities": [ { "type": "critical" } ], "deviceTypes": [ "Campus Gateway", "Catalyst AP", "Catalyst Controller", "Catalyst Switch", "MG", "MR", "MS", "MT", "MV", "MX", "VMX", "Z" ] } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return a list of alert types", "tags": [ "organizations", "monitor", "alerts", "taxonomy", "types" ] } }, "/organizations/{organizationId}/assurance/alerts/{id}": { "get": { "description": "Return a singular Health Alert by its id", "operationId": "getOrganizationAssuranceAlert", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "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": { "id": { "type": "string", "description": "ID of the health alert" }, "categoryType": { "type": "string", "description": "Category type that the health alert belongs to" }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the network where alert appears" }, "id": { "type": "string", "description": "ID of the network where alert appears" }, "url": { "type": "string", "description": "Authoritative Dashboard URL for the network" } }, "required": [ "name", "id", "url" ], "description": "Network details" }, "startedAt": { "type": "string", "format": "date-time", "description": "Time when the alert started" }, "resolvedAt": { "type": "string", "format": "date-time", "description": "Time when the alert was resolved", "nullable": true }, "dismissedAt": { "type": "string", "format": "date-time", "description": "Time when the alert was dismissed", "nullable": true }, "deviceType": { "type": "string", "description": "Device Type that the alert occurred on", "nullable": true }, "type": { "type": "string", "description": "Alert Type" }, "title": { "type": "string", "description": "Human Readable Title for Alert type" }, "description": { "type": "string", "description": "Description of the alert", "nullable": true }, "severity": { "type": "string", "description": "Alert severity" }, "scope": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "url": { "type": "string", "description": "URL of affected device" }, "name": { "type": "string", "description": "Name of affected device" }, "order": { "type": "integer", "description": "Order of affected device in array" }, "productType": { "type": "string", "description": "Type of affected device" }, "serial": { "type": "string", "description": "Serial of affected device" }, "mac": { "type": "string", "description": "MAC address of affected device" }, "imei": { "type": "string", "description": "IMEI of affected device" }, "lldp": { "type": "object", "properties": { "port": { "type": "string", "description": "Port of affect device" } }, "description": "Port of affected device" } } }, "description": "Description of affected devices" }, "applications": { "type": "array", "items": { "type": "object" }, "description": "Applications affected by the alert" }, "peers": { "type": "array", "items": { "type": "object" }, "description": "Peers affected by the alert" }, "others": { "type": "array", "items": { "type": "object" }, "description": "Other affected items by the alert" } }, "description": "Scope of the alert (which devices and networks are affected)" } }, "required": [ "id", "categoryType", "network", "startedAt", "type", "title", "severity" ] }, "example": { "id": "1234", "categoryType": "connectivity", "network": { "name": "Network 2", "id": "L_1020981", "url": "https://n1.meraki.com//n//manage/nodes/list" }, "startedAt": "2022-04-01T15:48:57Z", "resolvedAt": "2022-04-02T15:48:57Z", "dismissedAt": "2022-04-02T15:48:57Z", "deviceType": "MS", "type": "crc_errors_error", "title": "CRC errors detected", "description": "Very high proportion of CRC errors on port id", "severity": "warning", "scope": { "devices": [ { "url": "https://n237.meraki.com/MS-PM-First-Floo/n/_5kUKaTd/manage/nodes/new_list/7911238", "name": "Device 1", "order": 0, "productType": "switch", "serial": "Q2QP-5VYM-YM8H", "mac": "aa:bb:cd:dd", "imei": "353593090031649", "lldp": { "port": "33" } } ] } } } } } }, "summary": "Return a singular Health Alert by its id", "tags": [ "organizations", "monitor", "alerts" ] } }, "/organizations/{organizationId}/brandingPolicies": { "get": { "description": "List the branding policies of an organization", "operationId": "getOrganizationBrandingPolicies", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n" }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "preview": { "type": "object", "properties": { "url": { "type": "string", "description": "Url of the preview image" }, "expiresAt": { "type": "string", "format": "date-time", "description": "Timestamp of the preview image" } }, "description": "Preview of the image" } }, "description": "Properties of the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } } } }, "example": [ { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "preview": { "url": "https://meraki-na.s3.amazonaws.com/org-assets/my-image.png", "expiresAt": "2022-04-06T06:19:27-07:00" } } } } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "List the branding policies of an organization", "tags": [ "organizations", "configure", "brandingPolicies" ] }, "post": { "description": "Add a new branding policy to an organization", "operationId": "createOrganizationBrandingPolicy", "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 the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n Each property defaults to 'default or inherit' when not provided." }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "contents": { "type": "string", "format": "byte", "description": "The file contents (a base 64 encoded string) of your new logo." }, "format": { "type": "string", "enum": [ "gif", "jpg", "png" ], "description": "The format of the encoded contents. Supported formats are 'png', 'gif', and jpg'." } }, "description": "Properties for setting the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } }, "example": { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "contents": "Hyperg26C8F4h8CvcoUqpA==", "format": "jpg" } } }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n Each property defaults to 'default or inherit' when not provided." }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "preview": { "type": "object", "properties": { "url": { "type": "string", "description": "Url of the preview image" }, "expiresAt": { "type": "string", "format": "date-time", "description": "Timestamp of the preview image" } }, "description": "Preview of the image" } }, "description": "Properties of the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } } }, "example": { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "preview": { "url": "https://meraki-na.s3.amazonaws.com/org-assets/my-image.png", "expiresAt": "2022-04-06T06:19:27-07:00" } } } } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Add a new branding policy to an organization", "tags": [ "organizations", "configure", "brandingPolicies" ] } }, "/organizations/{organizationId}/brandingPolicies/priorities": { "get": { "description": "Return the branding policy IDs of an organization in priority order. IDs are ordered in ascending order of priority (IDs later in the array have higher priority).", "operationId": "getOrganizationBrandingPoliciesPriorities", "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": { "brandingPolicyIds": { "type": "array", "items": { "type": "string" }, "description": " An ordered list of branding policy IDs that determines the priority order of how to apply the policies\n" } } }, "example": { "brandingPolicyIds": [ "123", "456", "789" ] } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "Return the branding policy IDs of an organization in priority order", "tags": [ "organizations", "configure", "brandingPolicies", "priorities" ] }, "put": { "description": "Update the priority ordering of an organization's branding policies.", "operationId": "updateOrganizationBrandingPoliciesPriorities", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "brandingPolicyIds": { "type": "array", "items": { "type": "string" }, "description": " An ordered list of branding policy IDs that determines the priority order of how to apply the policies\n" } }, "example": { "brandingPolicyIds": [ "123", "456", "789" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "brandingPolicyIds": { "type": "array", "items": { "type": "string" }, "description": " An ordered list of branding policy IDs that determines the priority order of how to apply the policies\n" } } }, "example": { "brandingPolicyIds": [ "123", "456", "789" ] } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Update the priority ordering of an organization's branding policies.", "tags": [ "organizations", "configure", "brandingPolicies", "priorities" ] } }, "/organizations/{organizationId}/brandingPolicies/{brandingPolicyId}": { "get": { "description": "Return a branding policy", "operationId": "getOrganizationBrandingPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "brandingPolicyId", "in": "path", "description": "Branding policy ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n" }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "preview": { "type": "object", "properties": { "url": { "type": "string", "description": "Url of the preview image" }, "expiresAt": { "type": "string", "format": "date-time", "description": "Timestamp of the preview image" } }, "description": "Preview of the image" } }, "description": "Properties of the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } } }, "example": { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "preview": { "url": "https://meraki-na.s3.amazonaws.com/org-assets/my-image.png", "expiresAt": "2022-04-06T06:19:27-07:00" } } } } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "Return a branding policy", "tags": [ "organizations", "configure", "brandingPolicies" ] }, "put": { "description": "Update a branding policy", "operationId": "updateOrganizationBrandingPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "brandingPolicyId", "in": "path", "description": "Branding policy ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n" }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "contents": { "type": "string", "format": "byte", "description": "The file contents (a base 64 encoded string) of your new logo." }, "format": { "type": "string", "enum": [ "gif", "jpg", "png" ], "description": "The format of the encoded contents. Supported formats are 'png', 'gif', and jpg'." } }, "description": "Properties for setting the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } }, "example": { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "contents": "Hyperg26C8F4h8CvcoUqpA==", "format": "jpg" } } }, "required": [ "name" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the Dashboard branding policy." }, "enabled": { "type": "boolean", "description": "Boolean indicating whether this policy is enabled." }, "adminSettings": { "type": "object", "properties": { "appliesTo": { "type": "string", "enum": [ "All SAML admins", "All admins", "All admins of networks tagged...", "All admins of networks...", "All enterprise admins", "All network admins", "All organization admins", "Specific admins..." ], "description": "Which kinds of admins this policy applies to. Can be one of 'All organization admins', 'All enterprise admins', 'All network admins', 'All admins of networks...', 'All admins of networks tagged...', 'Specific admins...', 'All admins' or 'All SAML admins'." }, "values": { "type": "array", "items": { "type": "string" }, "description": " If 'appliesTo' is set to one of 'Specific admins...', 'All admins of networks...' or 'All admins of networks tagged...', then you must specify this 'values' property to provide the set of\n entities to apply the branding policy to. For 'Specific admins...', specify an array of admin IDs. For 'All admins of\n networks...', specify an array of network IDs and/or configuration template IDs. For 'All admins of networks tagged...',\n specify an array of tag names.\n" } }, "description": "Settings for describing which kinds of admins this policy applies to." }, "helpSettings": { "type": "object", "properties": { "helpTab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The Help tab, under which all support information resides. If this tab is hidden, no other 'Help' branding\n customizations will be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Get Help' subtab on which Cisco Meraki KB, Product Manuals, and Support/Case Information are displayed. Note\n that if this subtab is hidden, branding customizations for the KB on 'Get help', Cisco Meraki product documentation,\n and support contact info will not be visible. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "communitySubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Community' subtab which provides a link to Meraki Community. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "casesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Cases' Dashboard subtab on which Cisco Meraki support cases for this organization can be managed. Can be one\n of 'default or inherit', 'hide' or 'show'.\n" }, "dataProtectionRequestsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Data protection requests' Dashboard subtab on which requests to delete, restrict, or export end-user data can\n be audited. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "getHelpSubtabKnowledgeBaseSearch": { "type": "string", "description": " The KB search box which appears on the Help page. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "universalSearchKnowledgeBaseSearch": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The universal search box always visible on Dashboard will, by default, present results from the Meraki KB. This configures\n whether these Meraki KB results should be returned. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "ciscoMerakiProductDocumentation": { "type": "string", "description": " The 'Product Manuals' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "supportContactInfo": { "type": "string", "description": " The 'Contact Meraki Support' section of the 'Help -> Get Help' subtab. Can be one of 'default or inherit', 'hide', 'show', or a replacement custom HTML string.\n" }, "newFeaturesSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> New features' subtab where new Dashboard features are detailed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "firewallInfoSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Firewall info' subtab where necessary upstream firewall rules for communication to the Cisco Meraki cloud are\n listed. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "apiDocsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> API docs' subtab where a detailed description of the Dashboard API is listed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "hardwareReplacementsSubtab": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help -> Replacement info' subtab where important information regarding device replacements is detailed. Can be one of\n 'default or inherit', 'hide' or 'show'.\n" }, "smForums": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'SM Forums' subtab which links to community-based support for Cisco Meraki Systems Manager. Only configurable for\n organizations that contain Systems Manager networks. Can be one of 'default or inherit', 'hide' or 'show'.\n" }, "helpWidget": { "type": "string", "enum": [ "default or inherit", "hide", "show" ], "description": " The 'Help Widget' is a support widget which provides access to live chat, documentation links, Sales contact info,\n and other contact avenues to reach Meraki Support. Can be one of 'default or inherit', 'hide' or 'show'.\n" } }, "description": " Settings for describing the modifications to various Help page features. Each property in this object accepts one of\n 'default or inherit' (do not modify functionality), 'hide' (remove the section from Dashboard), or 'show' (always show\n the section on Dashboard). Some properties in this object also accept custom HTML used to replace the section on\n Dashboard; see the documentation for each property to see the allowed values.\n" }, "customLogo": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether or not there is a custom logo enabled." }, "image": { "type": "object", "properties": { "preview": { "type": "object", "properties": { "url": { "type": "string", "description": "Url of the preview image" }, "expiresAt": { "type": "string", "format": "date-time", "description": "Timestamp of the preview image" } }, "description": "Preview of the image" } }, "description": "Properties of the image." } }, "description": "Properties describing the custom logo attached to the branding policy." } } }, "example": { "name": "My Branding Policy", "enabled": true, "adminSettings": { "appliesTo": "All admins of networks...", "values": [ "N_1234", "L_5678" ] }, "helpSettings": { "helpTab": "show", "getHelpSubtab": "default or inherit", "communitySubtab": "show", "casesSubtab": "hide", "dataProtectionRequestsSubtab": "default or inherit", "getHelpSubtabKnowledgeBaseSearch": "

Some custom HTML content

", "universalSearchKnowledgeBaseSearch": "hide", "ciscoMerakiProductDocumentation": "show", "supportContactInfo": "show", "newFeaturesSubtab": "show", "firewallInfoSubtab": "hide", "apiDocsSubtab": "default or inherit", "hardwareReplacementsSubtab": "hide", "smForums": "hide", "helpWidget": "hide" }, "customLogo": { "enabled": true, "image": { "preview": { "url": "https://meraki-na.s3.amazonaws.com/org-assets/my-image.png", "expiresAt": "2022-04-06T06:19:27-07:00" } } } } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Update a branding policy", "tags": [ "organizations", "configure", "brandingPolicies" ] }, "delete": { "description": "Delete a branding policy", "operationId": "deleteOrganizationBrandingPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "brandingPolicyId", "in": "path", "description": "Branding policy ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Delete a branding policy", "tags": [ "organizations", "configure", "brandingPolicies" ] } }, "/organizations/{organizationId}/claim": { "post": { "deprecated": true, "description": "Claim a list of devices, licenses, and/or orders into an organization inventory. When claiming by order, all devices and licenses in the order will be claimed; licenses will be added to the organization and devices will be placed in the organization's inventory. This operation can be used up to ten times within a single five minute window.", "operationId": "claimIntoOrganization", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "orders": { "type": "array", "items": { "type": "string" }, "description": "The numbers of the orders that should be claimed" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "The serials of the devices that should be claimed" }, "licenses": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "description": "The key of the license" }, "mode": { "type": "string", "enum": [ "addDevices", "renew" ], "description": "Either 'renew' or 'addDevices'. 'addDevices' will increase the license limit, while 'renew' will extend the amount of time until expiration. Defaults to 'addDevices'. All licenses must be claimed with the same mode, and at most one renewal can be claimed at a time. This parameter is legacy and does not apply to organizations with per-device licensing enabled." } }, "required": [ "key" ] }, "description": "The licenses that should be claimed" } }, "example": { "orders": [ "4CXXXXXXX" ], "serials": [ "Q234-ABCD-5678" ], "licenses": [ { "key": "Z2XXXXXXXXXX", "mode": "addDevices" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "orders": { "type": "array", "items": { "type": "string" }, "description": "The numbers of the orders claimed" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "The serials of the devices claimed" }, "licenses": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "description": "The key of the license" }, "mode": { "type": "string", "description": "The mode of the license" } } }, "description": "The licenses claimed" } } }, "example": { "orders": [ "4CXXXXXXX" ], "serials": [ "Q234-ABCD-5678" ], "licenses": [ { "key": "Z2XXXXXXXXXX", "mode": "addDevices" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Claim a list of devices, licenses, and/or orders into an organization inventory", "tags": [ "organizations", "configure" ], "x-deprecation-notice": "Deprecated: This operation has been marked as deprecated. For more information, visit the deprecated operations page" } }, "/organizations/{organizationId}/clients/bandwidthUsageHistory": { "get": { "description": "Return data usage (in megabits per second) over time for all clients in the given organization within a given time range.", "operationId": "getOrganizationClientsBandwidthUsageHistory", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Timestamp for the bandwidth usage snapshot." }, "total": { "type": "integer", "description": "Total bandwidth usage, in mbps." }, "upstream": { "type": "integer", "description": "Uploaded data, in mbps." }, "downstream": { "type": "integer", "description": "Downloaded data, in mbps." } } } }, "example": [ { "ts": "2021-06-20T01:00:00.000Z", "total": 345, "upstream": 60, "downstream": 285 } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return data usage (in megabits per second) over time for all clients in the given organization within a given time range.", "tags": [ "organizations", "monitor", "clients", "bandwidthUsageHistory" ] } }, "/organizations/{organizationId}/clients/overview": { "get": { "description": "Return summary information around client data usage (in kb) across the given organization.", "operationId": "getOrganizationClientsOverview", "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 less than or equal to 31 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "usage": { "type": "object", "properties": { "overall": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total data usage (in kb) of all clients across organization" }, "downstream": { "type": "number", "format": "float", "description": "Downstream data usage (in kb) of all clients across organization" }, "upstream": { "type": "number", "format": "float", "description": "Upstream data usage (in kb) of all clients across organization" } }, "description": "Overall data usage of all clients across organization" }, "average": { "type": "number", "format": "float", "description": "Average data usage (in kb) of each client in organization" } }, "description": "Usage information of all clients across organization" }, "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of clients with data usage in organization" } }, "description": "Client count information" } } }, "example": { "usage": { "overall": { "total": 18000.0, "downstream": 10000.0, "upstream": 8000.0 }, "average": 1.37 }, "counts": { "total": 20 } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return summary information around client data usage (in kb) across the given organization.", "tags": [ "organizations", "monitor", "clients", "overview" ] } }, "/organizations/{organizationId}/clients/search": { "get": { "description": "Return the client details in an organization", "operationId": "getOrganizationClientsSearch", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 5. Default is 5.", "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": "mac", "in": "query", "required": true, "description": "The MAC address of the client. Required.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "clientId": { "type": "string", "description": "The ID of the client" }, "mac": { "type": "string", "description": "The MAC address of the client" }, "manufacturer": { "type": "string", "description": "Manufacturer of the client" }, "records": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The network identifier" }, "organizationId": { "type": "string", "description": "The organization identifier" }, "name": { "type": "string", "description": "The network name" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "" }, "timeZone": { "type": "string", "description": "The network's timezone" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "The network tags" }, "enrollmentString": { "type": "string", "description": "The network enrollment string" }, "url": { "type": "string", "description": "The network URL" }, "notes": { "type": "string", "description": "The notes for the network" }, "isBoundToConfigTemplate": { "type": "boolean", "description": "If the network is bound to a config template" } }, "description": "The network upon which a client with the given MAC address was found" }, "ip": { "type": "string", "description": "The IP address of the client" }, "ip6": { "type": "string", "description": "The IPv6 address of the client" }, "description": { "type": "string", "description": "Short description of the client" }, "firstSeen": { "type": "integer", "description": "Timestamp client was first seen in the network" }, "lastSeen": { "type": "integer", "description": "Timestamp client was last seen in the network" }, "os": { "type": "string", "description": "The operating system of the client" }, "user": { "type": "string", "description": "The username of the user of the client" }, "vlan": { "type": "string", "description": "The name of the VLAN that the client is connected to" }, "ssid": { "type": "string", "description": "The name of the SSID that the client is connected to" }, "switchport": { "type": "string", "description": "The switch port the client is connected to" }, "wirelessCapabilities": { "type": "string", "description": "Wireless capabilities of the client" }, "smInstalled": { "type": "boolean", "description": "Status of SM for the client" }, "recentDeviceMac": { "type": "string", "description": "The MAC address of the node that the device was last connected to" }, "clientVpnConnections": { "type": "array", "items": { "type": "object", "properties": { "remoteIp": { "type": "string", "description": "The IP address of the VPN the client last connected to" }, "connectedAt": { "type": "integer", "description": "The time the client last connected to the VPN" }, "disconnectedAt": { "type": "integer", "description": "The time the client last disconnected from the VPN" } } }, "description": "VPN connections associated with the client" }, "lldp": { "type": "array", "items": { "type": "array", "items": { "type": "string" } }, "description": "The link layer discover protocol settings for the client" }, "cdp": { "type": "array", "items": { "type": "array", "items": { "type": "string" } }, "description": "The Cisco discover protocol settings for the client" }, "status": { "type": "string", "enum": [ "Offline", "Online" ], "description": "The connection status of the client" } } }, "description": "The clients that appear on any networks within an organization" } } }, "example": { "clientId": "k74272e", "mac": "22:33:44:55:66:77", "manufacturer": "Apple", "records": [ { "network": { "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 }, "ip": "1.2.3.4", "ip6": "2001:db8:3c4d:15::1", "description": "Miles's phone", "firstSeen": 1518365681, "lastSeen": 1526087474, "os": "iOS", "user": "milesmeraki", "vlan": "100", "ssid": "My SSID", "switchport": "My switch port", "wirelessCapabilities": "802.11b - 2.4 GHz", "smInstalled": true, "recentDeviceMac": "22:33:44:55:66:77", "clientVpnConnections": [ { "remoteIp": "1.2.3.4", "connectedAt": 1522613355, "disconnectedAt": 1522613360 } ], "lldp": [ [ "System name", "Some system name" ], [ "System description", "Some system description" ], [ "Port ID", "1" ], [ "Chassis ID", "00:18:0a:00:00:00" ], [ "Port description", "eth0" ], [ "System capabilities", "Two-port MAC Relay" ] ], "cdp": [ [ "System name", "Some system name" ], [ "System description", "Some system description" ], [ "Port ID", "1" ], [ "Chassis ID", "00:18:0a:00:00:00" ], [ "Port description", "eth0" ], [ "System capabilities", "Two-port MAC Relay" ] ], "status": "Online" } ] } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the client details in an organization", "tags": [ "organizations", "configure", "clients", "search" ] } }, "/organizations/{organizationId}/clone": { "post": { "description": "Create a new organization by cloning the addressed organization", "operationId": "cloneOrganization", "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 new organization" } }, "example": { "name": "My organization" }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Organization ID" }, "name": { "type": "string", "description": "Organization name" }, "url": { "type": "string", "description": "Organization URL" }, "api": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Enable API access" } }, "description": "API related settings" }, "licensing": { "type": "object", "properties": { "model": { "type": "string", "enum": [ "co-term", "per-device", "subscription" ], "description": "Organization licensing model. Can be 'co-term', 'per-device', or 'subscription'." } }, "description": "Licensing related settings" }, "cloud": { "type": "object", "properties": { "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of region" }, "host": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of location" } }, "description": "Where organization data is hosted" } }, "description": "Region info" } }, "description": "Data for this organization" }, "management": { "type": "object", "properties": { "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of management data" }, "value": { "type": "string", "description": "Value of management data" } } }, "description": "Details related to organization management, possibly empty. Details may be named 'MSP ID', 'customer number', 'IP restriction mode for API', or 'IP restriction mode for dashboard', if the organization admin has configured any." } }, "description": "Information about the organization's management system" }, "privacy": { "type": "object", "description": "Privacy-related settings for the organization." } } }, "example": { "id": "2930418", "name": "My organization", "url": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "api": { "enabled": true }, "licensing": { "model": "co-term" }, "cloud": { "region": { "name": "North America", "host": { "name": "United States" } } }, "management": { "details": [ { "name": "MSP ID", "value": "123456" } ] } } } } } }, "summary": "Create a new organization by cloning the addressed organization", "tags": [ "organizations", "configure" ] } }, "/organizations/{organizationId}/configTemplates": { "get": { "description": "List the configuration templates for this organization", "operationId": "getOrganizationConfigTemplates", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network or config template to copy configuration from" }, "name": { "type": "string", "description": "The name of the configuration template" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "The product types of the configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article. Not applicable if copying from existing network or template" } } } }, "example": [ { "id": "N_24329156", "name": "My config template", "productTypes": [ "appliance", "switch", "wireless" ], "timeZone": "America/Los_Angeles" } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List the configuration templates for this organization", "tags": [ "organizations", "configure", "configTemplates" ] }, "post": { "description": "Create a new configuration template", "operationId": "createOrganizationConfigTemplate", "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 configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article. Not applicable if copying from existing network or template" }, "copyFromNetworkId": { "type": "string", "description": "The ID of the network or config template to copy configuration from" } }, "example": { "name": "My config template", "timeZone": "America/Los_Angeles", "copyFromNetworkId": "N_24329156" }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network or config template to copy configuration from" }, "name": { "type": "string", "description": "The name of the configuration template" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "The product types of the configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article. Not applicable if copying from existing network or template" } } }, "example": { "id": "N_24329156", "name": "My config template", "productTypes": [ "appliance", "switch", "wireless" ], "timeZone": "America/Los_Angeles" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Create a new configuration template", "tags": [ "organizations", "configure", "configTemplates" ] } }, "/organizations/{organizationId}/configTemplates/{configTemplateId}": { "get": { "description": "Return a single configuration template", "operationId": "getOrganizationConfigTemplate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network or config template to copy configuration from" }, "name": { "type": "string", "description": "The name of the configuration template" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "The product types of the configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article. Not applicable if copying from existing network or template" } } }, "example": { "id": "N_24329156", "name": "My config template", "productTypes": [ "appliance", "switch", "wireless" ], "timeZone": "America/Los_Angeles" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return a single configuration template", "tags": [ "organizations", "configure", "configTemplates" ] }, "put": { "description": "Update a configuration template", "operationId": "updateOrganizationConfigTemplate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article." } }, "example": { "name": "My config template", "timeZone": "America/Los_Angeles" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network or config template to copy configuration from" }, "name": { "type": "string", "description": "The name of the configuration template" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "The product types of the configuration template" }, "timeZone": { "type": "string", "description": "The timezone of the configuration template. For a list of allowed timezones, please see the 'TZ' column in the table in this article. Not applicable if copying from existing network or template" } } }, "example": { "id": "N_24329156", "name": "My config template", "productTypes": [ "appliance", "switch", "wireless" ], "timeZone": "America/Los_Angeles" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update a configuration template", "tags": [ "organizations", "configure", "configTemplates" ] }, "delete": { "description": "Remove a configuration template", "operationId": "deleteOrganizationConfigTemplate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "configTemplateId", "in": "path", "description": "Config template ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Remove a configuration template", "tags": [ "organizations", "configure", "configTemplates" ] } }, "/organizations/{organizationId}/configurationChanges": { "get": { "description": "View the Change Log for your organization", "operationId": "getOrganizationConfigurationChanges", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 365 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 365 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 365 days. The default is 365 days.", "schema": { "type": "number", "format": "float", "maximum": 31536000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100000. Default is 5000.", "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": "networkId", "in": "query", "description": "Filters on the given network", "schema": { "type": "string" } }, { "name": "adminId", "in": "query", "description": "Filters on the given Admin", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Time, in ISO8601 format, when the configuration change was made." }, "adminName": { "type": "string", "description": "The name of the admin who made the configuration change." }, "adminEmail": { "type": "string", "description": "The email address of the admin who made the configuration change. This attribute may be null." }, "adminId": { "type": "string", "description": "The ID of the admin who made the configuration change. This attribute may be null." }, "networkName": { "type": "string", "description": "The name of the network that the configuration change was applied to. This attribute may be null." }, "networkId": { "type": "string", "description": "The ID of the network that the configuration change was applied to. This attribute may be null." }, "networkUrl": { "type": "string", "description": "The url of the network that the configuration change was applied to. This attribute may be null." }, "ssidName": { "type": "string", "description": "The name of the ssid that the configuration change was applied to, if applicable. This attribute may be null." }, "ssidNumber": { "type": "integer", "description": "The ssid number that the configuration change was applied to, if applicable. This attribute may be null." }, "page": { "type": "string", "description": "The name of the Meraki Dashboard page on which the configuration change was made." }, "label": { "type": "string", "description": "Description of the configuration change." }, "oldValue": { "type": "string", "description": "The value of the configuration, before the change was applied." }, "newValue": { "type": "string", "description": "The value of the configuration, after the change was applied." }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the client which made the change, if applicable." }, "type": { "type": "string", "enum": [ "oauth" ], "description": "Type of client which made the change, if applicable. Available options are: oauth" } }, "description": "Client information" } } } }, "example": [ { "ts": "2018-02-11T00:00:00.090210Z", "adminName": "Miles Meraki", "adminEmail": "miles@meraki.com", "adminId": "212406", "networkName": "Main Office", "networkId": "N_24329156", "networkUrl": "https://n1.meraki.com//n//manage/nodes/list", "ssidName": "My SSID", "ssidNumber": 1, "page": "via API", "label": "PUT /api/v1/organizations/2930418", "oldValue": "{\"id\":\"2930418\",\"name\":\"My organization\",\"url\":\"https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview\"}", "newValue": "{\"id\":\"2930418\",\"name\":\"My organization changed\",\"url\":\"https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview\"}", "client": { "id": "0hoXjtjX6C-Nk4Nr6kEbCJJFRmIgycaG1HBE572hlIc", "type": "oauth" } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "View the Change Log for your organization", "tags": [ "organizations", "monitor", "configurationChanges" ] } }, "/organizations/{organizationId}/devices": { "get": { "description": "List the devices in an organization that have been assigned to a network.", "operationId": "getOrganizationDevices", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 5000. 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": "configurationUpdatedAfter", "in": "query", "description": "Filter results by whether or not the device's configuration has been updated after the given timestamp", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter devices by network.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter devices by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } }, { "name": "tags", "in": "query", "description": "Optional parameter to filter devices by tags.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tagsFilterType", "in": "query", "description": "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": "name", "in": "query", "description": "Optional parameter to filter devices by name. All returned devices will have a name that contains the search term or is an exact match.", "schema": { "type": "string" } }, { "name": "mac", "in": "query", "description": "Optional parameter to filter devices by MAC address. All returned devices will have a MAC address that contains the search term or is an exact match.", "schema": { "type": "string" } }, { "name": "serial", "in": "query", "description": "Optional parameter to filter devices by serial number. All returned devices will have a serial number that contains the search term or is an exact match.", "schema": { "type": "string" } }, { "name": "model", "in": "query", "description": "Optional parameter to filter devices by model. All returned devices will have a model that contains the search term or is an exact match.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter devices by one or more MAC addresses. All returned devices will have a MAC address that is an exact match.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter devices by one or more serial numbers. All returned devices will have a serial number that is an exact match.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "sensorMetrics", "in": "query", "description": "Optional parameter to filter devices by the metrics that they provide. Only applies to sensor devices.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "apparentPower", "battery", "button", "co2", "current", "door", "downstreamPower", "energy", "frequency", "humidity", "indoorAirQuality", "noise", "pm25", "powerFactor", "realPower", "remoteLockoutSwitch", "temperature", "tvoc", "voltage", "water" ] } } }, { "name": "sensorAlertProfileIds", "in": "query", "description": "Optional parameter to filter devices by the alert profiles that are bound to them. Only applies to sensor devices.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "models", "in": "query", "description": "Optional parameter to filter devices by one or more models. All returned devices will have a model that is an exact match.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the device" }, "lat": { "type": "number", "format": "float", "description": "Latitude of the device" }, "lng": { "type": "number", "format": "float", "description": "Longitude of the device" }, "address": { "type": "string", "description": "Physical address of the device" }, "notes": { "type": "string", "description": "Notes for the device, limited to 255 characters" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of tags assigned to the device" }, "networkId": { "type": "string", "description": "ID of the network the device belongs to" }, "serial": { "type": "string", "description": "Serial number of the device" }, "model": { "type": "string", "description": "Model of the device" }, "imei": { "type": "string", "description": "IMEI of the device, if applicable" }, "mac": { "type": "string", "description": "MAC address of the device" }, "lanIp": { "type": "string", "description": "LAN IP address of the device" }, "firmware": { "type": "string", "description": "Firmware version of the device" }, "productType": { "type": "string", "description": "Product type of the device" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Additional property name" }, "value": { "type": "string", "description": "Additional property value" } } }, "description": "Additional device information" } } } }, "example": [ { "name": "My AP", "lat": 37.4180951010362, "lng": -122.098531723022, "address": "1600 Pennsylvania Ave", "notes": "My AP's note", "tags": [ "recently-added" ], "networkId": "N_24329156", "serial": "Q234-ABCD-5678", "model": "MR34", "imei": "123456789000000", "mac": "00:11:22:33:44:55", "lanIp": "1.2.3.4", "firmware": "wireless-25-14", "productType": "wireless", "details": [ { "name": "Catalyst serial", "value": "123ABC" } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List the devices in an organization that have been assigned to a network.", "tags": [ "organizations", "configure", "devices" ] } }, "/organizations/{organizationId}/devices/availabilities": { "get": { "description": "List the availability information for devices in an organization. The data returned by this endpoint is updated every 5 minutes.", "operationId": "getOrganizationDevicesAvailabilities", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter device availabilities by network ID. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device availabilities by device product types. This filter uses multiple exact matches. Valid types are wireless, appliance, switch, camera, cellularGateway, sensor, wirelessController, and campusGateway", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device availabilities by device serial numbers. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tags", "in": "query", "description": "An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below). This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tagsFilterType", "in": "query", "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices 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": "statuses", "in": "query", "description": "Optional parameter to filter device availabilities by device status. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "alerting", "dormant", "offline", "online" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "The device MAC address." }, "name": { "type": "string", "description": "The device name." }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network containing the device." } }, "description": "Network info." }, "productType": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ], "description": "Device product type." }, "serial": { "type": "string", "description": "The device serial number." }, "status": { "type": "string", "enum": [ "alerting", "dormant", "offline", "online" ], "description": "Status of the device. Possible values are: online, alerting, offline, dormant." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the device." } } } }, "example": [ { "mac": "00:11:22:33:44:55", "name": "My AP", "network": { "id": "N_24329156" }, "productType": "switch", "serial": "Q234-ABCD-5678", "status": "online", "tags": [ "tag1", "tag2" ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the availability information for devices in an organization", "tags": [ "organizations", "monitor", "devices", "availabilities" ] } }, "/organizations/{organizationId}/devices/availabilities/changeHistory": { "get": { "description": "List the availability history information for devices in an organization.", "operationId": "getOrganizationDevicesAvailabilitiesChangeHistory", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device availabilities history by device serial numbers", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device availabilities history by device product types", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter device availabilities history by network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "statuses", "in": "query", "description": "Optional parameter to filter device availabilities history by device statuses", "schema": { "type": "array", "items": { "type": "string", "enum": [ "alerting", "dormant", "offline", "online" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Timestamp, in iso8601 format, at which the event happened" }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial number" }, "name": { "type": "string", "description": "Device name" }, "productType": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ], "description": "Device product type." }, "model": { "type": "string", "description": "Device model" } }, "description": "Device information" }, "details": { "type": "object", "properties": { "old": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the detail" }, "value": { "type": "string", "description": "Value of the detail" } } }, "description": "Details about the old status" }, "new": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the detail" }, "value": { "type": "string", "description": "Value of the detail" } } }, "description": "Details about the new status" } }, "description": "Details about the status changes" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network id" }, "name": { "type": "string", "description": "Network name" }, "url": { "type": "string", "description": "Network dashboard url" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Network tags" } }, "description": "Network information" } } } }, "example": [ { "ts": "2018-02-11T00:00:00.090210Z", "device": { "serial": "Q234-ABCD-5678", "name": "My AP", "productType": "wireless", "model": "MR34" }, "details": { "old": [ { "name": "status", "value": "online" } ], "new": [ { "name": "status", "value": "offline" } ] }, "network": { "id": "N_24329156", "name": "Main Office", "url": "https://n1.meraki.com//n//manage/nodes/list", "tags": [ "tag1", "tag2" ] } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the availability history information for devices in an organization.", "tags": [ "organizations", "monitor", "devices", "availabilities", "changeHistory" ] } }, "/organizations/{organizationId}/devices/cellular/data/devices": { "get": { "description": "List devices eligible for Cellular Data Management profile assignment in this organization. Returns paginated device assignment candidates with current profile, software version, modem, and SIM details. Supports filtering by device serials, profile IDs, device types, and supported SIM slots.", "operationId": "getOrganizationDevicesCellularDataDevices", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "includeAssigned", "in": "query", "description": "Whether to include devices that have already been assigned to a Cellular Data Management Profile", "schema": { "type": "boolean" } }, { "name": "includedSerials", "in": "query", "description": "List of device serials to force-include in the response when the devices would otherwise be filtered out. This override is primarily useful for keeping selected devices visible while paging through results. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "excludedSerials", "in": "query", "description": "List of device serials to force-exclude from the response when the devices would otherwise be returned. This override is primarily useful for hiding selected devices while paging through results. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "includedProfileIds", "in": "query", "description": "List of Cellular Data Management Profile IDs to include in the results. Maximum 1000 profile IDs.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "excludedProfileIds", "in": "query", "description": "List of Cellular Data Management Profile IDs to exclude from the results. Maximum 1000 profile IDs.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceTypes", "in": "query", "description": "List of device types to filter by. Maximum 1000 device types.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "slots", "in": "query", "description": "List of SIM slot types that devices must support. Accepted values are sim1, sim2, and esim. Maximum 3 slots.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "esim", "sim1", "sim2" ] } } }, { "name": "name", "in": "query", "description": "Name of the device to filter by (partial matches allowed)", "schema": { "type": "string" } }, { "name": "serials", "in": "query", "description": "List of device serials to filter by. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of device" }, "name": { "type": "string", "description": "Name of device" }, "url": { "type": "string", "description": "Dashboard URL for the device" }, "model": { "type": "string", "description": "Product type of device" }, "software": { "type": "object", "properties": { "currentVersion": { "type": "object", "properties": { "shortName": { "type": "string", "description": "Short display name for the software version." } }, "description": "Current software version information." } }, "description": "Software version installed on device" }, "modems": { "type": "array", "items": { "type": "object", "properties": { "index": { "type": "integer", "description": "0-based modem index" }, "sims": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "string", "enum": [ "esim", "sim1", "sim2" ], "description": "Identifier for the logical SIM slot. Physical slots are reported as sim1 or sim2. Embedded SIM is reported as esim. Devices will only report SIM slots that are supported by the device. For devices with an eSIM, the esim entry will indicate the status of the embedded SIM if it has an active profile on it." }, "type": { "type": "string", "enum": [ "esim", "sim" ], "description": "Type of SIM (sim or esim)" }, "active": { "type": "boolean", "description": "Whether a SIM is installed in the slot or the eSIM has an active Cellular Data Management Profile." } } }, "description": "Information about the available SIMs for this modem. Maximum 3 SIM entries." } } }, "description": "Information about the available modems and SIMs for the device. Maximum 1 modem." }, "profile": { "type": "object", "properties": { "assigned": { "type": "boolean", "description": "Whether the device is assigned to a Cellular Data Management Profile or not" }, "id": { "type": "string", "description": "ID of the Cellular Data Management Profile", "nullable": true }, "name": { "type": "string", "description": "Name of the Cellular Data Management Profile", "nullable": true } }, "description": "Cellular Data Management Profile assignment state for the device. This object is always present. Unassigned devices return assigned as false and null values for id and name." }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the network" }, "id": { "type": "string", "description": "ID of the network" } }, "description": "Network the device is a part of" } } }, "description": "Devices available to be assigned to a Cellular Data Management Profile. Maximum 1000 items per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices available" }, "remaining": { "type": "integer", "description": "Remaining number of devices (for paginated response)" } }, "description": "Count of devices" } }, "description": "Count of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "name": "Some device name", "url": "https://n1.meraki.com/Some-Network/n/AbCdEf/manage/nodes/new_list/1234", "model": "mg52e", "software": { "currentVersion": { "shortName": "MG 26.1.120" } }, "modems": [ { "index": 0, "sims": [ { "slot": "esim", "type": "esim", "active": true } ] } ], "profile": { "assigned": true, "id": "SOME_1234", "name": "Some profile name" }, "network": { "name": "Some network name", "id": "SOME_1234" } } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List devices eligible for Cellular Data Management profile assignment in this organization", "tags": [ "organizations", "monitor", "devices", "cellular", "data" ] } }, "/organizations/{organizationId}/devices/cellular/data/profiles": { "get": { "description": "List cellular data management profiles in this organization. Returns each configured cellular data management profile in this organization, including its rules and assigned-device summary counts. Supports filtering by `profileIds` and `serials` and uses cursor pagination.", "operationId": "getOrganizationDevicesCellularDataProfiles", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to filter the results by Data Management Profile ID.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Devices to find Cellular Data Management Profiles for.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "profileId": { "type": "string", "description": "ID of the profile." }, "lastUpdatedAt": { "type": "string", "description": "Time the profile was last updated in ISO8601Z." }, "name": { "type": "string", "description": "Name of the profile (names should be unique for all profiles defined for the org)." }, "description": { "type": "string", "description": "The description of the profile that was set when it was created." }, "counts": { "type": "object", "properties": { "devices": { "type": "object", "properties": { "assigned": { "type": "integer", "minimum": 0, "description": "Number of devices currently assigned to the profile." } }, "description": "Device counts related to this profile." } }, "description": "Summary counts related to the profile." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "The unique ID of the rule." }, "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "The SIM slot that the rule is applied to. One of: 'sim1', 'sim2', or 'sim3'." }, "uplink": { "type": "object", "properties": { "priority": { "type": "integer", "enum": [ 1, 2 ], "description": "The uplink priority for this rule. One of: 1 or 2, where 1 is the highest priority." }, "isPreferred": { "type": "boolean", "description": "Whether this uplink is the preferred one to use once all rules have been exhausted." } }, "description": "Configuration for the uplink governed by this rule." }, "cap": { "type": "object", "properties": { "value": { "type": "integer", "minimum": 1, "maximum": 1024000, "description": "The total bandwidth available for the specified term in megabytes." }, "threshold": { "type": "number", "format": "float", "description": "The data usage threshold at which the rule should be triggered. This is expressed as a float between 0.01 and 1.0 (where 0.01 is equal to 1% of total and 1.0 is equal to 100%). By default this will be 1.0." }, "term": { "type": "object", "properties": { "resets": { "type": "string", "enum": [ "daily", "monthly", "weekly" ], "description": "How often the device resets the aggregated data count. One of: 'daily', 'weekly', or 'monthly'." }, "starts": { "type": "object", "properties": { "hourOfDay": { "type": "integer", "description": "When the data usage term resets daily, the hour the accounted bandwidth usage should reset. This can be between 0 and 23 (where 0 is 0:00 GMT and 23 is 23:00 GMT)." }, "dayOfWeek": { "type": "string", "enum": [ "fri", "mon", "sat", "sun", "thu", "tue", "wed" ], "description": "When the data usage term resets weekly, the day of week that the accounted bandwidth usage should reset. Uses the lowercase three-letter weekday abbreviation: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', or 'sun'. Requests are normalized case-insensitively to this form." }, "dayOfMonth": { "type": "integer", "description": "When the data usage term resets monthly, the day of month that the accounted bandwidth usage should reset. This can be between 1 and 31 (months that have a number of days less than the value for dayOfMonth will begin on the last day of the month)." } }, "description": "The reset point for the selected term. Exactly one of the nested values must be set depending on the selected reset frequency. Use 'hourOfDay' for a daily reset, 'dayOfWeek' for a weekly reset, and 'dayOfMonth' for a monthly reset." } }, "description": "The data usage term configuration that determines when the aggregated data count resets on the device." } }, "description": "The data cap values to be set with this rule." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "failover", "send_message" ], "description": "The type of action to be undertaken. One of: 'send_message' or 'failover'." } } }, "description": "The defined actions that will occur when the profile rule is triggered. At least one action and no more than two actions may be defined for a rule." } } }, "description": "The data management rules defined for the profile. At least one rule and no more than two rules may be defined for a profile." } } }, "description": "List of Cellular Data Management Profiles" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "minimum": 0, "description": "Total number of Cellular Data Management Profiles available." }, "remaining": { "type": "integer", "minimum": 0, "description": "Remaining number of Cellular Data Management Profiles available for pagination. This value is between 0 and total." } }, "description": "Count of Cellular Data Management Profiles." } }, "description": "Counts of involved entities." } }, "description": "Meta data about the results." } } }, "example": { "items": [ { "profileId": "42", "lastUpdatedAt": "2023-08-21T00:00:00Z", "name": "some unique profile name", "description": "some description", "counts": { "devices": { "assigned": 3 } }, "rules": [ { "ruleId": "42", "slot": "sim1", "uplink": { "priority": 1, "isPreferred": true }, "cap": { "value": 1234, "threshold": 0.92, "term": { "resets": "monthly", "starts": { "hourOfDay": 12, "dayOfWeek": "wed", "dayOfMonth": 4 } } }, "actions": [ { "type": "failover" } ] } ] } ], "meta": { "counts": { "items": { "total": 420, "remaining": 42 } } } } } }, "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 cellular data management profiles in this organization", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles" ] }, "post": { "description": "Add a cellular data management profile to this organization. Creates a cellular data management profile in this organization and returns the created profile, including its rules and actions.", "operationId": "createOrganizationDevicesCellularDataProfile", "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 the profile to be added. This must be unique." }, "description": { "type": "string", "description": "Description of the profile to be added." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "The SIM slot that the rule is applied to. One of: 'sim1', 'sim2', or 'sim3'. Devices included in this group must have an active card/profile with the defined SIM slot in order to use this rule." }, "uplink": { "type": "object", "properties": { "priority": { "type": "integer", "enum": [ 1, 2 ], "description": "The uplink priority for this rule. One of: 1 or 2, where 1 is the highest priority." }, "isPreferred": { "type": "boolean", "description": "Whether this uplink is the preferred one to use once all rules have been exhausted." } }, "required": [ "priority", "isPreferred" ], "description": "Configuration for the uplink governed by this rule." }, "cap": { "type": "object", "properties": { "value": { "type": "integer", "minimum": 1, "maximum": 1024000, "description": "The total bandwidth available for the specified term in megabytes." }, "threshold": { "type": "number", "format": "float", "minimum": 0.01, "maximum": 1.0, "description": "The data usage threshold at which the rule should be triggered. This is expressed as a float between 0.01 and 1.0 (where 0.01 is equal to 1% of total and 1.0 is equal to 100%). By default this will be 1.0." }, "term": { "type": "object", "properties": { "resets": { "type": "string", "enum": [ "daily", "monthly", "weekly" ], "description": "How often the device resets the aggregated data count. One of: 'daily', 'weekly', or 'monthly'." }, "starts": { "type": "object", "properties": { "hourOfDay": { "type": "integer", "minimum": 0, "maximum": 23, "description": "When the data usage term is to be reset daily, the hour the accounted bandwidth usage for the term should be reset. This can be between 0 and 23 (where 0 is 0:00 GMT and 23 is 23:00 GMT)." }, "dayOfWeek": { "type": "string", "enum": [ "fri", "mon", "sat", "sun", "thu", "tue", "wed" ], "description": "When the data usage term resets weekly, the day of week that the accounted bandwidth usage should reset. Uses the lowercase three-letter weekday abbreviation: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', or 'sun'. Requests are normalized case-insensitively to this form." }, "dayOfMonth": { "type": "integer", "minimum": 1, "maximum": 31, "description": "When the data usage term is to be reset monthly, the day of month that the accounted bandwidth usage for the term should be reset. This can be between 1 and 31 (months that have a number of days less than the value for dayOfMonth will begin on the last day of the month)." } }, "description": "The reset point for the selected term. Exactly one of the nested values must be set depending on the selected reset frequency. Use 'hourOfDay' for a daily reset, 'dayOfWeek' for a weekly reset, and 'dayOfMonth' for a monthly reset." } }, "required": [ "resets", "starts" ], "description": "The data usage term configuration that determines when the aggregated data count resets on the device." } }, "required": [ "value", "term" ], "description": "The data cap values to be set with this rule." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "failover", "send_message" ], "description": "The type of action to be undertaken. One of: 'send_message' or 'failover'." } } }, "description": "The defined actions that will occur when the profile rule is triggered. No more than two actions may be defined for a rule." } }, "required": [ "slot", "uplink", "cap" ] }, "description": "The rules associated with this profile. At least one rule and no more than two rules may be defined for a profile." } }, "example": { "name": "some unique profile name", "description": "some description", "rules": [ { "slot": "sim1", "uplink": { "priority": 1, "isPreferred": true }, "cap": { "value": 42, "threshold": 0.9, "term": { "resets": "daily", "starts": { "hourOfDay": 12, "dayOfWeek": "mon", "dayOfMonth": 2 } } }, "actions": [ { "type": "failover" } ] } ] }, "required": [ "name", "description", "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "ID of the profile." }, "lastUpdatedAt": { "type": "string", "description": "Time the profile was last updated in ISO8601Z." }, "name": { "type": "string", "description": "Name of the profile (names should be unique for all profiles defined for the org)." }, "description": { "type": "string", "description": "The description of the profile that was set when it was created." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "The unique ID of the rule." }, "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "The SIM slot that the rule is applied to. One of: 'sim1', 'sim2', or 'sim3'." }, "uplink": { "type": "object", "properties": { "priority": { "type": "integer", "enum": [ 1, 2 ], "description": "The uplink priority for this rule. One of: 1 or 2, where 1 is the highest priority." }, "isPreferred": { "type": "boolean", "description": "Whether this uplink is the preferred one to use once all rules have been exhausted." } }, "description": "Configuration for the uplink governed by this rule." }, "cap": { "type": "object", "properties": { "value": { "type": "integer", "minimum": 1, "maximum": 1024000, "description": "The total bandwidth available for the specified term in megabytes." }, "threshold": { "type": "number", "format": "float", "minimum": 0.01, "maximum": 1.0, "description": "The data usage threshold at which the rule should be triggered. This is expressed as a float between 0.01 and 1.0 (where 0.01 is equal to 1% of total and 1.0 is equal to 100%). By default this will be 1.0." }, "term": { "type": "object", "properties": { "resets": { "type": "string", "enum": [ "daily", "monthly", "weekly" ], "description": "How often the device resets the aggregated data count. One of: 'daily', 'weekly', or 'monthly'." }, "starts": { "type": "object", "properties": { "hourOfDay": { "type": "integer", "minimum": 0, "maximum": 23, "description": "When the data usage term is to be reset daily, the hour the accounted bandwidth usage for the term should be reset. This can be between 0 and 23 (where 0 is 0:00 GMT and 23 is 23:00 GMT)." }, "dayOfWeek": { "type": "string", "enum": [ "fri", "mon", "sat", "sun", "thu", "tue", "wed" ], "description": "When the data usage term resets weekly, the day of week that the accounted bandwidth usage should reset. Uses the lowercase three-letter weekday abbreviation: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', or 'sun'. Requests are normalized case-insensitively to this form." }, "dayOfMonth": { "type": "integer", "minimum": 1, "maximum": 31, "description": "When the data usage term is to be reset monthly, the day of month that the accounted bandwidth usage for the term should be reset. This can be between 1 and 31 (months that have a number of days less than the value for dayOfMonth will begin on the last day of the month)." } }, "description": "The reset point for the selected term. Exactly one of the nested values must be set depending on the selected reset frequency. Use 'hourOfDay' for a daily reset, 'dayOfWeek' for a weekly reset, and 'dayOfMonth' for a monthly reset." } }, "description": "The data usage term configuration that determines when the aggregated data count resets on the device." } }, "description": "The data cap values to be set with this rule." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "failover", "send_message" ], "description": "The type of action to be undertaken. One of: 'send_message' or 'failover'." } } }, "description": "The defined actions that will occur when the profile rule is triggered. No more than two actions may be defined for a rule." } } }, "description": "The rules associated with this profile. At least one rule and no more than two rules may be defined for a profile." } } }, "example": { "profileId": "42", "lastUpdatedAt": "2023-08-21T00:00:00Z", "name": "some unique profile name", "description": "some description", "rules": [ { "ruleId": "43", "slot": "sim1", "uplink": { "priority": 1, "isPreferred": true }, "cap": { "value": 42, "threshold": 0.9, "term": { "resets": "monthly", "starts": { "hourOfDay": 12, "dayOfWeek": "mon", "dayOfMonth": 2 } } }, "actions": [ { "type": "failover" } ] } ] } } } } }, "summary": "Add a cellular data management profile to this organization", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles" ] } }, "/organizations/{organizationId}/devices/cellular/data/profiles/assignments": { "get": { "description": "List Cellular Data Management Profile assignments in this organization. Returns paginated device-to-profile assignments and supports filtering by profile IDs and device serials.", "operationId": "getOrganizationDevicesCellularDataProfilesAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileIds", "in": "query", "description": "Optional parameter to find assignments by Profile IDs. Maximum 1000 profile IDs.", "schema": { "type": "array", "items": { "type": "string" }, "maxItems": 1000 } }, { "name": "serials", "in": "query", "description": "Optional parameter to find assignments by Device Serials. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" }, "maxItems": 1000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "Unique ID of the device assignment" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile the device was assigned to" } }, "description": "Profile assigned to the device" }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the device assigned" } }, "description": "Device assigned to the profile" } } }, "maxItems": 1000, "description": "List of Cellular Data Management Profile device assignments. Maximum 1000 assignments per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of Cellular Data Management Profile device assignments available." }, "remaining": { "type": "integer", "description": "Remaining number of Cellular Data Management Profile device assignments available for pagination." } }, "description": "Count of Cellular Data Management Profile device assignments." } }, "description": "Counts of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "assignmentId": "42", "profile": { "id": "1234" }, "device": { "serial": "Q234-ABCD-5678" } } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List Cellular Data Management Profile assignments in this organization", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles", "assignments" ] } }, "/organizations/{organizationId}/devices/cellular/data/profiles/assignments/batchCreate": { "post": { "description": "Assign devices to a Cellular Data Management Profile in batch. Creates up to 100 device-to-profile assignments and returns the created assignment IDs.", "operationId": "batchOrganizationDevicesCellularDataProfilesAssignmentsCreate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile to be assigned to the device" } }, "required": [ "id" ], "description": "Profile to assign to the device" }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the device to be assigned to the profile" } }, "required": [ "serial" ], "description": "Device to assign to the profile" } }, "required": [ "profile", "device" ] }, "maxItems": 100, "description": "List of device-to-profile assignments to create." } }, "example": { "items": [ { "profile": { "id": "42" }, "device": { "serial": "Q234-ABCD-5678" } } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "Unique ID of the device assignment" }, "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile the device was assigned to" } }, "description": "Profile assigned to the device" }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the device assigned" } }, "description": "Device assigned to the profile" } } }, "description": "List of created Cellular Data Management Profile device assignments" } } }, "example": { "items": [ { "assignmentId": "42", "profile": { "id": "1234" }, "device": { "serial": "Q234-ABCD-5678" } } ] } } } } }, "summary": "Assign devices to a Cellular Data Management Profile in batch", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles", "assignments" ] } }, "/organizations/{organizationId}/devices/cellular/data/profiles/assignments/bulkDelete": { "post": { "description": "Unassign devices from a Cellular Data Management Profile in batch. Removes up to 100 device-to-profile assignments and returns no response body on success.", "operationId": "bulkOrganizationDevicesCellularDataProfilesAssignmentsDelete", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "profile": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the profile to be unassigned from the device" } }, "required": [ "id" ], "description": "Profile to unassign from the device" }, "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the device to be unassigned from the profile" } }, "required": [ "serial" ], "description": "Device to unassign from the profile" } }, "required": [ "profile", "device" ] }, "maxItems": 100, "description": "List of device-to-profile assignments to remove." } }, "example": { "items": [ { "profile": { "id": "42" }, "device": { "serial": "Q234-ABCD-5678" } } ] }, "required": [ "items" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "summary": "Unassign devices from a Cellular Data Management Profile in batch", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles", "assignments" ] } }, "/organizations/{organizationId}/devices/cellular/data/profiles/{profileId}": { "put": { "description": "Update a Cellular Data Management Profile. Note that changes made to this endpoint will overwrite existing settings for the profile so the entire profile, rules and actions should be sent when making an update.", "operationId": "updateOrganizationDevicesCellularDataProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "ID of the profile." }, "description": { "type": "string", "description": "New description of the profile." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "The SIM slot that the rule is applied to. One of: 'sim1', 'sim2', or 'sim3'. Devices included in this group must have an active card/profile with the defined SIM slot in order to use this rule." }, "uplink": { "type": "object", "properties": { "priority": { "type": "integer", "enum": [ 1, 2 ], "description": "The uplink priority for this rule. One of: 1 or 2, where 1 is the highest priority." }, "isPreferred": { "type": "boolean", "description": "Whether this uplink is the preferred one to use once all rules have been exhausted." } }, "required": [ "priority", "isPreferred" ], "description": "Configuration for the uplink governed by this rule." }, "cap": { "type": "object", "properties": { "value": { "type": "integer", "minimum": 1, "maximum": 1024000, "description": "The total bandwidth available for the specified term in megabytes." }, "threshold": { "type": "number", "format": "float", "minimum": 0.01, "maximum": 1.0, "description": "The data usage threshold at which the rule should be triggered. This is expressed as a float between 0.01 and 1.0 (where 0.01 is equal to 1% of total and 1.0 is equal to 100%). By default this will be 1.0." }, "term": { "type": "object", "properties": { "resets": { "type": "string", "enum": [ "daily", "monthly", "weekly" ], "description": "How often the device resets the aggregated data count. One of: 'daily', 'weekly', or 'monthly'." }, "starts": { "type": "object", "properties": { "hourOfDay": { "type": "integer", "minimum": 0, "maximum": 23, "description": "When the data usage term is to be reset daily, the hour the accounted bandwidth usage for the term should be reset. This can be between 0 and 23 (where 0 is 0:00 GMT and 23 is 23:00 GMT)." }, "dayOfWeek": { "type": "string", "enum": [ "fri", "mon", "sat", "sun", "thu", "tue", "wed" ], "description": "When the data usage term resets weekly, the day of week that the accounted bandwidth usage should reset. Uses the lowercase three-letter weekday abbreviation: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', or 'sun'. Requests are normalized case-insensitively to this form." }, "dayOfMonth": { "type": "integer", "minimum": 1, "maximum": 31, "description": "When the data usage term is to be reset monthly, the day of month that the accounted bandwidth usage for the term should be reset. This can be between 1 and 31 (months that have a number of days less than the value for dayOfMonth will begin on the last day of the month)." } }, "description": "The reset point for the selected term. Exactly one of the nested values must be set depending on the selected reset frequency. Use 'hourOfDay' for a daily reset, 'dayOfWeek' for a weekly reset, and 'dayOfMonth' for a monthly reset." } }, "required": [ "resets", "starts" ], "description": "The data usage term configuration that determines when the aggregated data count resets on the device." } }, "required": [ "value", "term" ], "description": "The data cap values to be set with this rule." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "failover", "send_message" ], "description": "The type of action to be undertaken. One of: 'send_message' or 'failover'." } } }, "description": "The defined actions that will occur when the profile rule is triggered. No more than two actions may be defined for a rule." } }, "required": [ "slot", "uplink", "cap" ] }, "description": "The rules associated with this profile. At least one rule and no more than two rules may be defined for a profile." } }, "example": { "profileId": "42", "description": "some description", "rules": [ { "slot": "sim1", "uplink": { "priority": 1, "isPreferred": true }, "cap": { "value": 42, "threshold": 0.9, "term": { "resets": "daily", "starts": { "hourOfDay": 12, "dayOfWeek": "mon", "dayOfMonth": 2 } } }, "actions": [ { "type": "failover" } ] } ] }, "required": [ "rules" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "profileId": { "type": "string", "description": "ID of the profile." }, "lastUpdatedAt": { "type": "string", "description": "Time the profile was last updated in ISO8601Z." }, "name": { "type": "string", "description": "Name of the profile (names should be unique for all profiles defined for the org)." }, "description": { "type": "string", "description": "The description of the profile." }, "rules": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "The unique ID of the rule." }, "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "The SIM slot that the rule is applied to. One of: 'sim1', 'sim2', or 'sim3'." }, "uplink": { "type": "object", "properties": { "priority": { "type": "integer", "enum": [ 1, 2 ], "description": "The uplink priority for this rule. One of: 1 or 2, where 1 is the highest priority." }, "isPreferred": { "type": "boolean", "description": "Whether this uplink is the preferred one to use once all rules have been exhausted." } }, "description": "Configuration for the uplink governed by this rule." }, "cap": { "type": "object", "properties": { "value": { "type": "integer", "minimum": 1, "maximum": 1024000, "description": "The total bandwidth available for the specified term in megabytes." }, "threshold": { "type": "number", "format": "float", "minimum": 0.01, "maximum": 1.0, "description": "The data usage threshold at which the rule should be triggered. This is expressed as a float between 0.01 and 1.0 (where 0.01 is equal to 1% of total and 1.0 is equal to 100%). By default this will be 1.0." }, "term": { "type": "object", "properties": { "resets": { "type": "string", "enum": [ "daily", "monthly", "weekly" ], "description": "How often the device resets the aggregated data count. One of: 'daily', 'weekly', or 'monthly'." }, "starts": { "type": "object", "properties": { "hourOfDay": { "type": "integer", "minimum": 0, "maximum": 23, "description": "When the data usage term is to be reset daily, the hour the accounted bandwidth usage for the term should be reset. This can be between 0 and 23 (where 0 is 0:00 GMT and 23 is 23:00 GMT)." }, "dayOfWeek": { "type": "string", "enum": [ "fri", "mon", "sat", "sun", "thu", "tue", "wed" ], "description": "When the data usage term resets weekly, the day of week that the accounted bandwidth usage should reset. Uses the lowercase three-letter weekday abbreviation: 'mon', 'tue', 'wed', 'thu', 'fri', 'sat', or 'sun'. Requests are normalized case-insensitively to this form." }, "dayOfMonth": { "type": "integer", "minimum": 1, "maximum": 31, "description": "When the data usage term is to be reset monthly, the day of month that the accounted bandwidth usage for the term should be reset. This can be between 1 and 31 (months that have a number of days less than the value for dayOfMonth will begin on the last day of the month)." } }, "description": "The reset point for the selected term. Exactly one of the nested values must be set depending on the selected reset frequency. Use 'hourOfDay' for a daily reset, 'dayOfWeek' for a weekly reset, and 'dayOfMonth' for a monthly reset." } }, "description": "The data usage term configuration that determines when the aggregated data count resets on the device." } }, "description": "The data cap values to be set with this rule." }, "actions": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "failover", "send_message" ], "description": "The type of action to be undertaken. One of: 'send_message' or 'failover'." } } }, "description": "The defined actions that will occur when the profile rule is triggered. No more than two actions may be defined for a rule." } } }, "description": "The rules associated with this profile. At least one rule and no more than two rules may be defined for a profile." } } }, "example": { "profileId": "42", "lastUpdatedAt": "2023-08-21T00:00:00Z", "name": "some unique profile name", "description": "some description", "rules": [ { "ruleId": "42", "slot": "sim1", "uplink": { "priority": 1, "isPreferred": true }, "cap": { "value": 42, "threshold": 0.9, "term": { "resets": "monthly", "starts": { "hourOfDay": 12, "dayOfWeek": "mon", "dayOfMonth": 2 } } }, "actions": [ { "type": "failover" } ] } ] } } } } }, "summary": "Update a Cellular Data Management Profile", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles" ] }, "delete": { "description": "Delete a cellular data management profile from this organization. Removes the profile, including its associated rules and node assignments, and notifies affected devices of the resulting configuration change.", "operationId": "deleteOrganizationDevicesCellularDataProfile", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "profileId", "in": "path", "description": "Profile ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete a cellular data management profile from this organization", "tags": [ "organizations", "configure", "devices", "cellular", "data", "profiles" ] } }, "/organizations/{organizationId}/devices/cellular/data/usage/byDevice": { "get": { "description": "List current cellular data usage for devices in this organization. Returns a paginated per-device view of current SIM usage in each device's current usage period (as set by the device's configuration). Supports filtering by device serials.", "operationId": "getOrganizationDevicesCellularDataUsageByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "Filter the results by device serials. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" }, "maxItems": 1000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of device" }, "bySlot": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "string", "enum": [ "esim", "sim1", "sim2" ], "description": "Identifier for the logical SIM slot. Accepted values are sim1, sim2, and esim." }, "isActive": { "type": "boolean", "description": "Whether a SIM is installed in the slot or the eSIM has an active profile." }, "total": { "type": "string", "description": "Current data usage on the SIM as a string-encoded byte count" }, "lastUpdatedAt": { "type": "string", "description": "Timestamp of when the usage was last reported from the device" }, "startTs": { "type": "string", "description": "Start of the current usage period for the device" }, "endTs": { "type": "string", "description": "End of the current usage period for the device" }, "limit": { "type": "string", "description": "Data limit for the SIM as a string-encoded byte count, if applicable" } } }, "maxItems": 3, "description": "Information about the supported SIM slots for the device. Maximum 3 entries." } } }, "maxItems": 1000, "description": "Devices with their current cellular data usage information. Maximum 1000 items per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices available" }, "remaining": { "type": "integer", "description": "Remaining number of devices (for paginated response)" } }, "description": "Count of devices" } }, "description": "Count of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "bySlot": [ { "slot": "esim", "isActive": true, "total": "12345", "lastUpdatedAt": "2024-01-01T12:00:00Z", "startTs": "2024-01-01T00:00:00Z", "endTs": "2024-01-31T23:59:59Z", "limit": "1024" } ] } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List current cellular data usage for devices in this organization", "tags": [ "organizations", "monitor", "devices", "cellular", "data", "usage", "byDevice" ] } }, "/organizations/{organizationId}/devices/cellular/data/usage/history/byDevice/byInterval": { "get": { "description": "List historical cellular data usage grouped by device and interval in this organization. Returns a paginated per-device time series with per-SIM totals and supports the standard t0, t1, timespan, and interval query parameters.", "operationId": "getOrganizationDevicesCellularDataUsageHistoryByDeviceByInterval", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "required": true, "description": "Required parameter to filter the results by device serials. Maximum 10 serials.", "schema": { "type": "array", "items": { "type": "string" }, "maxItems": 10 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 10. Default is 5.", "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 366 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 1 day. If interval is provided, the timespan will be autocalculated.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "interval", "in": "query", "description": "The time interval in seconds for returned data. The valid intervals are: 300, 1200, 14400, 86400. The default is 86400. Interval is calculated if time params are provided.", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of device" }, "intervals": { "type": "array", "items": { "type": "object", "properties": { "startTs": { "type": "string", "description": "Start time of interval" }, "endTs": { "type": "string", "description": "End time of interval" }, "usage": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total cellular data used in bytes across all SIMs" }, "bySim": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "SIM name. Accepted values are sim1, sim2, and sim3." }, "total": { "type": "integer", "description": "Total cellular data used in bytes by SIM" } } }, "maxItems": 3, "description": "Cellular data used in bytes by SIM. Maximum 3 SIM entries." } }, "description": "Cellular data used in bytes by each SIM and the total" } } }, "maxItems": 8928, "description": "Historical cellular data usage buckets for the device. Maximum 8928 intervals per device based on the 31-day timespan and 5-minute interval limits." } } }, "maxItems": 10, "description": "Historical cellular data usage grouped by device and interval. Maximum 10 devices per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices available" }, "remaining": { "type": "integer", "description": "Remaining number of devices (for paginated response)" } }, "description": "Count of devices" } }, "description": "Counts of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "intervals": [ { "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "usage": { "total": 1234, "bySim": [ { "name": "sim1", "total": 1004 } ] } } ] } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List historical cellular data usage grouped by device and interval in this organization", "tags": [ "organizations", "monitor", "devices", "cellular", "data", "usage", "history", "byDevice", "byInterval" ] } }, "/organizations/{organizationId}/devices/cellular/geolocations": { "get": { "description": "List the latest cellular geolocation telemetry for devices in an organization. Data is refreshed at most once every 90 minutes.", "operationId": "getOrganizationDevicesCellularGeolocations", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "Optional parameter to filter the results by device serials. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial number" }, "geolocation": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Indicates whether geolocation is enabled for the device" }, "latitude": { "type": "number", "format": "float", "description": "Latitude of the device's location in decimal degrees. Range: -90 to 90. Null when geolocation is disabled or unavailable.", "nullable": true }, "longitude": { "type": "number", "format": "float", "description": "Longitude of the device's location in decimal degrees. Range: -180 to 180. Null when geolocation is disabled or unavailable.", "nullable": true }, "lastReportedAt": { "type": "string", "format": "date-time", "description": "UTC ISO 8601 timestamp when the device last reported geolocation telemetry. Null when geolocation is disabled or no location has been reported.", "nullable": true } }, "description": "Geolocation information for the device" } } }, "description": "List of cellular geolocation telemetry for devices in the organization. Maximum 100 devices per page by default and 1000 maximum per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices with geolocation information available" }, "remaining": { "type": "integer", "description": "Remaining number of devices with geolocation information (for paginated response)" } }, "description": "Count of devices with geolocation information available" } }, "description": "Counts of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "geolocation": { "enabled": true, "latitude": 37.7749, "longitude": -122.4194, "lastReportedAt": "2023-03-15T12:34:56Z" } } ], "meta": { "counts": { "items": { "total": 420, "remaining": 42 } } } } } }, "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 latest cellular geolocation telemetry for devices in an organization", "tags": [ "organizations", "monitor", "devices", "cellular", "geolocations" ] } }, "/organizations/{organizationId}/devices/cellular/uplinks/bands/byDevice": { "get": { "description": "List the latest cellular uplink signal information for devices in an organization. Data is refreshed at most once every 90 minutes.", "operationId": "getOrganizationDevicesCellularUplinksBandsByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "Optional parameter to filter the results by device serials. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial number" }, "bySlot": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "string", "enum": [ "sim1", "sim2", "sim3" ], "description": "SIM slot identifier" }, "bySignalType": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "5GNSA", "5GSA", "LTE" ], "description": "Cellular connection type" }, "masked": { "type": "array", "items": { "type": "string" }, "description": "List of masked band identifiers. For LTE use bands identifiers like '30', for 5G use band identifiers like 'n30', or 'all' when all bands are masked. Maximum 256 bands per signal type." }, "enabled": { "type": "array", "items": { "type": "string" }, "description": "List of enabled band identifiers. For LTE use bands identifiers like '30' and for 5G use band identifiers like 'n30'. Maximum 256 bands per signal type." }, "supported": { "type": "array", "items": { "type": "string" }, "description": "List of supported band identifiers. For LTE use bands identifiers like '30' and for 5G use band identifiers like 'n30'. Maximum 256 bands per signal type." } } }, "description": "Signal settings for the SIM. Maximum 3 signal types per SIM slot." } } }, "description": "SIMs associated with the device. Maximum 3 SIM slots per device." } } }, "description": "List of cellular uplink signal information for devices in the organization. Maximum 1000 devices per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices with cellular uplink signal information available" }, "remaining": { "type": "integer", "description": "Remaining number of devices with cellular uplink signal information (for paginated response)" } }, "description": "Count of devices with cellular uplink signal information available" } }, "description": "Counts of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "bySlot": [ { "slot": "sim1", "bySignalType": [ { "type": "LTE", "masked": [ "2", "4", "12" ], "enabled": [ "8", "10" ], "supported": [ "2", "4", "8", "10", "12" ] } ] } ] } ], "meta": { "counts": { "items": { "total": 420, "remaining": 42 } } } } } }, "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 latest cellular uplink signal information for devices in an organization", "tags": [ "organizations", "monitor", "devices", "cellular", "uplinks", "bands", "byDevice" ] } }, "/organizations/{organizationId}/devices/cellular/uplinks/towers/byDevice": { "get": { "description": "List the latest cellular tower information for devices in an organization. Data is refreshed at most once every 90 minutes.", "operationId": "getOrganizationDevicesCellularUplinksTowersByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "Optional parameter to filter the results by device serials. Maximum 1000 serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Device serial number" }, "connection": { "type": "object", "properties": { "cell": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier of the serving cell tower in decimal format. Null when the device has not reported serving cell details.", "nullable": true } }, "description": "Serving cell tower information" }, "tac": { "type": "string", "description": "Tracking Area Code in hexadecimal with a 0x prefix, representing the coverage area of one or more cell towers. Null when the device has not reported tower details.", "nullable": true } }, "description": "Details about the cellular connection" } } }, "description": "List of cellular tower information for devices in the organization. Maximum 100 devices per page by default and 1000 maximum per page." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices with cellular tower information available" }, "remaining": { "type": "integer", "description": "Remaining number of devices with cellular tower information (for paginated response)" } }, "description": "Count of devices with cellular tower information available" } }, "description": "Counts of involved entities" } }, "description": "Meta data about the results" } } }, "example": { "items": [ { "serial": "Q234-ABCD-5678", "connection": { "cell": { "id": "1234567890" }, "tac": "0x3F2A" } } ], "meta": { "counts": { "items": { "total": 420, "remaining": 42 } } } } } }, "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 latest cellular tower information for devices in an organization", "tags": [ "organizations", "monitor", "devices", "cellular", "uplinks", "towers", "byDevice" ] } }, "/organizations/{organizationId}/devices/controller/migrations": { "post": { "description": "Migrate devices to another controller or management mode", "operationId": "createOrganizationDevicesControllerMigration", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "A list of Meraki Serials to migrate" }, "target": { "type": "string", "enum": [ "wirelessController" ], "description": "The controller or management mode to which the devices will be migrated" } }, "example": { "serials": [ "QABC-DEFG-HIJK" ], "target": "wirelessController" }, "required": [ "serials", "target" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "The device serial" }, "target": { "type": "string", "enum": [ "wirelessController" ], "description": "The migration target destination" }, "createdAt": { "type": "string", "format": "date-time", "description": "The time at which a migration was created" }, "migratedAt": { "type": "string", "format": "date-time", "description": "The time at which the device initiated migration", "nullable": true } } } }, "example": [ { "serial": "QXYZ-DEFG-HIJK", "target": "wirelessController", "createdAt": "2020-10-21T02:00:00Z", "migratedAt": "2020-10-21T03:00:00Z" } ] } } } }, "summary": "Migrate devices to another controller or management mode", "tags": [ "organizations", "configure", "devices", "controller", "migrations" ] }, "get": { "description": "Retrieve device migration statuses in an organization", "operationId": "getOrganizationDevicesControllerMigrations", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serials", "in": "query", "description": "A list of Meraki Serials for which to retrieve migrations", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Filter device migrations by network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "target", "in": "query", "description": "Filter device migrations by target destination", "schema": { "type": "string", "enum": [ "wirelessController" ] } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "The device serial" }, "target": { "type": "string", "enum": [ "wirelessController" ], "description": "The migration target destination" }, "createdAt": { "type": "string", "format": "date-time", "description": "The time at which a migration was created" }, "migratedAt": { "type": "string", "format": "date-time", "description": "The time at which the device initiated migration", "nullable": true } } }, "description": "List of migrations for the specified devices" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "serial": "QXYZ-DEFG-HIJK", "target": "wirelessController", "createdAt": "2020-10-21T02:00:00Z", "migratedAt": "2020-10-21T03:00:00Z" } ], "meta": { "counts": { "items": { "total": 10, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "Retrieve device migration statuses in an organization", "tags": [ "organizations", "configure", "devices", "controller", "migrations" ] } }, "/organizations/{organizationId}/devices/details/bulkUpdate": { "post": { "description": "Updating device details (currently only used for Catalyst devices)", "operationId": "bulkUpdateOrganizationDevicesDetails", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "A list of serials of devices to update" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of device detail" }, "value": { "type": "string", "description": "Value of device detail" } }, "required": [ "name" ] }, "description": "An array of details" } }, "example": { "serials": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ], "details": [ { "name": "username", "value": "ABC" }, { "name": "password", "value": "ABC123" }, { "name": "enable password", "value": "ABC123" } ] }, "required": [ "serials", "details" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "A list of serials of devices updated" } }, "required": [ "serials" ] }, "example": { "serials": [ "Q234-ABCD-0001", "Q234-ABCD-0002", "Q234-ABCD-0003" ] } } } } }, "summary": "Updating device details (currently only used for Catalyst devices)", "tags": [ "organizations", "configure", "devices", "details", "bulkUpdate" ] } }, "/organizations/{organizationId}/devices/overview/byModel": { "get": { "description": "Lists the count for each device model", "operationId": "getOrganizationDevicesOverviewByModel", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "models", "in": "query", "description": "Optional parameter to filter devices by one or more models. All returned devices will have a model that is an exact match.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter devices by networkId.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device by device product types. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "counts": { "type": "array", "items": { "type": "object", "properties": { "model": { "type": "string", "description": "Device model" }, "total": { "type": "integer", "description": "Total number of devices for the model" } } }, "description": "Counts of devices per model" } } }, "example": { "counts": [ { "model": "MR34", "total": 1 } ] } } } } }, "summary": "Lists the count for each device model", "tags": [ "organizations", "configure", "devices", "overview", "byModel" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures": { "get": { "description": "List Packet Captures. The current license level allows storage of up to 10 capture files in the cloud. When this limit is reached and a new capture is taken, the oldest capture will be automatically deleted to ensure sufficient space. Additional storage for switches will be available with an advantage license at a future date. These future capabilities will be consistent with what is available today via advantage licensing for access points.", "operationId": "getOrganizationDevicesPacketCaptureCaptures", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "captureIds", "in": "query", "description": "Return the packet captures of the specified capture ids", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Return the packet captures of the specified network(s)", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Return the packet captures of the specified device(s)", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "process", "in": "query", "description": "Return the packet captures of the specified process", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "captureStatus", "in": "query", "description": "Return the packet captures of the specified capture status", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Return the packet captures matching the specified name", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "clientMac", "in": "query", "description": "Return the packet captures matching the specified client macs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "notes", "in": "query", "description": "Return the packet captures matching the specified notes", "schema": { "type": "string" } }, { "name": "deviceName", "in": "query", "description": "Return the packet captures matching the specified device name", "schema": { "type": "string" } }, { "name": "adminName", "in": "query", "description": "Return the packet captures matching the admin name", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 365 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 365 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 365 days. The default is 365 days.", "schema": { "type": "number", "format": "float", "maximum": 31536000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "sortOrder", "in": "query", "description": "Sorted order of entries. Order options are 'ascending' and 'descending'. Default is 'descending'.", "schema": { "type": "string", "enum": [ "ascending", "descending" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "captureId": { "type": "string", "description": "Id of packet capture file" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of network" }, "name": { "type": "string", "description": "The name of the network" } }, "description": "Network of the packet capture file" }, "devices": { "type": "array", "items": { "type": "object" }, "description": "Device(s) of the packet capture file" }, "device": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of device" }, "serial": { "type": "string", "description": "The serial of the device" } }, "description": "One of the device(s) of the packet capture file" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the packet capture file" }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "Client ID" }, "mac": { "type": "string", "description": "Client MAC address" } }, "description": "Client of the packet capture file" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of detail" }, "value": { "type": "string", "description": "Value of the named detail" }, "productType": { "type": "string", "description": "Product type this set of details belongs to" } } }, "description": "Array of device specific details" }, "name": { "type": "string", "description": "Name of packet capture file" }, "startTs": { "type": "string", "description": "Start time of creation of packet capture file" }, "ports": { "type": "string", "description": "Ports of packet capture file" }, "status": { "type": "string", "enum": [ "capturing", "completed", "downloading", "exporting", "failed", "new" ], "description": "Status of packet capture file" }, "errorMessage": { "type": "string", "description": "Error log of packet capture file" }, "destination": { "type": "string", "description": "Destination of packet capture file" }, "process": { "type": "string", "enum": [ "automatic", "dcb", "feedback", "manual", "proactive", "scheduled" ], "description": "Source of packet capture file" }, "file": { "type": "object", "properties": { "size": { "type": "integer", "description": "File size of packet capture file" } }, "description": "Object containing information about the file" }, "duration": { "type": "integer", "description": "Duration of packet capture file" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "counts": { "type": "object", "properties": { "packets": { "type": "object", "properties": { "total": { "type": "integer", "description": "Number of packets in the packet capture. NOTE: For MS Switches, packetCount is not populated with valid data." } }, "description": "Object containing packet counts" } }, "description": "Object containing counts" }, "interface": { "type": "string", "description": "Interface of the packet capture" } } }, "description": "List of packet capture files" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of packet capture files" }, "remaining": { "type": "integer", "description": "Remaining number of packet capture files" } }, "description": "Meta data of the items" } }, "description": "Counts of the result" } }, "description": "Meta data details about result" } } }, "example": { "items": [ { "captureId": "1234", "network": { "id": "N_24329156", "name": "Main Office" }, "device": { "name": "My AP", "serial": "Q234-ABCD-5678" }, "admin": { "id": "1234", "name": "Miles Meraki" }, "client": { "id": "k74272e", "mac": "22:33:44:55:66:77" }, "details": [ { "name": "reason", "value": "bad_password", "productType": "wireless" } ], "name": "file_name", "startTs": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", "status": "new", "errorMessage": "Some error message", "destination": "upload_to_cloud", "process": "manual", "file": { "size": 1066 }, "duration": 60, "filterExpression": "(icmp)", "counts": { "packets": { "total": 10 } }, "interface": "wired" } ], "meta": { "counts": { "items": { "total": 100, "remaining": 100 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List Packet Captures", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] }, "post": { "description": "Perform a packet capture on a device and store in Meraki Cloud. Only a single switch may be chosen per request, while multiple access points are allowed at once.", "operationId": "createOrganizationDevicesPacketCaptureCapture", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "The serial(s) of the device(s)" }, "name": { "type": "string", "description": "Name of packet capture file" }, "outputType": { "type": "string", "description": "Output type of packet capture file. Possible values: text, pcap, cloudshark, or upload_to_cloud" }, "destination": { "type": "string", "description": "Destination of packet capture file. Possible values: [upload_to_cloud]" }, "ports": { "type": "string", "description": "Ports of packet capture file, comma-separated" }, "notes": { "type": "string", "description": "Reason for taking the packet capture" }, "duration": { "type": "integer", "description": "Duration in seconds of packet capture" }, "filterExpression": { "type": "string", "description": "Filter expression for packet capture" }, "interface": { "type": "string", "description": "Interface of the device" }, "advanced": { "type": "object", "properties": { "physicalInterfaceDirection": { "type": "string", "enum": [ "both", "in", "out" ], "description": "Direction for physical interface capture" }, "controlPlaneDirection": { "type": "string", "enum": [ "both", "in", "out" ], "description": "Direction for control plane capture" }, "innerFilterMacs": { "type": "array", "items": { "type": "string" }, "description": "Inner MAC address filter for tunneled traffic (up to 5 MAC addresses for Campus Gateway devices)" }, "bufferFiles": { "type": "integer", "description": "Number of buffer files for circular buffer capture (1-5 for Campus Gateway devices)" }, "maxFilesize": { "type": "integer", "description": "Maximum file size in megabytes (MB). Range: 1-100 MB when bufferFiles=1, 1-500 MB when bufferFiles=2-5" }, "captureType": { "type": "string", "description": "Type of capture. Possible values: linear (default), circular" }, "packetsPerSecond": { "type": "integer", "description": "Packets per second limit for Campus Gateway devices (1-1000000)." } }, "description": "Advanced filters for IOSXE devices (supported for Campus Gateway devices only)" } }, "example": { "serials": [ "Q234-ABCD-5678" ], "name": "Capture no. 3", "outputType": "upload_to_cloud", "destination": "upload_to_cloud", "ports": "1, 3", "notes": "Debugging connectivity issue...", "duration": 3, "filterExpression": "host 10.1.27.253", "interface": "wireless", "advanced": { "physicalInterfaceDirection": "both", "controlPlaneDirection": "both", "innerFilterMacs": [ "aa:bb:cc:dd:ee:ff", "11:22:33:44:55:66" ], "bufferFiles": 5, "maxFilesize": 10, "captureType": "circular", "packetsPerSecond": 10000 } }, "required": [ "serials", "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "captureId": { "type": "string", "description": "Id of packet capture file" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of network" }, "name": { "type": "string", "description": "The name of the network" } }, "description": "Network of the packet capture file" }, "devices": { "type": "array", "items": { "type": "object" }, "description": "Device(s) of the packet capture file" }, "device": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of device" }, "serial": { "type": "string", "description": "The serial of the device" } }, "description": "One of the device(s) of the packet capture file" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the packet capture file" }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "Client ID" }, "mac": { "type": "string", "description": "Client MAC address" } }, "description": "Client of the packet capture file" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of detail" }, "value": { "type": "string", "description": "Value of the named detail" }, "productType": { "type": "string", "description": "Product type this set of details belongs to" } } }, "description": "Array of device specific details" }, "name": { "type": "string", "description": "Name of packet capture file" }, "startTs": { "type": "string", "description": "Start time of creation of packet capture file" }, "ports": { "type": "string", "description": "Ports of packet capture file" }, "status": { "type": "string", "enum": [ "capturing", "completed", "downloading", "exporting", "failed", "new" ], "description": "Status of packet capture file" }, "errorMessage": { "type": "string", "description": "Error log of packet capture file" }, "destination": { "type": "string", "description": "Destination of packet capture file" }, "process": { "type": "string", "enum": [ "automatic", "dcb", "feedback", "manual", "proactive", "scheduled" ], "description": "Source of packet capture file" }, "file": { "type": "object", "properties": { "size": { "type": "integer", "description": "File size of packet capture file" } }, "description": "Object containing information about the file" }, "duration": { "type": "integer", "description": "Duration of packet capture file" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "counts": { "type": "object", "properties": { "packets": { "type": "object", "properties": { "total": { "type": "integer", "description": "Number of packets in the packet capture. NOTE: For MS Switches, packetCount is not populated with valid data." } }, "description": "Object containing packet counts" } }, "description": "Object containing counts" }, "interface": { "type": "string", "description": "Interface of the packet capture" } } }, "example": { "captureId": "1234", "network": { "id": "N_24329156", "name": "Main Office" }, "device": { "name": "My AP", "serial": "Q234-ABCD-5678" }, "admin": { "id": "1234", "name": "Miles Meraki" }, "client": { "id": "k74272e", "mac": "22:33:44:55:66:77" }, "details": [ { "name": "reason", "value": "bad_password", "productType": "wireless" } ], "name": "file_name", "startTs": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", "status": "new", "errorMessage": "Some error message", "destination": "upload_to_cloud", "process": "manual", "file": { "size": 1066 }, "duration": 60, "filterExpression": "(icmp)", "counts": { "packets": { "total": 10 } }, "interface": "wired" } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Perform a packet capture on a device and store in Meraki Cloud", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures/bulkCreate": { "post": { "description": "Perform a packet capture on multiple devices and store in Meraki Cloud.", "operationId": "bulkOrganizationDevicesPacketCaptureCapturesCreate", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the devices to schedule packet capture" }, "switchports": { "type": "string", "description": "switchports to capture" }, "interface": { "type": "string", "description": "interfaces to capture" } } }, "description": "Device details (maximum of 20 devices allowed)" }, "notes": { "type": "string", "description": "Reason for capture" }, "duration": { "type": "integer", "description": "Duration of the capture in seconds" }, "filterExpression": { "type": "string", "description": "Filter expression for the capture" }, "name": { "type": "string", "description": "Name of packet capture file" }, "advanced": { "type": "object", "properties": { "physicalInterfaceDirection": { "type": "string", "enum": [ "both", "in", "out" ], "description": "Direction for physical interface capture" }, "controlPlaneDirection": { "type": "string", "enum": [ "both", "in", "out" ], "description": "Direction for control plane capture" }, "innerFilterMac": { "type": "array", "items": { "type": "string" }, "description": "Inner MAC address filter for tunneled traffic (up to 5 MAC addresses for Campus Gateway devices)" }, "bufferFiles": { "type": "integer", "description": "Number of buffer files for circular buffer capture (1-5 for Campus Gateway devices)" }, "maxFilesize": { "type": "integer", "description": "Maximum file size in megabytes (MB). Range: 1-100 MB when bufferFiles=1, 1-500 MB when bufferFiles=2-5" }, "captureType": { "type": "string", "description": "Type of capture. Possible values: linear (default), circular" } }, "description": "Advanced capture options (optional)" } }, "example": { "devices": [ { "serial": "Q234-ABCD-5678", "switchports": "1, 2", "interface": "TenGigabitEthernet0/0/0" } ], "notes": "Debugging persistent issue on device", "duration": 60, "filterExpression": "(icmp)", "name": "Capture no. 3", "advanced": { "physicalInterfaceDirection": "both", "controlPlaneDirection": "both", "innerFilterMac": [ "aa:bb:cc:dd:ee:ff", "11:22:33:44:55:66" ], "bufferFiles": 5, "maxFilesize": 10, "captureType": "circular" } }, "required": [ "devices", "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "captureId": { "type": "string", "description": "Id of packet capture file" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of network" }, "name": { "type": "string", "description": "The name of the network" } }, "description": "Network of the packet capture file" }, "devices": { "type": "array", "items": { "type": "object" }, "description": "Device(s) of the packet capture file" }, "device": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of device" }, "serial": { "type": "string", "description": "The serial of the device" } }, "description": "One of the device(s) of the packet capture file" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the packet capture file" }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "Client ID" }, "mac": { "type": "string", "description": "Client MAC address" } }, "description": "Client of the packet capture file" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of detail" }, "value": { "type": "string", "description": "Value of the named detail" }, "productType": { "type": "string", "description": "Product type this set of details belongs to" } } }, "description": "Array of device specific details" }, "name": { "type": "string", "description": "Name of packet capture file" }, "startTs": { "type": "string", "description": "Start time of creation of packet capture file" }, "ports": { "type": "string", "description": "Ports of packet capture file" }, "status": { "type": "string", "enum": [ "capturing", "completed", "downloading", "exporting", "failed", "new" ], "description": "Status of packet capture file" }, "errorMessage": { "type": "string", "description": "Error log of packet capture file" }, "destination": { "type": "string", "description": "Destination of packet capture file" }, "process": { "type": "string", "enum": [ "automatic", "dcb", "feedback", "manual", "proactive", "scheduled" ], "description": "Source of packet capture file" }, "file": { "type": "object", "properties": { "size": { "type": "integer", "description": "File size of packet capture file" } }, "description": "Object containing information about the file" }, "duration": { "type": "integer", "description": "Duration of packet capture file" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "counts": { "type": "object", "properties": { "packets": { "type": "object", "properties": { "total": { "type": "integer", "description": "Number of packets in the packet capture. NOTE: For MS Switches, packetCount is not populated with valid data." } }, "description": "Object containing packet counts" } }, "description": "Object containing counts" }, "interface": { "type": "string", "description": "Interface of the packet capture" } } }, "description": "List of packet capture files" } } }, "example": { "items": [ { "captureId": "1234", "network": { "id": "N_24329156", "name": "Main Office" }, "device": { "name": "My AP", "serial": "Q234-ABCD-5678" }, "admin": { "id": "1234", "name": "Miles Meraki" }, "client": { "id": "k74272e", "mac": "22:33:44:55:66:77" }, "details": [ { "name": "reason", "value": "bad_password", "productType": "wireless" } ], "name": "file_name", "startTs": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", "status": "new", "errorMessage": "Some error message", "destination": "upload_to_cloud", "process": "manual", "file": { "size": 1066 }, "duration": 60, "filterExpression": "(icmp)", "counts": { "packets": { "total": 10 } }, "interface": "wired" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Perform a packet capture on multiple devices and store in Meraki Cloud.", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures/bulkDelete": { "post": { "description": "BulkDelete packet captures from cloud", "operationId": "bulkOrganizationDevicesPacketCaptureCapturesDelete", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "captureIds": { "type": "array", "items": { "type": "string" }, "description": "Delete the packet captures of the specified capture ids" } }, "example": { "captureIds": [ "1234", "4567" ] }, "required": [ "captureIds" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "BulkDelete packet captures from cloud", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures/{captureId}": { "delete": { "description": "Delete a single packet capture from cloud using captureId", "operationId": "deleteOrganizationDevicesPacketCaptureCapture", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "captureId", "in": "path", "description": "Capture ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Delete a single packet capture from cloud using captureId", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures/{captureId}/downloadUrl/generate": { "post": { "description": "Get presigned download URL for given packet capture id", "operationId": "generateOrganizationDevicesPacketCaptureCaptureDownloadUrl", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "captureId", "in": "path", "description": "Capture ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "captureId": { "type": "string", "description": "Id of packet capture file" }, "downloadUrl": { "type": "string", "description": "Download URL of captured packet file -- Depracated" }, "url": { "type": "string", "description": "Download URL of captured packet file" } } }, "example": { "captureId": "1234", "downloadUrl": "example.com", "url": "example.com" } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Get presigned download URL for given packet capture id", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures", "downloadUrl" ] } }, "/organizations/{organizationId}/devices/packetCapture/captures/{captureId}/stop": { "post": { "description": "Stop a specific packet capture (not supported for Catalyst devices)", "operationId": "stopOrganizationDevicesPacketCaptureCapture", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "captureId", "in": "path", "description": "Capture ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "The serial(s) of the device(s) to stop the capture on" } }, "example": { "serials": [ "Q234-ABCD-5678" ] }, "required": [ "serials" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "captureId": { "type": "string", "description": "Id of packet capture file" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of network" }, "name": { "type": "string", "description": "The name of the network" } }, "description": "Network of the packet capture file" }, "devices": { "type": "array", "items": { "type": "object" }, "description": "Device(s) of the packet capture file" }, "device": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of device" }, "serial": { "type": "string", "description": "The serial of the device" } }, "description": "One of the device(s) of the packet capture file" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the packet capture file" }, "client": { "type": "object", "properties": { "id": { "type": "string", "description": "Client ID" }, "mac": { "type": "string", "description": "Client MAC address" } }, "description": "Client of the packet capture file" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of detail" }, "value": { "type": "string", "description": "Value of the named detail" }, "productType": { "type": "string", "description": "Product type this set of details belongs to" } } }, "description": "Array of device specific details" }, "name": { "type": "string", "description": "Name of packet capture file" }, "startTs": { "type": "string", "description": "Start time of creation of packet capture file" }, "ports": { "type": "string", "description": "Ports of packet capture file" }, "status": { "type": "string", "enum": [ "capturing", "completed", "downloading", "exporting", "failed", "new" ], "description": "Status of packet capture file" }, "errorMessage": { "type": "string", "description": "Error log of packet capture file" }, "destination": { "type": "string", "description": "Destination of packet capture file" }, "process": { "type": "string", "enum": [ "automatic", "dcb", "feedback", "manual", "proactive", "scheduled" ], "description": "Source of packet capture file" }, "file": { "type": "object", "properties": { "size": { "type": "integer", "description": "File size of packet capture file" } }, "description": "Object containing information about the file" }, "duration": { "type": "integer", "description": "Duration of packet capture file" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "counts": { "type": "object", "properties": { "packets": { "type": "object", "properties": { "total": { "type": "integer", "description": "Number of packets in the packet capture. NOTE: For MS Switches, packetCount is not populated with valid data." } }, "description": "Object containing packet counts" } }, "description": "Object containing counts" }, "interface": { "type": "string", "description": "Interface of the packet capture" } } }, "example": { "captureId": "1234", "network": { "id": "N_24329156", "name": "Main Office" }, "device": { "name": "My AP", "serial": "Q234-ABCD-5678" }, "admin": { "id": "1234", "name": "Miles Meraki" }, "client": { "id": "k74272e", "mac": "22:33:44:55:66:77" }, "details": [ { "name": "reason", "value": "bad_password", "productType": "wireless" } ], "name": "file_name", "startTs": "2018-02-11T00:00:00.090210Z", "ports": "1, 2", "status": "new", "errorMessage": "Some error message", "destination": "upload_to_cloud", "process": "manual", "file": { "size": 1066 }, "duration": 60, "filterExpression": "(icmp)", "counts": { "packets": { "total": 10 } }, "interface": "wired" } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Stop a specific packet capture (not supported for Catalyst devices)", "tags": [ "organizations", "configure", "devices", "packetCapture", "captures" ] } }, "/organizations/{organizationId}/devices/packetCapture/schedules": { "get": { "description": "List the Packet Capture Schedules", "operationId": "getOrganizationDevicesPacketCaptureSchedules", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "scheduleIds", "in": "query", "description": "Return the packet captures schedules of the specified packet capture schedule ids", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Return the scheduled packet captures of the specified network(s)", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "deviceIds", "in": "query", "description": "Return the scheduled packet captures of the specified device(s)", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "Id of scheduled packet capture" }, "devices": { "type": "array", "items": { "type": "object", "properties": { "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial of the device" }, "switchports": { "type": "string", "description": "The switchports on which to take the packet capture" }, "interface": { "type": "string", "description": "The interfaces on which to take the packet capture (applicable for Catalyst devices)" } }, "description": "Device associated to the schedule" } } }, "description": "Devices associated to the schedule" }, "name": { "type": "string", "description": "Name of scheduled packet capture" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the scheduled packet capture" }, "notes": { "type": "string", "description": "Reason of scheduled packet capture" }, "duration": { "type": "integer", "description": "Duration of scheduled packet capture" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "createdAt": { "type": "string", "description": "Time of creation of scheduled packet capture" }, "updatedAt": { "type": "string", "description": "Time of updation of scheduled packet capture" }, "captureCount": { "type": "integer", "description": "The number of pcaps captured/performed" }, "lastCaptureId": { "type": "string", "description": "Pcap log id of the latest pcap from this schedule" }, "enabled": { "type": "boolean", "description": "Whether the packet capture schedule is enabled" }, "priority": { "type": "integer", "description": "Priority of the packet capture" }, "schedule": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the schedule" }, "startTs": { "type": "string", "description": "Start date of the recurring schedule entry" }, "endTs": { "type": "string", "description": "End date of the recurring schedule entry" }, "frequency": { "type": "string", "enum": [ "day", "hour", "minute", "month", "week" ], "description": "Frequency of the recurring schedule entry ex. hour|week|month|day|minute" }, "weekdays": { "type": "array", "items": { "type": "string" }, "description": "The days of the week for the recurring schedule in string form. Multiple days can be combined." }, "recurrence": { "type": "integer", "description": "The number of frequency units between each occurrence. For example, 1 means 'every [frequency]', 2 means 'every other [frequency]', etc. Used in conjunction with the 'frequency' field." }, "nextCaptureTs": { "type": "string", "description": "The datetime at which next capture will occur" } }, "description": "Schedule of the packet capture" }, "warnings": { "type": "array", "items": { "type": "string" }, "description": "Any warnings pertaining to the schedule and it's nodes" } } }, "description": "List of scheduled packet captures" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of scheduled packet captures" } }, "description": "Meta data of the items" } }, "description": "Counts of the result" } }, "description": "Meta data details about result" } } }, "example": { "items": [ { "scheduleId": "1234", "devices": [ { "device": { "serial": "Q234-ABCD-5678", "switchports": "1-3, 9", "interface": "GigabitEthernet1/0/1" } } ], "name": "pcap_file_name", "admin": { "id": "1234", "name": "Miles Meraki" }, "notes": "capture reason", "duration": 60, "filterExpression": "(icmp)", "createdAt": "2018-02-11T00:00:00.090210Z", "updatedAt": "2018-02-11T00:00:00.090210Z", "captureCount": 2, "lastCaptureId": "1234", "enabled": true, "priority": 1, "schedule": { "name": "schedule_name", "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "frequency": "hour", "weekdays": [ "Monday", "Tuesday" ], "recurrence": 1, "nextCaptureTs": "2018-02-11T00:00:00.090210Z" }, "warnings": [ "This schedule conflicts with the schedule Test Schedule at the time 2025-01-28T18:25:06Z" ] } ], "meta": { "counts": { "items": { "total": 100 } } } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the Packet Capture Schedules", "tags": [ "organizations", "configure", "devices", "packetCapture", "schedules" ] }, "post": { "description": "Create a schedule for packet capture", "operationId": "createOrganizationDevicesPacketCaptureSchedule", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the devices to schedule packet capture" }, "switchports": { "type": "string", "description": "switchports to capture" }, "interface": { "type": "string", "description": "interface to capture" } } }, "description": "device details" }, "name": { "type": "string", "description": "Name of the packet capture file" }, "notes": { "type": "string", "description": "Reason for capture" }, "duration": { "type": "integer", "description": "Duration of the capture in seconds" }, "filterExpression": { "type": "string", "description": "Filter expression for the capture" }, "enabled": { "type": "boolean", "description": "Enable or disable the schedule" }, "schedule": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the schedule" }, "startTs": { "type": "string", "description": "Start date and time of the recurring schedule entry" }, "endTs": { "type": "string", "description": "End date and time of the recurring schedule entry" }, "frequency": { "type": "string", "description": "Frequency of the recurring schedule entry (hour, week, month, day, minute)" }, "weekdays": { "type": "array", "items": { "type": "string" }, "description": "Weekdays for the schedule: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday" }, "recurrence": { "type": "integer", "description": "Cardinality of the schedule frequency, ex. 1 = every day, 2 = every other day (when frequency = day)" } }, "description": "Schedule details" } }, "example": { "devices": [ { "serial": "Q234-ABCD-5678", "switchports": "1, 2", "interface": "TenGigabitEthernet0/0/0" } ], "name": "daily_capture_for_debugging", "notes": "Debugging persistent issue on device", "duration": 60, "filterExpression": "(icmp)", "enabled": true, "schedule": { "name": "Daily at 1pm", "startTs": "2021-01-01T13:00:00Z", "endTs": "2021-01-01T14:00:00Z", "frequency": "daily", "weekdays": [ "Monday", "Wednesday", "Friday" ], "recurrence": 1 } }, "required": [ "devices" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "Id of scheduled packet capture" }, "devices": { "type": "array", "items": { "type": "object", "properties": { "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial of the device" }, "switchports": { "type": "string", "description": "The switchports on which to take the packet capture" }, "interface": { "type": "string", "description": "The interfaces on which to take the packet capture (applicable for Catalyst devices)" } }, "description": "Device associated to the schedule" } } }, "description": "Devices associated to the schedule" }, "name": { "type": "string", "description": "Name of scheduled packet capture" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the scheduled packet capture" }, "notes": { "type": "string", "description": "Reason of scheduled packet capture" }, "duration": { "type": "integer", "description": "Duration of scheduled packet capture" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "createdAt": { "type": "string", "description": "Time of creation of scheduled packet capture" }, "updatedAt": { "type": "string", "description": "Time of updation of scheduled packet capture" }, "captureCount": { "type": "integer", "description": "The number of pcaps captured/performed" }, "lastCaptureId": { "type": "string", "description": "Pcap log id of the latest pcap from this schedule" }, "enabled": { "type": "boolean", "description": "Whether the packet capture schedule is enabled" }, "priority": { "type": "integer", "description": "Priority of the packet capture" }, "schedule": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the schedule" }, "startTs": { "type": "string", "description": "Start date of the recurring schedule entry" }, "endTs": { "type": "string", "description": "End date of the recurring schedule entry" }, "frequency": { "type": "string", "enum": [ "day", "hour", "minute", "month", "week" ], "description": "Frequency of the recurring schedule entry ex. hour|week|month|day|minute" }, "weekdays": { "type": "array", "items": { "type": "string" }, "description": "The days of the week for the recurring schedule in string form. Multiple days can be combined." }, "recurrence": { "type": "integer", "description": "The number of frequency units between each occurrence. For example, 1 means 'every [frequency]', 2 means 'every other [frequency]', etc. Used in conjunction with the 'frequency' field." }, "nextCaptureTs": { "type": "string", "description": "The datetime at which next capture will occur" } }, "description": "Schedule of the packet capture" }, "warnings": { "type": "array", "items": { "type": "string" }, "description": "Any warnings pertaining to the schedule and it's nodes" } } }, "example": { "scheduleId": "1234", "devices": [ { "device": { "serial": "Q234-ABCD-5678", "switchports": "1-3, 9", "interface": "GigabitEthernet1/0/1" } } ], "name": "pcap_file_name", "admin": { "id": "1234", "name": "Miles Meraki" }, "notes": "capture reason", "duration": 60, "filterExpression": "(icmp)", "createdAt": "2018-02-11T00:00:00.090210Z", "updatedAt": "2018-02-11T00:00:00.090210Z", "captureCount": 2, "lastCaptureId": "1234", "enabled": true, "priority": 1, "schedule": { "name": "schedule_name", "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "frequency": "hour", "weekdays": [ "Monday", "Tuesday" ], "recurrence": 1, "nextCaptureTs": "2018-02-11T00:00:00.090210Z" }, "warnings": [ "This schedule conflicts with the schedule Test Schedule at the time 2025-01-28T18:25:06Z" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Create a schedule for packet capture", "tags": [ "organizations", "configure", "devices", "packetCapture", "schedules" ] } }, "/organizations/{organizationId}/devices/packetCapture/schedules/reorder": { "post": { "description": "Bulk update priorities of pcap schedules", "operationId": "reorderOrganizationDevicesPacketCaptureSchedules", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "order": { "type": "array", "items": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "ID of the schedule to update to the specified priority" }, "priority": { "type": "integer", "description": "The priority of the schedule" } } }, "description": "Array of schedule IDs and their priorities to reorder." } }, "example": { "order": [ { "scheduleId": "1234", "priority": 1 } ] }, "required": [ "order" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "updatedPriorities": { "type": "array", "items": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "Id of the scheduled packet capture" }, "priority": { "type": "integer", "description": "Priority value" } } }, "description": "List of updated priorities" } } }, "example": { "updatedPriorities": [ { "scheduleId": "1234", "priority": 1 } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Bulk update priorities of pcap schedules", "tags": [ "organizations", "configure", "devices", "packetCapture", "schedules" ] } }, "/organizations/{organizationId}/devices/packetCapture/schedules/{scheduleId}": { "put": { "description": "Update a schedule for packet capture", "operationId": "updateOrganizationDevicesPacketCaptureSchedule", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "scheduleId", "in": "path", "description": "Schedule ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the devices to schedule packet capture" }, "switchports": { "type": "string", "description": "switchports to capture" }, "interface": { "type": "string", "description": "interface to capture" } } }, "description": "device details" }, "name": { "type": "string", "description": "Name of the packet capture file" }, "notes": { "type": "string", "description": "Reason for capture" }, "duration": { "type": "integer", "description": "Duration of the capture in seconds" }, "filterExpression": { "type": "string", "description": "Filter expression for the capture" }, "enabled": { "type": "boolean", "description": "Enable or disable the schedule" }, "schedule": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the schedule" }, "startTs": { "type": "string", "description": "Start date and time of the recurring schedule entry" }, "endTs": { "type": "string", "description": "End date and time of the recurring schedule entry" }, "frequency": { "type": "string", "description": "Frequency of the recurring schedule entry (hour, week, month, day, minute)" }, "weekdays": { "type": "array", "items": { "type": "string" }, "description": "Weekdays for the schedule: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday" }, "recurrence": { "type": "integer", "description": "Cardinality of the schedule frequency, ex. 1 = every day, 2 = every other day (when frequency = day)" } }, "description": "Schedule details" } }, "example": { "devices": [ { "serial": "Q234-ABCD-5678", "switchports": "1, 2", "interface": "TenGigabitEthernet0/0/0" } ], "name": "daily_capture_for_debugging", "notes": "Debugging persistent issue on device", "duration": 60, "filterExpression": "(icmp)", "enabled": true, "schedule": { "name": "Daily at 1pm", "startTs": "2021-01-01T13:00:00Z", "endTs": "2021-01-01T14:00:00Z", "frequency": "daily", "weekdays": [ "Monday", "Wednesday", "Friday" ], "recurrence": 1 } }, "required": [ "devices" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "Id of scheduled packet capture" }, "devices": { "type": "array", "items": { "type": "object", "properties": { "device": { "type": "object", "properties": { "serial": { "type": "string", "description": "The serial of the device" }, "switchports": { "type": "string", "description": "The switchports on which to take the packet capture" }, "interface": { "type": "string", "description": "The interfaces on which to take the packet capture (applicable for Catalyst devices)" } }, "description": "Device associated to the schedule" } } }, "description": "Devices associated to the schedule" }, "name": { "type": "string", "description": "Name of scheduled packet capture" }, "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of admin" }, "name": { "type": "string", "description": "The name of the admin" } }, "description": "Admin who created the scheduled packet capture" }, "notes": { "type": "string", "description": "Reason of scheduled packet capture" }, "duration": { "type": "integer", "description": "Duration of scheduled packet capture" }, "filterExpression": { "type": "string", "description": "Filter expression for the packet capture" }, "createdAt": { "type": "string", "description": "Time of creation of scheduled packet capture" }, "updatedAt": { "type": "string", "description": "Time of updation of scheduled packet capture" }, "captureCount": { "type": "integer", "description": "The number of pcaps captured/performed" }, "lastCaptureId": { "type": "string", "description": "Pcap log id of the latest pcap from this schedule" }, "enabled": { "type": "boolean", "description": "Whether the packet capture schedule is enabled" }, "priority": { "type": "integer", "description": "Priority of the packet capture" }, "schedule": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the schedule" }, "startTs": { "type": "string", "description": "Start date of the recurring schedule entry" }, "endTs": { "type": "string", "description": "End date of the recurring schedule entry" }, "frequency": { "type": "string", "enum": [ "day", "hour", "minute", "month", "week" ], "description": "Frequency of the recurring schedule entry ex. hour|week|month|day|minute" }, "weekdays": { "type": "array", "items": { "type": "string" }, "description": "The days of the week for the recurring schedule in string form. Multiple days can be combined." }, "recurrence": { "type": "integer", "description": "The number of frequency units between each occurrence. For example, 1 means 'every [frequency]', 2 means 'every other [frequency]', etc. Used in conjunction with the 'frequency' field." }, "nextCaptureTs": { "type": "string", "description": "The datetime at which next capture will occur" } }, "description": "Schedule of the packet capture" }, "warnings": { "type": "array", "items": { "type": "string" }, "description": "Any warnings pertaining to the schedule and it's nodes" } } }, "example": { "scheduleId": "1234", "devices": [ { "device": { "serial": "Q234-ABCD-5678", "switchports": "1-3, 9", "interface": "GigabitEthernet1/0/1" } } ], "name": "pcap_file_name", "admin": { "id": "1234", "name": "Miles Meraki" }, "notes": "capture reason", "duration": 60, "filterExpression": "(icmp)", "createdAt": "2018-02-11T00:00:00.090210Z", "updatedAt": "2018-02-11T00:00:00.090210Z", "captureCount": 2, "lastCaptureId": "1234", "enabled": true, "priority": 1, "schedule": { "name": "schedule_name", "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "frequency": "hour", "weekdays": [ "Monday", "Tuesday" ], "recurrence": 1, "nextCaptureTs": "2018-02-11T00:00:00.090210Z" }, "warnings": [ "This schedule conflicts with the schedule Test Schedule at the time 2025-01-28T18:25:06Z" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Update a schedule for packet capture", "tags": [ "organizations", "configure", "devices", "packetCapture", "schedules" ] }, "delete": { "description": "Delete schedule from cloud", "operationId": "deleteOrganizationDevicesPacketCaptureSchedule", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "scheduleId", "in": "path", "description": "Schedule ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "scheduleId": { "type": "string", "description": "Delete the capture schedules of the specified capture schedule id" } }, "example": { "scheduleId": "1234" }, "required": [ "scheduleId" ] } } }, "required": true }, "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Delete schedule from cloud", "tags": [ "organizations", "configure", "devices", "packetCapture", "schedules" ] } }, "/organizations/{organizationId}/devices/powerModules/statuses/byDevice": { "get": { "description": "List the most recent status information for power modules in rackmount MX and MS devices that support them. The data returned by this endpoint is updated every 5 minutes.", "operationId": "getOrganizationDevicesPowerModulesStatusesByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter device availabilities by network ID. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device availabilities by device product types. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device availabilities by device serial numbers. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tags", "in": "query", "description": "An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below). This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tagsFilterType", "in": "query", "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.", "schema": { "type": "string", "enum": [ "withAllTags", "withAnyTags" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "The device MAC address." }, "name": { "type": "string", "description": "The device name." }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network that the device is associated with." } }, "description": "Network info." }, "productType": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ], "description": "Device product type." }, "serial": { "type": "string", "description": "The device serial number." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the device." }, "slots": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "integer", "enum": [ 0, 1, 2 ], "description": "Which slot the AC power supply occupies. Possible values are: 0, 1, 2." }, "serial": { "type": "string", "description": "The power supply unit serial number." }, "model": { "type": "string", "description": "The power supply unit model." }, "status": { "type": "string", "enum": [ "connected", "not connected", "powering" ], "description": "Status of the power supply unit. Possible values are: connected, not connected, powering." } } }, "description": "Information for the device's AC power supplies." } } } }, "example": [ { "mac": "00:11:22:33:44:55", "name": "My AP", "network": { "id": "N_24329156" }, "productType": "switch", "serial": "Q234-ABCD-5678", "tags": [ "tag1", "tag2" ], "slots": [ { "number": 1, "serial": "Q234-ABCD-5678", "model": "PWR-C5-125WAC", "status": "not connected" } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the most recent status information for power modules in rackmount MX and MS devices that support them", "tags": [ "organizations", "monitor", "devices", "powerModules", "statuses", "byDevice" ] } }, "/organizations/{organizationId}/devices/provisioning/statuses": { "get": { "description": "List the provisioning statuses information for devices in an organization.", "operationId": "getOrganizationDevicesProvisioningStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter device by network ID. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device by device product types. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device by device serial numbers. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "status", "in": "query", "description": "An optional parameter to filter devices by the provisioning status. Accepted statuses: unprovisioned, incomplete, complete.", "schema": { "type": "string", "enum": [ "complete", "incomplete", "unprovisioned" ] } }, { "name": "tags", "in": "query", "description": "An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below). This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tagsFilterType", "in": "query", "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.", "schema": { "type": "string", "enum": [ "withAllTags", "withAnyTags" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "The device MAC address." }, "name": { "type": "string", "description": "The device name." }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network containing the device." } }, "description": "Network info." }, "productType": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ], "description": "Device product type." }, "serial": { "type": "string", "description": "The device serial number." }, "status": { "type": "string", "enum": [ "complete", "incomplete", "unprovisioned" ], "description": "The device provisioning status. Possible statuses: unprovisioned, incomplete, complete." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the device." } } } }, "example": [ { "mac": "00:11:22:33:44:55", "name": "My AP", "network": { "id": "N_24329156" }, "productType": "switch", "serial": "Q234-ABCD-5678", "status": "complete", "tags": [ "tag1", "tag2" ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the provisioning statuses information for devices in an organization.", "tags": [ "organizations", "monitor", "devices", "provisioning", "statuses" ] } }, "/organizations/{organizationId}/devices/statuses": { "get": { "deprecated": true, "description": "List the status of every Meraki device in the organization", "operationId": "getOrganizationDevicesStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter devices by network ids.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter devices by serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "statuses", "in": "query", "description": "Optional parameter to filter devices by statuses. Valid statuses are [\"online\", \"alerting\", \"offline\", \"dormant\"].", "schema": { "type": "array", "items": { "type": "string", "enum": [ "alerting", "dormant", "offline", "online" ] } } }, { "name": "productTypes", "in": "query", "description": "An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } }, { "name": "models", "in": "query", "description": "Optional parameter to filter devices by models.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tags", "in": "query", "description": "An optional parameter to filter devices 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 devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.", "schema": { "type": "string", "enum": [ "withAllTags", "withAnyTags" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Device Name" }, "serial": { "type": "string", "description": "Device Serial Number" }, "mac": { "type": "string", "description": "MAC Address" }, "publicIp": { "type": "string", "description": "Public IP Address" }, "networkId": { "type": "string", "description": "Network ID" }, "status": { "type": "string", "description": "Device Status" }, "lastReportedAt": { "type": "string", "description": "Device Last Reported Location" }, "lanIp": { "type": "string", "description": "LAN IP Address" }, "gateway": { "type": "string", "description": "IP Gateway" }, "ipType": { "type": "string", "description": "IP Type" }, "primaryDns": { "type": "string", "description": "Primary DNS" }, "secondaryDns": { "type": "string", "description": "Secondary DNS" }, "productType": { "type": "string", "description": "Product Type" }, "components": { "type": "object", "properties": { "powerSupplies": { "type": "array", "items": { "type": "object", "properties": { "slot": { "type": "integer", "description": "Slot the power supply is in" }, "serial": { "type": "string", "description": "Serial of the power supply" }, "model": { "type": "string", "description": "Model of the power supply" }, "status": { "type": "string", "enum": [ "available", "connected", "disconnected", "powered", "powering", "standby" ], "description": "Status of the power supply" }, "poe": { "type": "object", "properties": { "unit": { "type": "string", "description": "Unit of the PoE maximum" }, "maximum": { "type": "integer", "description": "Maximum PoE this power supply can provide when connected to the current switch model" } }, "description": "PoE info of the power supply" } } }, "description": "Power Supplies" } }, "description": "Components" }, "model": { "type": "string", "description": "Model" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Tags" } } } }, "example": [ { "name": "My AP", "serial": "Q234-ABCD-5678", "mac": "00:11:22:33:44:55", "publicIp": "123.123.123.1", "networkId": "N_24329156", "status": "online", "lastReportedAt": "2018-02-11T00:00:00.090210Z", "lanIp": "1.2.3.4", "gateway": "1.2.3.5", "ipType": "dhcp", "primaryDns": "8.8.8.8", "secondaryDns": "8.8.4.4", "productType": "wireless", "components": { "powerSupplies": [ { "slot": 1, "serial": "QABC-1234-5678", "model": "PWR-MS320-1025WAC", "status": "powering", "poe": { "unit": "watts", "maximum": 740 } } ] }, "model": "MR34", "tags": [ "tag1", "tag2" ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the status of every Meraki device in the organization", "tags": [ "organizations", "monitor", "devices", "statuses" ], "x-deprecation-notice": "Deprecated: This operation has been marked as deprecated. For more information, visit the deprecated operations page" } }, "/organizations/{organizationId}/devices/statuses/overview": { "get": { "description": "Return an overview of current device statuses", "operationId": "getOrganizationDevicesStatusesOverview", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "productTypes", "in": "query", "description": "An optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } }, { "name": "networkIds", "in": "query", "description": "An optional parameter to filter device statuses by network.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "byStatus": { "type": "object", "properties": { "online": { "type": "integer", "description": "online count" }, "alerting": { "type": "integer", "description": "alerting count" }, "offline": { "type": "integer", "description": "offline count" }, "dormant": { "type": "integer", "description": "dormant count" } }, "description": "byStatus" } }, "description": "counts" } } }, "example": { "counts": { "byStatus": { "online": 5, "alerting": 4, "offline": 2, "dormant": 1 } } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return an overview of current device statuses", "tags": [ "organizations", "monitor", "devices", "statuses", "overview" ] } }, "/organizations/{organizationId}/devices/syslog/servers/byNetwork": { "get": { "description": "Returns syslog servers configured for the networks within an organization.", "operationId": "getOrganizationDevicesSyslogServersByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "IDs of the networks for which to fetch syslog servers; suggested maximum array size is 100", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network" } }, "required": [ "id" ], "description": "Contains details about the Network associated with this record" }, "servers": { "type": "array", "items": { "type": "object", "properties": { "host": { "type": "string", "description": "The IP address or FQDN of the syslog server" }, "port": { "type": "integer", "description": "The port of the syslog server" }, "roles": { "type": "array", "items": { "type": "string" }, "description": "A list of roles for the syslog server, specific to Product Type. Options can be found by querying GET api/v1/organizations/:id/devices/syslog/servers/roles/byNetwork and using the value property. Maximum array size is limited by the number of unique roles, which is about 10" }, "transportProtocol": { "type": "string", "enum": [ "TCP", "UDP" ], "description": "The transport protocol for the syslog server" }, "encryption": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "When true, traffic will be encrypted to the syslog server" }, "certificate": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the certificate for encryption with the syslog server" } }, "description": "The certificate for encryption with the syslog server" } }, "description": "Encryption settings for the syslog server" } } }, "description": "The list of syslog server configurations that are assigned to this network; suggested maximum array size is 10" } }, "required": [ "network", "servers" ] }, "description": "Outer container to hold the different syslog server configurations per network" }, "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 related to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "network": { "id": "N_123456789012345678" }, "servers": [ { "host": "1.2.3.4", "port": 443, "roles": [ "wirelessEventLog", "applianceUrlLog" ], "transportProtocol": "UDP", "encryption": { "enabled": true, "certificate": { "id": "1637" } } } ] } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns syslog servers configured for the networks within an organization.", "tags": [ "organizations", "configure", "devices", "syslog", "servers", "byNetwork" ] } }, "/organizations/{organizationId}/devices/syslog/servers/roles/byNetwork": { "get": { "description": "Returns roles that can be assigned to a syslog server for a given network.", "operationId": "getOrganizationDevicesSyslogServersRolesByNetwork", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "IDs of the networks for which to fetch valid syslog server roles; suggested maximum array size is 100", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the network" } }, "required": [ "id" ], "description": "Contains details about the Network associated with this record" }, "available": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "The user friendly name of the role" }, "value": { "type": "string", "description": "The enum value of the role that can be assigned to a syslog server" } }, "required": [ "name", "value" ] }, "description": "The list of roles that can be assigned to a syslog server for this network" } }, "required": [ "network", "available" ] }, "description": "Outer container to hold the different syslog server roles per network" }, "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 related to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "network": { "id": "N_123456789012345678" }, "available": [ { "name": "Wireless Event Log", "value": "wirelessEventLog" } ] } ], "meta": { "counts": { "items": { "total": 10, "remaining": 2 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns roles that can be assigned to a syslog server for a given network.", "tags": [ "organizations", "configure", "devices", "syslog", "servers", "roles", "byNetwork" ] } }, "/organizations/{organizationId}/devices/system/memory/usage/history/byInterval": { "get": { "description": "Return the memory utilization history in kB for devices in the organization.", "operationId": "getOrganizationDevicesSystemMemoryUsageHistoryByInterval", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 20. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 31 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 31 days. The default is 2 hours. If interval is provided, the timespan will be autocalculated.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "interval", "in": "query", "description": "The time interval in seconds for returned data. The valid intervals are: 300, 1200, 3600, 14400. The default is 300. Interval is calculated if time params are provided.", "schema": { "type": "integer" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the result set by the included set of network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device availabilities history by device serial numbers", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device statuses by product type. Valid types are wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor, wirelessController, campusGateway, and secureConnect.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Unique serial number for the device" }, "model": { "type": "string", "description": "Model of the device" }, "name": { "type": "string", "description": "Name of the device" }, "mac": { "type": "string", "description": "MAC address of the device" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the device" }, "provisioned": { "type": "integer", "description": "The total RAM size provisioned on the device, in kB" }, "used": { "type": "object", "properties": { "median": { "type": "integer", "description": "Median memory in kB used on the device over the entire timespan rounded up to nearest integer" } }, "description": "Information regarding memory usage on the device over the entire timespan" }, "free": { "type": "object", "properties": { "median": { "type": "integer", "description": "Median memory in kB free on the device over the entire timespan rounded up to nearest integer" } }, "description": "Information regarding memory availability on the device over the entire timespan" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "The network ID" }, "name": { "type": "string", "description": "The name of the network" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the network" } }, "description": "Information regarding the network the device belongs to" }, "intervals": { "type": "array", "items": { "type": "object", "properties": { "startTs": { "type": "string", "format": "date-time", "description": "Timestamp for the beginning of the historical snapshot, exclusive." }, "endTs": { "type": "string", "format": "date-time", "description": "Timestamp for the end of the historical snapshot, inclusive." }, "memory": { "type": "object", "properties": { "used": { "type": "object", "properties": { "minimum": { "type": "integer", "description": "Minimum memory in kB used on the device over the interval" }, "maximum": { "type": "integer", "description": "Maximum memory in kB used on the device over the interval" }, "median": { "type": "integer", "description": "Median memory in kB used on the device over the interval rounded up to nearest integer" }, "percentages": { "type": "object", "properties": { "maximum": { "type": "integer", "description": "Maximum memory utilization percentage on the device over the interval" } }, "description": "Memory utilization percentages on the device over the interval" } }, "description": "Information regarding memory usage on the device over the interval" }, "free": { "type": "object", "properties": { "minimum": { "type": "integer", "description": "Minimum memory in kB free on the device over the interval" }, "maximum": { "type": "integer", "description": "Maximum memory in kB free on the device over the interval" }, "median": { "type": "integer", "description": "Median memory in kB free on the device over the interval rounded up to nearest integer" } }, "description": "Information regarding memory availability on the device over the interval" } }, "description": "Information regarding memory usage and availability on the device" } } }, "description": "Time interval snapshots of system memory utilization on the device with the most recent snapshot first" } } }, "description": "The top-level property containing all memory utilization data." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of serials." }, "remaining": { "type": "integer", "description": "The number of serials remaining based on current pagination location within the dataset." } }, "description": "The count metadata." } }, "description": "Count metadata related to this result set." } }, "description": "Other metadata related to this result set." } } }, "example": { "items": [ { "serial": "Q234-ABCD-0001", "model": "MS", "name": "My switch", "mac": "00:11:22:33:44:55", "tags": [ "tag1", "tag2" ], "provisioned": 300, "used": { "median": 100 }, "free": { "median": 150 }, "network": { "id": "N_24329156", "name": "Main Office", "tags": [ "tag1", "tag2" ] }, "intervals": [ { "startTs": "2018-02-11T00:00:00.090210Z", "endTs": "2018-02-11T00:00:00.090210Z", "memory": { "used": { "minimum": 50, "maximum": 150, "median": 100, "percentages": { "maximum": 60 } }, "free": { "minimum": 100, "maximum": 200, "median": 150 } } } ] } ], "meta": { "counts": { "items": { "total": 4, "remaining": 2 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the memory utilization history in kB for devices in the organization.", "tags": [ "organizations", "monitor", "devices", "system", "memory", "usage", "history", "byInterval" ] } }, "/organizations/{organizationId}/devices/uplinks/addresses/byDevice": { "get": { "description": "List the current uplink addresses for devices in an organization.", "operationId": "getOrganizationDevicesUplinksAddressesByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter device uplinks by network ID. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter device uplinks by device product types. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter device availabilities by device serial numbers. This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tags", "in": "query", "description": "An optional parameter to filter devices by tags. The filtering is case-sensitive. If tags are included, 'tagsFilterType' should also be included (see below). This filter uses multiple exact matches.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tagsFilterType", "in": "query", "description": "An optional parameter of value 'withAnyTags' or 'withAllTags' to indicate whether to return devices which contain ANY or ALL of the included tags. If no type is included, 'withAnyTags' will be selected.", "schema": { "type": "string", "enum": [ "withAllTags", "withAnyTags" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "The device MAC address." }, "name": { "type": "string", "description": "The device name." }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network containing the device." } }, "description": "Network info." }, "productType": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ], "description": "Device product type." }, "serial": { "type": "string", "description": "The device serial number." }, "tags": { "type": "array", "items": { "type": "string" }, "description": "List of custom tags for the device." }, "uplinks": { "type": "array", "items": { "type": "object", "properties": { "interface": { "type": "string", "enum": [ "cellular", "man1", "man2", "wan1", "wan2" ], "description": "Interface for the device uplink. Available options are: cellular, man1, man2, wan1, wan2" }, "addresses": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "enum": [ "ipv4", "ipv6" ], "description": "Type of address for the device uplink. Available options are: ipv4, ipv6." }, "assignmentMode": { "type": "string", "enum": [ "dynamic", "static" ], "description": "Indicates how the device uplink address is assigned. Available options are: static, dynamic." }, "address": { "type": "string", "description": "Device uplink address." }, "gateway": { "type": "string", "description": "Device uplink gateway address." }, "nameservers": { "type": "object", "properties": { "addresses": { "type": "array", "items": { "type": "string" }, "description": "Device DNS nameserver address." } }, "description": "Device DNS nameserver information." }, "public": { "type": "object", "properties": { "address": { "type": "string", "description": "The device uplink public IP address." } }, "description": "Public interface information." }, "vlan": { "type": "object", "properties": { "id": { "type": "string", "description": "VLAN ID of the uplink interface" } }, "description": "VLAN information of the uplink interface" } } }, "description": "Available addresses for the interface. Each interface may have one ipv4 and one ipv6 address." } } }, "description": "List of device uplink addresses information." } } } }, "example": [ { "mac": "00:11:22:33:44:55", "name": "My AP", "network": { "id": "N_24329156" }, "productType": "switch", "serial": "Q234-ABCD-5678", "tags": [ "tag1", "tag2" ], "uplinks": [ { "interface": "wan1", "addresses": [ { "protocol": "ipv6", "assignmentMode": "static", "address": "2001:db8:c15:c0:d0c::101:ca75", "gateway": "fe80:db8:c15:c0:d0c::10ca:1d02", "nameservers": { "addresses": [ "8.8.8.8" ] }, "public": { "address": "2001:db8:c15:c0:d0c:15e:15e:bab1" }, "vlan": { "id": "1" } } ] } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the current uplink addresses for devices in an organization.", "tags": [ "organizations", "monitor", "devices", "uplinks", "addresses", "byDevice" ] } }, "/organizations/{organizationId}/devices/uplinksLossAndLatency": { "get": { "description": "Return the uplink loss and latency for every MX in the organization from at latest 2 minutes ago", "operationId": "getOrganizationDevicesUplinksLossAndLatency", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 60 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 5 minutes after t0. The latest possible time that t1 can be is 2 minutes into the past.", "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 5 minutes. The default is 5 minutes.", "schema": { "type": "number", "format": "float", "maximum": 300 } }, { "name": "uplink", "in": "query", "description": "Optional filter for a specific WAN uplink. Valid uplinks are wan1, wan2, wan3, cellular. Default will return all uplinks.", "schema": { "type": "string", "enum": [ "cellular", "wan1", "wan2", "wan3" ] } }, { "name": "ip", "in": "query", "description": "Optional filter for a specific destination IP. Default will return all destination IPs.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "serial": { "type": "string", "description": "Serial of MX device" }, "uplink": { "type": "string", "description": "Uplink interface (wan1, wan2, or cellular)" }, "ip": { "type": "string", "description": "IP address of uplink" }, "timeSeries": { "type": "array", "items": { "type": "object", "properties": { "ts": { "type": "string", "format": "date-time", "description": "Timestamp for this data point" }, "lossPercent": { "type": "number", "format": "float", "description": "Loss percentage" }, "latencyMs": { "type": "number", "format": "float", "description": "Latency in milliseconds" } } }, "description": "Loss and latency timeseries data" } } } }, "example": [ { "networkId": "N_24329156", "serial": "Q234-ABCD-5678", "uplink": "wan1", "ip": "1.2.3.4", "timeSeries": [ { "ts": "2019-01-31T18:46:13Z", "lossPercent": 5.3, "latencyMs": 194.9 } ] } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the uplink loss and latency for every MX in the organization from at latest 2 minutes ago", "tags": [ "organizations", "monitor", "devices", "uplinks", "uplinksLossAndLatency" ] } }, "/organizations/{organizationId}/earlyAccess/features": { "get": { "description": "List the available early access features for organization", "operationId": "getOrganizationEarlyAccessFeatures", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "shortName": { "type": "string", "description": "Short name of the early access feature" }, "name": { "type": "string", "description": "Name of the early access feature" }, "descriptions": { "type": "object", "properties": { "short": { "type": "string", "description": "Short description" }, "long": { "type": "string", "description": "Long description" } }, "description": "Descriptions of the early access feature" }, "topic": { "type": "string", "description": "Topic of the early access feature" }, "isOrgScopedOnly": { "type": "boolean", "description": "If this early access feature can only be opted in for the entire organization" }, "documentationLink": { "type": "string", "description": "Link to the documentation of this early access feature" }, "supportLink": { "type": "string", "description": "Link to get support for this early access feature" }, "privacyLink": { "type": "string", "description": "Link to the privacy policy for this early access feature" } } } }, "example": [ { "shortName": "has_new_feature", "name": "New Feature Beta", "descriptions": { "short": "New Feature Beta", "long": "New Feature Beta long description. consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." }, "topic": "Dashboard", "isOrgScopedOnly": true, "documentationLink": "https://documentation.meraki.com/", "supportLink": "https://community.meraki.com/", "privacyLink": "https://meraki.com/privacy" } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "List the available early access features for organization", "tags": [ "organizations", "configure", "earlyAccess", "features" ] } }, "/organizations/{organizationId}/earlyAccess/features/optIns": { "get": { "description": "List the early access feature opt-ins for an organization", "operationId": "getOrganizationEarlyAccessFeaturesOptIns", "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": { "id": { "type": "string", "description": "ID of Early Access Feature" }, "shortName": { "type": "string", "description": "Name of Early Access Feature" }, "limitScopeToNetworks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Network" }, "name": { "type": "string", "description": "Name of Network" } } }, "description": "Networks assigned to the Early Access Feature" }, "optOutEligibility": { "type": "object", "properties": { "eligible": { "type": "boolean", "description": "Condition flag to opt out from the feature" }, "reason": { "type": "string", "description": "User friendly message regarding opt-out eligibility" }, "help": { "type": "object", "properties": { "label": { "type": "string", "description": "Help link label" }, "url": { "type": "string", "description": "Help link url" } }, "description": "Additional help information" } }, "description": "Descriptions of the early access feature" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time when Early Access Feature was created" } } }, "example": { "id": "1", "shortName": "has_new_feature", "limitScopeToNetworks": [ { "id": "L_1234", "name": "My Network" } ], "optOutEligibility": { "eligible": false, "reason": "Please remove devices of type XYZ from your organization", "help": { "label": "Read more", "url": "http://meraki.com/my_help" } }, "createdAt": "2022-05-01T04:07:15Z" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "List the early access feature opt-ins for an organization", "tags": [ "organizations", "configure", "earlyAccess", "features", "optIns" ] }, "post": { "description": "Create a new early access feature opt-in for an organization", "operationId": "createOrganizationEarlyAccessFeaturesOptIn", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "shortName": { "type": "string", "description": "Short name of the early access feature" }, "limitScopeToNetworks": { "type": "array", "items": { "type": "string" }, "description": "A list of network IDs to apply the opt-in to" } }, "example": { "shortName": "has_beta_api", "limitScopeToNetworks": [ "N_12345" ] }, "required": [ "shortName" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Early Access Feature" }, "shortName": { "type": "string", "description": "Name of Early Access Feature" }, "limitScopeToNetworks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Network" }, "name": { "type": "string", "description": "Name of Network" } } }, "description": "Networks assigned to the Early Access Feature" }, "optOutEligibility": { "type": "object", "properties": { "eligible": { "type": "boolean", "description": "Condition flag to opt out from the feature" }, "reason": { "type": "string", "description": "User friendly message regarding opt-out eligibility" }, "help": { "type": "object", "properties": { "label": { "type": "string", "description": "Help link label" }, "url": { "type": "string", "description": "Help link url" } }, "description": "Additional help information" } }, "description": "Descriptions of the early access feature" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time when Early Access Feature was created" } } }, "example": { "id": "1", "shortName": "has_new_feature", "limitScopeToNetworks": [ { "id": "L_1234", "name": "My Network" } ], "optOutEligibility": { "eligible": false, "reason": "Please remove devices of type XYZ from your organization", "help": { "label": "Read more", "url": "http://meraki.com/my_help" } }, "createdAt": "2022-05-01T04:07:15Z" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Create a new early access feature opt-in for an organization", "tags": [ "organizations", "configure", "earlyAccess", "features", "optIns" ] } }, "/organizations/{organizationId}/earlyAccess/features/optIns/{optInId}": { "get": { "description": "Show an early access feature opt-in for an organization", "operationId": "getOrganizationEarlyAccessFeaturesOptIn", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "optInId", "in": "path", "description": "Opt in ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Early Access Feature" }, "shortName": { "type": "string", "description": "Name of Early Access Feature" }, "limitScopeToNetworks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Network" }, "name": { "type": "string", "description": "Name of Network" } } }, "description": "Networks assigned to the Early Access Feature" }, "optOutEligibility": { "type": "object", "properties": { "eligible": { "type": "boolean", "description": "Condition flag to opt out from the feature" }, "reason": { "type": "string", "description": "User friendly message regarding opt-out eligibility" }, "help": { "type": "object", "properties": { "label": { "type": "string", "description": "Help link label" }, "url": { "type": "string", "description": "Help link url" } }, "description": "Additional help information" } }, "description": "Descriptions of the early access feature" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time when Early Access Feature was created" } } }, "example": { "id": "1", "shortName": "has_new_feature", "limitScopeToNetworks": [ { "id": "L_1234", "name": "My Network" } ], "optOutEligibility": { "eligible": false, "reason": "Please remove devices of type XYZ from your organization", "help": { "label": "Read more", "url": "http://meraki.com/my_help" } }, "createdAt": "2022-05-01T04:07:15Z" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "Show an early access feature opt-in for an organization", "tags": [ "organizations", "configure", "earlyAccess", "features", "optIns" ] }, "put": { "description": "Update an early access feature opt-in for an organization", "operationId": "updateOrganizationEarlyAccessFeaturesOptIn", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "optInId", "in": "path", "description": "Opt in ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "limitScopeToNetworks": { "type": "array", "items": { "type": "string" }, "description": "A list of network IDs to apply the opt-in to" } }, "example": { "limitScopeToNetworks": [ "N_12345" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Early Access Feature" }, "shortName": { "type": "string", "description": "Name of Early Access Feature" }, "limitScopeToNetworks": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of Network" }, "name": { "type": "string", "description": "Name of Network" } } }, "description": "Networks assigned to the Early Access Feature" }, "optOutEligibility": { "type": "object", "properties": { "eligible": { "type": "boolean", "description": "Condition flag to opt out from the feature" }, "reason": { "type": "string", "description": "User friendly message regarding opt-out eligibility" }, "help": { "type": "object", "properties": { "label": { "type": "string", "description": "Help link label" }, "url": { "type": "string", "description": "Help link url" } }, "description": "Additional help information" } }, "description": "Descriptions of the early access feature" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time when Early Access Feature was created" } } }, "example": { "id": "1", "shortName": "has_new_feature", "limitScopeToNetworks": [ { "id": "L_1234", "name": "My Network" } ], "optOutEligibility": { "eligible": false, "reason": "Please remove devices of type XYZ from your organization", "help": { "label": "Read more", "url": "http://meraki.com/my_help" } }, "createdAt": "2022-05-01T04:07:15Z" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Update an early access feature opt-in for an organization", "tags": [ "organizations", "configure", "earlyAccess", "features", "optIns" ] }, "delete": { "description": "Delete an early access feature opt-in", "operationId": "deleteOrganizationEarlyAccessFeaturesOptIn", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "optInId", "in": "path", "description": "Opt in ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Delete an early access feature opt-in", "tags": [ "organizations", "configure", "earlyAccess", "features", "optIns" ] } }, "/organizations/{organizationId}/firmware/upgrades": { "get": { "description": "Get firmware upgrade information for an organization", "operationId": "getOrganizationFirmwareUpgrades", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "Optional parameter to filter the upgrade by status.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "productTypes", "in": "query", "description": "Optional parameter to filter the upgrade by product type.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "upgradeId": { "type": "string", "description": "The upgrade" }, "upgradeBatchId": { "type": "string", "description": "The upgrade batch" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of network" }, "name": { "type": "string", "description": "The network" } }, "description": "Network of the upgrade" }, "status": { "type": "string", "description": "Status of upgrade event: [Cancelled, Completed]" }, "time": { "type": "string", "format": "date-time", "description": "Scheduled start time" }, "completedAt": { "type": "string", "description": "Timestamp when upgrade completed. Null if status pending." }, "productTypes": { "type": "string", "description": "product upgraded [wireless, appliance, switch, systemsManager, camera, cellularGateway, sensor]" }, "toVersion": { "type": "object", "properties": { "id": { "type": "string", "description": "Firmware version ID" }, "shortName": { "type": "string", "description": "Firmware version short name" }, "firmware": { "type": "string", "description": "Firmware name" }, "releaseType": { "type": "string", "description": "Release type of the firmware version" }, "releaseDate": { "type": "string", "format": "date-time", "description": "Release date of the firmware version" } }, "description": "ID of the upgrade's target version" }, "fromVersion": { "type": "object", "properties": { "id": { "type": "string", "description": "Firmware version ID" }, "shortName": { "type": "string", "description": "Firmware version short name" }, "firmware": { "type": "string", "description": "Firmware name" }, "releaseType": { "type": "string", "description": "Release type of the firmware version" }, "releaseDate": { "type": "string", "format": "date-time", "description": "Release date of the firmware version" } }, "description": "ID of the upgrade's starting version" } } } }, "example": [ { "upgradeId": "1234", "upgradeBatchId": "5678", "network": { "id": "L_1738", "name": "Minions" }, "status": "Completed", "time": "2022-11-01T00:00:00Z", "completedAt": "2020-11-05 15:50:05 UTC", "productTypes": "wireless", "toVersion": { "id": "2888", "shortName": "MR 11.2.1", "firmware": "wireless-11-2-1", "releaseType": "stable", "releaseDate": "2022-03-17T17:22:52Z" }, "fromVersion": { "id": "2887", "shortName": "MR 11.2.1", "firmware": "wireless-11-2-1", "releaseType": "stable", "releaseDate": "2022-03-17T17:22:52Z" } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Get firmware upgrade information for an organization", "tags": [ "organizations", "configure", "firmware", "upgrades" ] } }, "/organizations/{organizationId}/firmware/upgrades/byDevice": { "get": { "description": "Get firmware upgrade status for the filtered devices. This endpoint currently only supports Meraki switches and access points.", "operationId": "getOrganizationFirmwareUpgradesByDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter by network", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Optional parameter to filter by serial number. All returned devices will have a serial number that is an exact match.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "macs", "in": "query", "description": "Optional parameter to filter by one or more MAC addresses belonging to devices. All devices returned belong to MAC addresses that are an exact match.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "firmwareUpgradeBatchIds", "in": "query", "description": "Optional parameter to filter by firmware upgrade batch ids.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "upgradeStatuses", "in": "query", "description": "Optional parameter to filter by firmware upgrade statuses.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "canceled", "completed", "scheduled", "started" ] } } }, { "name": "currentUpgradesOnly", "in": "query", "description": "Optional parameter to filter to only current or pending upgrade statuses.", "schema": { "type": "boolean" } }, { "name": "limitPerDevice", "in": "query", "description": "Optional parameter to limit the number of upgrade statuses returned per device. If omitted, a value of 5 is used.", "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "serial": { "type": "string", "description": "Serial of the device" }, "name": { "type": "string", "description": "Name assigned to the device" }, "deviceStatus": { "type": "string", "description": "Status of the device upgrade" }, "checkinFinishedAt": { "type": "string", "format": "date-time", "description": "The time the device checkin finished", "nullable": true }, "checkinStartedAt": { "type": "string", "format": "date-time", "description": "The time the device checkin started", "nullable": true }, "detailedStatus": { "type": "string", "description": "The detailed status of the device upgrade", "nullable": true }, "downloadFinishedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade download finished", "nullable": true }, "downloadStartedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade download started", "nullable": true }, "downloadStatus": { "type": "string", "description": "The status of the device upgrade download", "nullable": true }, "installFinishedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade install finished", "nullable": true }, "installStartedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade install started", "nullable": true }, "installStatus": { "type": "string", "description": "The status of the device upgrade install", "nullable": true }, "verifyFinishedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade verification finished", "nullable": true }, "verifyStartedAt": { "type": "string", "format": "date-time", "description": "The time the device upgrade verification started", "nullable": true }, "verifyStatus": { "type": "string", "description": "The status of the device upgrade verification", "nullable": true }, "upgrade": { "type": "object", "properties": { "time": { "type": "string", "description": "Start time of the upgrade" }, "fromVersion": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the initial firmware version" }, "shortName": { "type": "string", "description": "Firmware version short name" }, "releaseDate": { "type": "string", "description": "Release date of the firmware version" } }, "description": "The initial version of the device" }, "toVersion": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the initial firmware version" }, "shortName": { "type": "string", "description": "Firmware version short name" }, "releaseDate": { "type": "string", "description": "Release date of the firmware version" } }, "description": "Version the device is upgrading to" }, "status": { "type": "string", "description": "Status of the upgrade" }, "id": { "type": "string", "description": "ID of the upgrade" }, "upgradeBatchId": { "type": "string", "description": "ID of the upgrade batch", "nullable": true }, "staged": { "type": "object", "properties": { "group": { "type": "object", "properties": { "id": { "type": "string", "description": "Id of the staged upgrade group" } }, "description": "The staged upgrade group" } }, "description": "Staged upgrade" } }, "description": "The devices upgrade details and status" } } } }, "example": [ { "serial": "Q234-ABCD-5678", "name": "My switch", "deviceStatus": "completed", "checkinFinishedAt": "2025-06-26T13:22:52Z", "checkinStartedAt": "2025-06-26T12:22:52Z", "detailedStatus": "upgrade-complete", "downloadFinishedAt": "2025-06-26T15:22:52Z", "downloadStartedAt": "2025-06-26T14:22:52Z", "downloadStatus": "complete", "installFinishedAt": "2025-06-26T17:22:52Z", "installStartedAt": "2025-06-26T16:22:52Z", "installStatus": "complete", "verifyFinishedAt": "2025-06-26T19:22:52Z", "verifyStartedAt": "2025-06-26T18:22:52Z", "verifyStatus": "complete", "upgrade": { "time": "2018-02-11T00:00:00.090210Z", "fromVersion": { "id": "1234", "shortName": "MS 16.7", "releaseDate": "2018-02-11T00:00:00.090210Z" }, "toVersion": { "id": "1234", "shortName": "MS 16.7.1", "releaseDate": "2018-02-11T00:00:00.090210Z" }, "status": "Completed", "id": "1234", "upgradeBatchId": "1234", "staged": { "group": { "id": "1234" } } } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Get firmware upgrade status for the filtered devices", "tags": [ "organizations", "configure", "firmware", "upgrades", "byDevice" ] } }, "/organizations/{organizationId}/floorPlans/autoLocate/devices": { "get": { "description": "List auto locate details for each device in your organization", "operationId": "getOrganizationFloorPlansAutoLocateDevices", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter devices by one or more network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "floorPlanIds", "in": "query", "description": "Optional parameter to filter devices by one or more floorplan IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Device Name" }, "serial": { "type": "string", "description": "Device Serial Number" }, "mac": { "type": "string", "description": "MAC Address" }, "model": { "type": "string", "description": "Model" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Tags" }, "status": { "type": "string", "description": "Device Status" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network containing this device" } }, "description": "Network info" }, "floorPlan": { "type": "object", "properties": { "id": { "type": "string", "description": "Floor plan ID" }, "name": { "type": "string", "description": "Floor plan name" } }, "description": "The assigned floor plan for this device" }, "lat": { "type": "number", "format": "float", "description": "Latitude" }, "lng": { "type": "number", "format": "float", "description": "Longitude" }, "autoLocate": { "type": "object", "properties": { "lat": { "type": "number", "format": "float", "description": "Latitude" }, "lng": { "type": "number", "format": "float", "description": "Longitude" } }, "description": "The auto locate position for this device" }, "type": { "type": "string", "description": "The type of auto locate position. Possible values: 'user', 'calculated' and 'suggested'" }, "isAnchor": { "type": "boolean", "description": "Whether or not this auto locate position is an anchor" } } }, "description": "Items in the paginated dataset" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } } }, "example": [ { "items": [ { "name": "My AP", "serial": "Q234-ABCD-5678", "mac": "00:11:22:33:44:55", "model": "MR34", "tags": [ "tag1", "tag2" ], "status": "online", "network": { "id": "N_24329156" }, "floorPlan": { "id": "g_2176982374", "name": "My floor plan" }, "lat": 37.4180951010362, "lng": -122.098531723022, "autoLocate": { "lat": 13.23454243, "lng": 18.12938123 }, "type": "user", "isAnchor": true } ], "meta": { "counts": { "items": { "total": 50, "remaining": 100 } } } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "wireless:config:read" ] } ], "summary": "List auto locate details for each device in your organization", "tags": [ "organizations", "configure", "floorPlans", "autoLocate", "devices" ] } }, "/organizations/{organizationId}/floorPlans/autoLocate/statuses": { "get": { "description": "List the status of auto locate for each floorplan in your organization", "operationId": "getOrganizationFloorPlansAutoLocateStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 10000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter floorplans by one or more network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "floorPlanIds", "in": "query", "description": "Optional parameter to filter floorplans by one or more floorplan IDs", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for the network containing the floorplan" } }, "description": "Network info" }, "floorPlanId": { "type": "string", "description": "Floor plan ID" }, "name": { "type": "string", "description": "Floor plan name" }, "counts": { "type": "object", "properties": { "devices": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of devices supporting AP Auto Locate that will participate if an auto locate job is started" } }, "description": "Device counts for this floor plan" } }, "description": "Counts for this floor plan" }, "jobs": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Auto locate job ID" }, "status": { "type": "string", "description": "Auto locate job status. Possible values: 'scheduled', 'in progress', 'canceling', 'error', 'finished', 'published', 'canceled'" }, "scheduledAt": { "type": "string", "format": "date-time", "description": "Scheduled start time for auto locate job" }, "completed": { "type": "object", "properties": { "percentage": { "type": "integer", "description": "Approximate auto locate job completion percentage" } }, "description": "Auto locate job progress information" }, "ranging": { "type": "object", "properties": { "status": { "type": "string", "description": "Ranging status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'no neighbors'" }, "completed": { "type": "object", "properties": { "percentage": { "type": "integer", "description": "Completion percentage of the ranging process" } }, "description": "Progress information for the ranging process" } }, "description": "Ranging status and progress information" }, "gnss": { "type": "object", "properties": { "status": { "type": "string", "description": "GNSS status. Possible values: 'scheduled', 'in progress', 'error', 'finished', 'not applicable', 'canceled'" }, "completed": { "type": "object", "properties": { "percentage": { "type": "integer", "description": "Completion percentage of the GNSS acquisition process" } }, "description": "Progress information for the GNSS acquisition process" } }, "description": "GNSS (e.g. GPS) status and progress information" }, "errors": { "type": "array", "items": { "type": "object", "properties": { "source": { "type": "string", "description": "The step of the auto locate process when the error occurred. Possible values: 'gnss', 'ranging', 'positioning'" }, "type": { "type": "string", "description": "The type of error that occurred. Possible values: 'failure', 'no neighbors', 'missing anchors', 'wrong anchors', 'missing ranging data', 'calculation failure', 'scheduling failure'" } } }, "description": "List of errors that occurred during a failed run of auto locate" } } }, "description": "The most recent job for this floor plan" } } }, "description": "Items in the paginated dataset" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } } }, "example": [ { "items": [ { "network": { "id": "N_24329156" }, "floorPlanId": "g_2176982374", "name": "My Floorplan", "counts": { "devices": { "total": 120 } }, "jobs": [ { "id": "1234", "status": "error", "scheduledAt": "2018-02-11T00:00:00Z", "completed": { "percentage": 50 }, "ranging": { "status": "in progress", "completed": { "percentage": 24 } }, "gnss": { "status": "in progress", "completed": { "percentage": 4 } }, "errors": [ { "source": "ranging", "type": "missing anchors" } ] } ] } ], "meta": { "counts": { "items": { "total": 50, "remaining": 100 } } } } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "wireless:config:read" ] } ], "summary": "List the status of auto locate for each floorplan in your organization", "tags": [ "organizations", "configure", "floorPlans", "autoLocate", "statuses" ] } }, "/organizations/{organizationId}/integrations/deployable": { "get": { "description": "Provides a list of integrations that can be enabled for an Organization.", "operationId": "getOrganizationIntegrationsDeployable", "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": { "items": { "type": "array", "items": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "Axis", "Catalyst SD-WAN", "Cisco Spaces", "Genea", "OAuth", "PagerDuty", "Secure Access", "Secure Connect", "Splunk", "XDR" ], "description": "Identifier for integration type. One of Axis, Catalyst SD-WAN, Cisco Spaces, Genea, OAuth, PagerDuty, Secure Access, Secure Connect, Splunk, XDR" }, "name": { "type": "string", "description": "Integration name" }, "provider": { "type": "string", "enum": [ "Cisco", "Genea", "partner" ], "description": "Integration provider. One of Cisco, Genea, partner" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Integration categories" }, "shortDescription": { "type": "string", "description": "Short description for integration" }, "isDeployable": { "type": "boolean", "description": "Whether the integration is deployable for this organization" }, "releaseType": { "type": "string", "enum": [ "Alpha", "Beta", "GA" ], "description": "Release type of the integration. One of Alpha, Beta, or GA" }, "logoUrl": { "type": "string", "description": "Url for integration logo" }, "redirectUrl": { "type": "string", "description": "Integration's redirect url" }, "isCiscoProduct": { "type": "boolean", "description": "Whether the integration is a Cisco product" } } }, "description": "An integration that you can add to your organization." }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "type": "Catalyst SD-WAN", "name": "Catalyst SD-WAN", "provider": "Cisco", "tags": [ "SD-WAN" ], "shortDescription": "Connect to a Catalyst SD-WAN overlay to enable simple SD-WAN interconnects.", "isDeployable": true, "releaseType": "Beta", "logoUrl": "https://example.com", "redirectUrl": "https://example.com", "isCiscoProduct": true } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Provides a list of integrations that can be enabled for an Organization.", "tags": [ "organizations", "configure", "integrations", "deployable" ] } }, "/organizations/{organizationId}/integrations/deployed": { "get": { "description": "Provides a list of integrations enabled for an Organization.", "operationId": "getOrganizationIntegrationsDeployed", "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": { "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "ID for integration" }, "type": { "type": "string", "enum": [ "Axis", "Catalyst SD-WAN", "Cisco Spaces", "Genea", "OAuth", "PagerDuty", "Secure Access", "Secure Connect", "Splunk", "XDR" ], "description": "Identifier for integration type. One of Axis, Catalyst SD-WAN, Cisco Spaces, Genea, OAuth, PagerDuty, Secure Access, Secure Connect, Splunk, XDR" }, "name": { "type": "string", "description": "Name of integration" }, "provider": { "type": "string", "enum": [ "Cisco", "Genea", "partner" ], "description": "Integration provider. One of Cisco, Genea, partner" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Integration types" } } }, "description": "A deployed integration" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "id": "98765", "type": "OAuth", "name": "OAuth Application", "provider": "partner", "tags": [ "Wayfinding", "OAuth" ] } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Provides a list of integrations enabled for an Organization.", "tags": [ "organizations", "configure", "integrations", "deployed" ] } }, "/organizations/{organizationId}/integrations/xdr/networks": { "get": { "description": "Returns the networks in the organization that have XDR enabled", "operationId": "getOrganizationIntegrationsXdrNetworks", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkIds", "in": "query", "description": "Optional parameter to filter the results by network IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 20.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "List of products that have XDR enabled" }, "name": { "type": "string", "description": "The name of the network" }, "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" }, "isEligible": { "type": "boolean", "description": "Represents whether the network is eligible for XDR" } } }, "description": "List of networks with XDR enabled" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of networks in the dataset" }, "remaining": { "type": "integer", "description": "The number of networks in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated networks" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "networkId": "N_1234567", "productTypes": [ "appliance" ], "name": "Test network", "enabled": true, "isEligible": true } ], "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." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Returns the networks in the organization that have XDR enabled", "tags": [ "organizations", "configure", "integrations", "xdr", "networks" ] } }, "/organizations/{organizationId}/integrations/xdr/networks/disable": { "post": { "description": "Disable XDR on networks", "operationId": "disableOrganizationIntegrationsXdrNetworks", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "networks": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "productTypes": { "type": "array", "items": { "type": "string", "enum": [ "appliance" ] }, "description": "List of products for which to disable XDR" } }, "required": [ "networkId", "productTypes" ] }, "description": "List containing the network ID and the product type to disable XDR on" } }, "example": { "networks": [ { "networkId": "N_1234567", "productTypes": [ "appliance" ] } ] }, "required": [ "networks" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networks": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "List of products that have XDR disabled" }, "name": { "type": "string", "description": "The name of the network" }, "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" }, "isEligible": { "type": "boolean", "description": "Represents whether the network is eligible for XDR" } } }, "description": "List of networks that have XDR disabled" } } }, "example": { "networks": [ { "networkId": "N_1234567", "productTypes": [ "appliance" ], "name": "Test network", "enabled": false, "isEligible": true } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Disable XDR on networks", "tags": [ "organizations", "configure", "integrations", "xdr", "networks" ] } }, "/organizations/{organizationId}/integrations/xdr/networks/enable": { "post": { "description": "Enable XDR on networks", "operationId": "enableOrganizationIntegrationsXdrNetworks", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "networks": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "productTypes": { "type": "array", "items": { "type": "string", "enum": [ "appliance" ] }, "description": "List of products for which to enable XDR" } }, "required": [ "networkId", "productTypes" ] }, "description": "List containing the network ID and the product type to enable XDR on" } }, "example": { "networks": [ { "networkId": "N_1234567", "productTypes": [ "appliance" ] } ] }, "required": [ "networks" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "networks": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID" }, "productTypes": { "type": "array", "items": { "type": "string" }, "description": "List of products that have XDR enabled" }, "name": { "type": "string", "description": "The name of the network" }, "enabled": { "type": "boolean", "description": "Represents whether XDR is enabled for the network" }, "isEligible": { "type": "boolean", "description": "Represents whether the network is eligible for XDR" } } }, "description": "List of networks that have XDR enabled" } } }, "example": { "networks": [ { "networkId": "N_1234567", "productTypes": [ "appliance" ], "name": "Test network", "enabled": true, "isEligible": true } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Enable XDR on networks", "tags": [ "organizations", "configure", "integrations", "xdr", "networks" ] } }, "/organizations/{organizationId}/inventory/claim": { "post": { "description": "Claim a list of devices, licenses, and/or orders into an organization inventory. When claiming by order, all devices and licenses in the order will be claimed; licenses will be added to the organization and devices will be placed in the organization's inventory. This operation can be used up to ten times within a single five minute window.", "operationId": "claimIntoOrganizationInventory", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "orders": { "type": "array", "items": { "type": "string" }, "description": "The numbers of the orders that should be claimed" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "The serials of the devices that should be claimed" }, "licenses": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "description": "The key of the license" }, "mode": { "type": "string", "enum": [ "addDevices", "renew" ], "description": "Co-term licensing only: either 'renew' or 'addDevices'. 'addDevices' will increase the license limit, while 'renew' will extend the amount of time until expiration. Defaults to 'addDevices'. All licenses must be claimed with the same mode, and at most one renewal can be claimed at a time. Does not apply to organizations using per-device licensing model." } }, "required": [ "key" ] }, "description": "The licenses that should be claimed" } }, "example": { "orders": [ "4CXXXXXXX" ], "serials": [ "Q234-ABCD-5678" ], "licenses": [ { "key": "Z2XXXXXXXXXX", "mode": "addDevices" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "orders": { "type": "array", "items": { "type": "string" }, "description": "The numbers of the orders claimed" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "The serials of the devices claimed" }, "licenses": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string", "description": "The key of the license" }, "mode": { "type": "string", "description": "The mode of the license" } } }, "description": "The licenses claimed" } } }, "example": { "orders": [ "4CXXXXXXX" ], "serials": [ "Q234-ABCD-5678" ], "licenses": [ { "key": "Z2XXXXXXXXXX", "mode": "addDevices" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Claim a list of devices, licenses, and/or orders into an organization inventory", "tags": [ "organizations", "configure", "inventory" ] } }, "/organizations/{organizationId}/inventory/devices": { "get": { "description": "Return the device inventory for an organization", "operationId": "getOrganizationInventoryDevices", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "usedState", "in": "query", "description": "Filter results by used or unused inventory. Accepted values are 'used' or 'unused'.", "schema": { "type": "string", "enum": [ "unused", "used" ] } }, { "name": "search", "in": "query", "description": "Search for devices in inventory based on serial number, mac address, or model.", "schema": { "type": "string" } }, { "name": "macs", "in": "query", "description": "Search for devices in inventory based on mac addresses.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "networkIds", "in": "query", "description": "Search for devices in inventory based on network ids. Use explicit 'null' value to get available devices only.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "Search for devices in inventory based on serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "models", "in": "query", "description": "Search for devices in inventory based on model.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "orderNumbers", "in": "query", "description": "Search for devices in inventory based on order numbers.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "tags", "in": "query", "description": "Filter devices 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": "To use with 'tags' parameter, to filter devices which contain ANY or ALL given tags. Accepted values are 'withAnyTags' or 'withAllTags', default is 'withAnyTags'.", "schema": { "type": "string", "enum": [ "withAllTags", "withAnyTags" ] } }, { "name": "productTypes", "in": "query", "description": "Filter devices by product type. Accepted values are appliance, camera, campusGateway, cellularGateway, secureConnect, sensor, switch, systemsManager, wireless, and wirelessController.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } }, { "name": "eoxStatuses", "in": "query", "description": "Filter devices by EoX status. Accepted values are 'endOfSale', 'endOfSupport', 'nearEndOfSupport', or 'null'. Use 'null' to filter for devices with no EOX data. Supports multiple values for multi-select filtering.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "endOfSale", "endOfSupport", "nearEndOfSupport", "null" ] } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model type of the device" }, "sku": { "type": "string", "description": "Full product model SKU of the device" }, "networkId": { "type": "string", "description": "Network Id of the device" }, "orderNumber": { "type": "string", "description": "Order number of the device" }, "claimedAt": { "type": "string", "format": "date-time", "description": "Claimed time of the device" }, "licenseExpirationDate": { "type": "string", "format": "date-time", "description": "License expiration date of the device" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Device tags" }, "productType": { "type": "string", "description": "Product type of the device" }, "countryCode": { "type": "string", "description": "Country/region code from device, network, or store order" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Additional property name" }, "value": { "type": "string", "description": "Additional property value" } } }, "description": "Additional device information" }, "eox": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "endOfSale", "endOfSupport", "nearEndOfSupport" ], "description": "End of sale and support status of the device", "nullable": true }, "endOfSaleAt": { "type": "string", "format": "date-time", "description": "End of sale date for the device product" }, "endOfSupportAt": { "type": "string", "format": "date-time", "description": "End of support date for the device product" } }, "description": "End of life information for the device" } } } }, "example": [ { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "name": "My AP", "model": "MR34", "sku": "MR34-HW", "networkId": "N_24329156", "orderNumber": "4C1234567", "claimedAt": "2018-02-11T00:00:00.090210Z", "licenseExpirationDate": "2020-05-02T10:52:44.012345Z", "tags": [ "tag1", "tag2" ], "productType": "wireless", "countryCode": "US", "details": [ { "name": "Catalyst serial", "value": "FOC2234432B" } ], "eox": { "status": "endOfSale", "endOfSaleAt": "2031-07-29T02:00:00Z", "endOfSupportAt": "2032-07-29T02: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." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return the device inventory for an organization", "tags": [ "organizations", "configure", "inventory", "devices" ] } }, "/organizations/{organizationId}/inventory/devices/eox/overview": { "get": { "description": "Fetch the EOX summary for an organization, including counts of devices that are end-of-sale, end-of-support, and end-of-support-soon.", "operationId": "getOrganizationInventoryDevicesEoxOverview", "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": { "endOfSale": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices that have reached end of sale" } }, "description": "End of sale device counts" }, "endOfSupport": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices that have reached end of support" } }, "description": "End of support device counts" }, "nearEndOfSupport": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of devices that are near end of support" } }, "description": "Near end of support device counts" } }, "description": "Device counts grouped by EOX status" } }, "description": "Device counts grouped by category" } } }, "example": { "counts": { "byStatus": { "endOfSale": { "total": 5 }, "endOfSupport": { "total": 3 }, "nearEndOfSupport": { "total": 7 } } } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Fetch the EOX summary for an organization, including counts of devices that are end-of-sale, end-of-support, and end-of-support-soon.", "tags": [ "organizations", "configure", "inventory", "devices", "eox" ] } }, "/organizations/{organizationId}/inventory/devices/swaps/bulk": { "post": { "description": "Swap the devices identified by devices.old with a devices.new, then perform the :afterAction on the devices.old.", "operationId": "createOrganizationInventoryDevicesSwapsBulk", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "swaps": { "type": "array", "items": { "type": "object", "properties": { "devices": { "type": "object", "properties": { "old": { "type": "string", "description": "The serial of the device to be cloned." }, "new": { "type": "string", "description": "The serial of the device that the old device's settings will be cloned to." } }, "required": [ "old", "new" ], "description": "The devices involved in the swap." }, "afterAction": { "type": "string", "enum": [ "release from organization inventory", "remove from network" ], "description": "What action to perform on devices.old after the device cloning is complete. 'remove from network' will return the device to inventory, while 'release from organization inventory' will free up the license attached to the device." } }, "required": [ "devices", "afterAction" ] }, "description": "List of replacments to perform" } }, "example": { "swaps": [ { "devices": { "old": "Q234-ABCD-5678", "new": "Q234-ABCD-5678" }, "afterAction": "remove from network" } ] }, "required": [ "swaps" ] } } }, "required": true }, "responses": { "207": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "jobId": { "type": "string", "description": "The ID of the job that was used to create all of the device swaps." }, "swaps": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Swap Request ID" }, "devices": { "type": "object", "properties": { "old": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of device" }, "model": { "type": "string", "description": "Model name for device" }, "name": { "type": "string", "description": "Customized name for device, or MAC address" } }, "required": [ "mac", "serial", "model" ], "description": "The device that will be cloned" }, "new": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of device" }, "model": { "type": "string", "description": "Model name for device" }, "name": { "type": "string", "description": "Customized name for device, or MAC address" } }, "required": [ "mac", "serial", "model" ], "description": "The device that will have settings cloned to" } }, "required": [ "old", "new" ], "description": "The devices involved in the swap" }, "status": { "type": "string", "enum": [ "complete", "failed", "pending" ], "description": "The current status of the swap job." }, "afterAction": { "type": "string", "enum": [ "release from organization inventory", "remove from network" ], "description": "An action to perform on the devices.old object after swap is complete." }, "createdAt": { "type": "string", "description": "An iso8601 timestamp for the creation of the swap request." }, "completedAt": { "type": "string", "description": "An iso8601 timestamp for when the swap completed or failed." }, "errors": { "type": "array", "items": { "type": "string" }, "description": "A list of error messages for why a swap failed." } }, "required": [ "id", "devices", "status", "afterAction", "createdAt" ] }, "description": "An array of recent swap requests and their statuses." } } }, "example": { "jobId": "1284392014819", "swaps": [ { "id": "1284392014819", "devices": { "old": { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "model": "MR34", "name": "My AP" }, "new": { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "model": "MR34", "name": "My AP" } }, "status": "complete", "afterAction": "remove from network", "createdAt": "2023-04-24T12:40:11Z", "completedAt": "2023-04-24T12:40:12Z", "errors": [] } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Swap the devices identified by devices.old with a devices.new, then perform the :afterAction on the devices.old.", "tags": [ "organizations", "configure", "inventory", "devices", "swaps", "bulk" ] } }, "/organizations/{organizationId}/inventory/devices/swaps/bulk/{id}": { "get": { "description": "List of device swaps for a given request ID ({id}).", "operationId": "getOrganizationInventoryDevicesSwapsBulk", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "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": { "jobId": { "type": "string", "description": "The ID of the job that was used to create all of the device swaps." }, "swaps": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Swap Request ID" }, "devices": { "type": "object", "properties": { "old": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of device" }, "model": { "type": "string", "description": "Model name for device" }, "name": { "type": "string", "description": "Customized name for device, or MAC address" } }, "required": [ "mac", "serial", "model" ], "description": "The device that will be cloned" }, "new": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of device" }, "model": { "type": "string", "description": "Model name for device" }, "name": { "type": "string", "description": "Customized name for device, or MAC address" } }, "required": [ "mac", "serial", "model" ], "description": "The device that will have settings cloned to" } }, "required": [ "old", "new" ], "description": "The devices involved in the swap" }, "status": { "type": "string", "enum": [ "complete", "failed", "pending" ], "description": "The current status of the swap job." }, "afterAction": { "type": "string", "enum": [ "release from organization inventory", "remove from network" ], "description": "An action to perform on the devices.old object after swap is complete." }, "createdAt": { "type": "string", "description": "An iso8601 timestamp for the creation of the swap request." }, "completedAt": { "type": "string", "description": "An iso8601 timestamp for when the swap completed or failed." }, "errors": { "type": "array", "items": { "type": "string" }, "description": "A list of error messages for why a swap failed." } }, "required": [ "id", "devices", "status", "afterAction", "createdAt" ] }, "description": "An array of recent swap requests and their statuses." } } }, "example": { "jobId": "1284392014819", "swaps": [ { "id": "1284392014819", "devices": { "old": { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "model": "MR34", "name": "My AP" }, "new": { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "model": "MR34", "name": "My AP" } }, "status": "complete", "afterAction": "remove from network", "createdAt": "2023-04-24T12:40:11Z", "completedAt": "2023-04-24T12:40:12Z", "errors": [] } ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List of device swaps for a given request ID ({id}).", "tags": [ "organizations", "configure", "inventory", "devices", "swaps", "bulk" ] } }, "/organizations/{organizationId}/inventory/devices/{serial}": { "get": { "description": "Return a single device from the inventory of an organization", "operationId": "getOrganizationInventoryDevice", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "serial", "in": "path", "description": "Serial", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "mac": { "type": "string", "description": "MAC address of the device" }, "serial": { "type": "string", "description": "Serial number of the device" }, "name": { "type": "string", "description": "Name of the device" }, "model": { "type": "string", "description": "Model type of the device" }, "sku": { "type": "string", "description": "Full product model SKU of the device" }, "networkId": { "type": "string", "description": "Network Id of the device" }, "orderNumber": { "type": "string", "description": "Order number of the device" }, "claimedAt": { "type": "string", "format": "date-time", "description": "Claimed time of the device" }, "licenseExpirationDate": { "type": "string", "format": "date-time", "description": "License expiration date of the device" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Device tags" }, "productType": { "type": "string", "description": "Product type of the device" }, "countryCode": { "type": "string", "description": "Country/region code from device, network, or store order" }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Additional property name" }, "value": { "type": "string", "description": "Additional property value" } } }, "description": "Additional device information" }, "eox": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "endOfSale", "endOfSupport", "nearEndOfSupport" ], "description": "End of sale and support status of the device", "nullable": true }, "endOfSaleAt": { "type": "string", "format": "date-time", "description": "End of sale date for the device product" }, "endOfSupportAt": { "type": "string", "format": "date-time", "description": "End of support date for the device product" } }, "description": "End of life information for the device" } } }, "example": { "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "name": "My AP", "model": "MR34", "sku": "MR34-HW", "networkId": "N_24329156", "orderNumber": "4C1234567", "claimedAt": "2018-02-11T00:00:00.090210Z", "licenseExpirationDate": "2020-05-02T10:52:44.012345Z", "tags": [ "tag1", "tag2" ], "productType": "wireless", "countryCode": "US", "details": [ { "name": "Catalyst serial", "value": "FOC2234432B" } ], "eox": { "status": "endOfSale", "endOfSaleAt": "2031-07-29T02:00:00Z", "endOfSupportAt": "2032-07-29T02:00:00Z" } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return a single device from the inventory of an organization", "tags": [ "organizations", "configure", "inventory", "devices" ] } }, "/organizations/{organizationId}/inventory/orders/claim": { "post": { "description": "Claim an order by the secure unique order claim number, the order claim id", "operationId": "claimOrganizationInventoryOrders", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "claimId": { "type": "string", "description": "The unique order claim id" }, "subscriptions": { "type": "array", "items": { "type": "object", "properties": { "subscriptionId": { "type": "string", "description": "Subscription ID" }, "name": { "type": "string", "description": "Subscription name" }, "description": { "type": "string", "description": "Subscription description" } }, "required": [ "subscriptionId" ] }, "description": "The individual subscriptions to claim" } }, "example": { "claimId": "12345", "subscriptions": [ { "subscriptionId": "SUB1234132", "name": "My Wireless Subscription", "description": "Subscription for Wireless Network" } ] }, "required": [ "claimId" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "claimId": { "type": "string", "description": "The order claim id" }, "number": { "type": "string", "description": "Order Number" }, "serials": { "type": "array", "items": { "type": "string" }, "description": "All devices claimed in this order" }, "subscriptions": { "type": "array", "items": { "type": "object", "properties": { "subscriptionId": { "type": "string", "description": "Subscription ID" }, "name": { "type": "string", "description": "Subscription name" }, "description": { "type": "string", "description": "Subscription description" }, "startDate": { "type": "string", "format": "date-time", "description": "The date this subscription will begin" }, "endDate": { "type": "string", "format": "date-time", "description": "The date this subscription will end" }, "isClaimed": { "type": "boolean", "description": "Whether the subscription has been claimed" }, "counts": { "type": "object", "properties": { "seats": { "type": "object", "properties": { "limit": { "type": "integer", "description": "Total number of seats provided by this subscription" } }, "description": "Seat distribution" } }, "description": "Numeric breakdown of subscription counts" } } }, "description": "Details for subscriptions claimed in this order" } } }, "example": { "claimId": "ABCDEFG12345", "number": "97001888", "serials": [ "1234-ABCD-4567" ], "subscriptions": [ { "subscriptionId": "1234", "name": "My UNX Subscription", "description": "Wireless Networking Subscription", "startDate": "2020-06-30T00:00:00Z", "endDate": "2025-06-30T00:00:00Z", "isClaimed": false, "counts": { "seats": { "limit": 1 } } } ] } } } } }, "summary": "Claim an order by the secure unique order claim number, the order claim id", "tags": [ "organizations", "configure", "inventory", "orders" ] } }, "/organizations/{organizationId}/inventory/orders/preview": { "post": { "description": "Preview the results and status of an order claim by the secure order id", "operationId": "previewOrganizationInventoryOrders", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "claimId": { "type": "string", "description": "The unique order claim id" } }, "example": { "claimId": "12345" }, "required": [ "claimId" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "claimId": { "type": "string", "description": "The secure unique order claim number" }, "resolution": { "type": "object", "properties": { "submissionStrategy": { "type": "string", "description": "The synchronous submission path allowed for this preview" }, "supportsSubscriptionSelection": { "type": "boolean", "description": "Whether subscription selection is supported for this preview path" }, "claimableShippedDeviceCount": { "type": "integer", "description": "The backend-owned count of currently claimable shipped hardware devices" } }, "description": "How the backend resolved the submitted claim key for preview routing" }, "number": { "type": "string", "description": "Order Number" }, "shipping": { "type": "object", "properties": { "shipments": { "type": "array", "items": { "type": "object", "properties": { "shippedAt": { "type": "string", "format": "date-time", "description": "The date this shipment was shipped" }, "number": { "type": "integer", "description": "Which shipment the information is for" }, "devices": { "type": "array", "items": { "type": "object", "properties": { "quantity": { "type": "integer", "description": "How many of this SKU are in this shipment" }, "sku": { "type": "string", "description": "The sku of this device" }, "description": { "type": "string", "description": "The description of this device" } } }, "description": "All devices contained in this shipment" } } }, "description": "Hardware shipments for this order" }, "pending": { "type": "object", "properties": { "devices": { "type": "array", "items": { "type": "object", "properties": { "quantity": { "type": "integer", "description": "How many of this SKU are in this shipment" }, "sku": { "type": "string", "description": "The sku of this device" }, "description": { "type": "string", "description": "The description of this device" } } }, "description": "Remaining hardware items that are pending shipment" } }, "description": "Order items still pending shipment data" } }, "description": "All shipping information for this order" }, "subscriptions": { "type": "array", "items": { "type": "object", "properties": { "subscriptionId": { "type": "string", "description": "Subscription ID" }, "name": { "type": "string", "description": "Subscription name" }, "description": { "type": "string", "description": "Subscription description" }, "startDate": { "type": "string", "format": "date-time", "description": "The date this subscription will begin" }, "endDate": { "type": "string", "format": "date-time", "description": "The date this subscription will end" }, "isClaimed": { "type": "boolean", "description": "Whether the subscription has been claimed" }, "counts": { "type": "object", "properties": { "seats": { "type": "object", "properties": { "limit": { "type": "integer", "description": "Total number of seats provided by this subscription" } }, "description": "Seat distribution" } }, "description": "Numeric breakdown of subscription counts" } } }, "description": "All subscriptions contained in this order" } } }, "example": { "claimId": "ABCD1EFGH4IJ", "resolution": { "submissionStrategy": "sync_order_claim", "supportsSubscriptionSelection": true, "claimableShippedDeviceCount": 5 }, "number": "97001888", "shipping": { "shipments": [ { "shippedAt": "2024-06-30T00:00:00Z", "number": 1, "devices": [ { "quantity": 5, "sku": "MR70-HW", "description": "Meraki MR70 Cloud Managed AP" } ] } ], "pending": { "devices": [ { "quantity": 1, "sku": "MR70-HW", "description": "Meraki MX90 Cloud Managed Security Appliance" } ] } }, "subscriptions": [ { "subscriptionId": "1234", "name": "My UNX Subscription", "description": "Wireless Networking Subscription", "startDate": "2020-06-30T00:00:00Z", "endDate": "2025-06-30T00:00:00Z", "isClaimed": false, "counts": { "seats": { "limit": 1 } } } ] } } } } }, "summary": "Preview the results and status of an order claim by the secure order id", "tags": [ "organizations", "configure", "inventory", "orders" ] } }, "/organizations/{organizationId}/inventory/release": { "post": { "description": "Release a list of claimed devices from an organization.", "operationId": "releaseFromOrganizationInventory", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "Serials of the devices that should be released" } }, "example": { "serials": [ "Q234-ABCD-5678" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "serials": { "type": "array", "items": { "type": "string" }, "description": "Serials of the devices that were released" } } }, "example": { "serials": [ "Q234-ABCD-5678" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Release a list of claimed devices from an organization.", "tags": [ "organizations", "configure", "inventory" ] } }, "/organizations/{organizationId}/licenses": { "get": { "description": "List the licenses for an organization", "operationId": "getOrganizationLicenses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "deviceSerial", "in": "query", "description": "Filter the licenses to those assigned to a particular device. Returned in the same order that they are queued to the device.", "schema": { "type": "string" } }, { "name": "networkId", "in": "query", "description": "Filter the licenses to those assigned in a particular network", "schema": { "type": "string" } }, { "name": "state", "in": "query", "description": "Filter the licenses to those in a particular state. Can be one of 'active', 'expired', 'expiring', 'recentlyQueued', 'unused' or 'unusedActive'", "schema": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "License ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "deviceSerial": { "type": "string", "description": "Serial number of the device the license is assigned to" }, "networkId": { "type": "string", "description": "ID of the network the license is assigned to" }, "state": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ], "description": "The state of the license. All queued licenses have a status of `recentlyQueued`." }, "seatCount": { "type": "integer", "description": "The number of seats of the license. Only applicable to SM licenses." }, "totalDurationInDays": { "type": "integer", "description": "The duration of the license plus all permanently queued licenses associated with it" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" }, "permanentlyQueuedLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Permanently queued license ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" } } }, "description": "DEPRECATED List of permanently queued licenses attached to the license. Instead, use /organizations/{organizationId}/licenses?deviceSerial= to retrieved queued licenses for a given device." }, "claimDate": { "type": "string", "description": "The date the license was claimed into the organization" }, "activationDate": { "type": "string", "description": "The date the license started burning" }, "expirationDate": { "type": "string", "description": "The date the license will expire" }, "headLicenseId": { "type": "string", "description": "The id of the head license this license is queued behind. If there is no head license, it returns nil." } } } }, "example": [ { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "deviceSerial": "Q234-ABCD-5678", "networkId": "N_24329156", "state": "active", "seatCount": 25, "totalDurationInDays": 425, "durationInDays": 365, "permanentlyQueuedLicenses": [ { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "durationInDays": 60 } ], "claimDate": "2019-08-29T12:40:10Z", "activationDate": "2019-09-01T15:01:46Z", "expirationDate": "2020-10-30T15:01:46Z", "headLicenseId": "1234" } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:read" ] } ], "summary": "List the licenses for an organization", "tags": [ "organizations", "configure", "licenses" ] } }, "/organizations/{organizationId}/licenses/assignSeats": { "post": { "description": "Assign SM seats to a network. This will increase the managed SM device limit of the network", "operationId": "assignOrganizationLicensesSeats", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "licenseId": { "type": "string", "description": "The ID of the SM license to assign seats from" }, "networkId": { "type": "string", "description": "The ID of the SM network to assign the seats to" }, "seatCount": { "type": "integer", "description": "The number of seats to assign to the SM network. Must be less than or equal to the total number of seats of the license" } }, "example": { "licenseId": "1234", "networkId": "N_24329156", "seatCount": 20 }, "required": [ "licenseId", "networkId", "seatCount" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "resultingLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "License ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "deviceSerial": { "type": "string", "description": "Serial number of the device the license is assigned to" }, "networkId": { "type": "string", "description": "ID of the network the license is assigned to" }, "state": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ], "description": "The state of the license. All queued licenses have a status of `recentlyQueued`." }, "seatCount": { "type": "integer", "description": "The number of seats of the license. Only applicable to SM licenses." }, "totalDurationInDays": { "type": "integer", "description": "The duration of the license plus all permanently queued licenses associated with it" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" }, "permanentlyQueuedLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Permanently queued license ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" } } }, "description": "DEPRECATED List of permanently queued licenses attached to the license. Instead, use /organizations/{organizationId}/licenses?deviceSerial= to retrieved queued licenses for a given device." }, "claimDate": { "type": "string", "description": "The date the license was claimed into the organization" }, "activationDate": { "type": "string", "description": "The date the license started burning" }, "expirationDate": { "type": "string", "description": "The date the license will expire" }, "headLicenseId": { "type": "string", "description": "The id of the head license this license is queued behind. If there is no head license, it returns nil." } } }, "description": "Resulting licenses from the move" } } }, "example": { "resultingLicenses": [ { "id": "1234", "licenseType": "SME", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "deviceSerial": "Q234-ABCD-5678", "networkId": "N_24329156", "state": "active", "seatCount": 25, "totalDurationInDays": 425, "durationInDays": 365, "permanentlyQueuedLicenses": [ { "id": "1234", "licenseType": "SME", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "durationInDays": 60 } ], "claimDate": "2019-08-29T12:40:10Z", "activationDate": "2019-09-01T15:01:46Z", "expirationDate": "2020-10-30T15:01:46Z", "headLicenseId": "1234" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Assign SM seats to a network", "tags": [ "organizations", "configure", "licenses" ] } }, "/organizations/{organizationId}/licenses/move": { "post": { "description": "Move licenses to another organization. This will also move any devices that the licenses are assigned to", "operationId": "moveOrganizationLicenses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "destOrganizationId": { "type": "string", "description": "The ID of the organization to move the licenses to" }, "licenseIds": { "type": "array", "items": { "type": "string" }, "description": "A list of IDs of licenses to move to the new organization" } }, "example": { "destOrganizationId": "2930418", "licenseIds": [ "123", "456" ] }, "required": [ "destOrganizationId", "licenseIds" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "destOrganizationId": { "type": "string", "description": "The ID of the organization to move the licenses to" }, "licenseIds": { "type": "array", "items": { "type": "string" }, "description": "A list of IDs of licenses to move to the new organization" } } }, "example": { "destOrganizationId": "2930418", "licenseIds": [ "123", "456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Move licenses to another organization", "tags": [ "organizations", "configure", "licenses" ] } }, "/organizations/{organizationId}/licenses/moveSeats": { "post": { "description": "Move SM seats to another organization", "operationId": "moveOrganizationLicensesSeats", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "destOrganizationId": { "type": "string", "description": "The ID of the organization to move the SM seats to" }, "licenseId": { "type": "string", "description": "The ID of the SM license to move the seats from" }, "seatCount": { "type": "integer", "description": "The number of seats to move to the new organization. Must be less than or equal to the total number of seats of the license" } }, "example": { "destOrganizationId": "2930418", "licenseId": "1234", "seatCount": 20 }, "required": [ "destOrganizationId", "licenseId", "seatCount" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "destOrganizationId": { "type": "string", "description": "The ID of the organization to move the SM seats to" }, "licenseId": { "type": "string", "description": "The ID of the SM license to move the seats from" }, "seatCount": { "type": "integer", "description": "The number of seats to move to the new organization. Must be less than or equal to the total number of seats of the license" } } }, "example": { "destOrganizationId": "2930418", "licenseId": "1234", "seatCount": 20 } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Move SM seats to another organization", "tags": [ "organizations", "configure", "licenses" ] } }, "/organizations/{organizationId}/licenses/overview": { "get": { "description": "Return an overview of the license state for an organization", "operationId": "getOrganizationLicensesOverview", "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": { "status": { "type": "string", "description": "License status (Co-termination licensing only)" }, "expirationDate": { "type": "string", "description": "License expiration date (Co-termination licensing only)" }, "licensedDeviceCounts": { "type": "object", "additionalProperties": { "type": "integer", "description": "Number of licenses" }, "description": "License counts (Co-termination licensing only)" }, "licenseCount": { "type": "integer", "description": "Total number of licenses (Per-device licensing only)" }, "states": { "type": "object", "properties": { "active": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of active licenses" } }, "description": "Data for active licenses" }, "expired": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of expired licenses" } }, "description": "Data for expired licenses" }, "expiring": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of expiring licenses" }, "critical": { "type": "object", "properties": { "thresholdInDays": { "type": "integer", "description": "The number of days from now denoting the critical threshold for an expiring license" }, "expiringCount": { "type": "integer", "description": "The number of licenses that will expire in this window" } }, "description": "Data for the critical threshold" }, "warning": { "type": "object", "properties": { "thresholdInDays": { "type": "integer", "description": "The number of days from now denoting the warning threshold for an expiring license" }, "expiringCount": { "type": "integer", "description": "The number of licenses that will expire in this window" } }, "description": "Data for the warning threshold" } }, "description": "Data for expiring licenses" }, "recentlyQueued": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of recently queued licenses" } }, "description": "Data for recently queued licenses" }, "unused": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of unused licenses" }, "soonestActivation": { "type": "object", "properties": { "activationDate": { "type": "string", "description": "The soonest license activation date" }, "toActivateCount": { "type": "integer", "description": "The number of licenses that will activate on this date" } }, "description": "Information about the soonest forthcoming license activation" } }, "description": "Data for unused licenses" }, "unusedActive": { "type": "object", "properties": { "count": { "type": "integer", "description": "The number of unused, active licenses" }, "oldestActivation": { "type": "object", "properties": { "activationDate": { "type": "string", "description": "The oldest license activation date" }, "activeCount": { "type": "integer", "description": "The number of licenses that activated on this date" } }, "description": "Information about the oldest historical license activation" } }, "description": "Data for unused, active licenses" } }, "description": "Aggregated data for licenses by state (Per-device licensing only)" }, "licenseTypes": { "type": "array", "items": { "type": "object", "properties": { "licenseType": { "type": "string", "description": "License type" }, "counts": { "type": "object", "properties": { "unassigned": { "type": "integer", "description": "The number of unassigned licenses" } }, "description": "Aggregated count data for the license type" } } }, "description": "Data by license type (Per-device licensing only)" }, "systemsManager": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "totalSeats": { "type": "integer", "description": "The total number of Systems Manager seats" }, "activeSeats": { "type": "integer", "description": "The number of Systems Manager seats in use" }, "unassignedSeats": { "type": "integer", "description": "The number of unused Systems Manager seats" }, "orgwideEnrolledDevices": { "type": "integer", "description": "The total number of enrolled Systems Manager devices" } }, "description": "Aggregated license count data for Systems Manager" } }, "description": "Aggregated data for Systems Manager licenses (Per-device licensing only)" } } }, "example": { "status": "OK", "expirationDate": "Feb 8, 2020 UTC", "licensedDeviceCounts": { "MS": 100 }, "licenseCount": 20, "states": { "active": { "count": 10 }, "expired": { "count": 2 }, "expiring": { "count": 3, "critical": { "thresholdInDays": 14, "expiringCount": 1 }, "warning": { "thresholdInDays": 90, "expiringCount": 2 } }, "recentlyQueued": { "count": 0 }, "unused": { "count": 2, "soonestActivation": { "activationDate": "2020-10-30", "toActivateCount": 1 } }, "unusedActive": { "count": 3, "oldestActivation": { "activationDate": "2019-09-01", "activeCount": 2 } } }, "licenseTypes": [ { "licenseType": "ENT", "counts": { "unassigned": 2 } } ], "systemsManager": { "counts": { "totalSeats": 50, "activeSeats": 10, "unassignedSeats": 20, "orgwideEnrolledDevices": 10 } } } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:read" ] } ], "summary": "Return an overview of the license state for an organization", "tags": [ "organizations", "monitor", "licenses", "overview" ] } }, "/organizations/{organizationId}/licenses/renewSeats": { "post": { "description": "Renew SM seats of a license. This will extend the license expiration date of managed SM devices covered by this license", "operationId": "renewOrganizationLicensesSeats", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "licenseIdToRenew": { "type": "string", "description": "The ID of the SM license to renew. This license must already be assigned to an SM network" }, "unusedLicenseId": { "type": "string", "description": "The SM license to use to renew the seats on 'licenseIdToRenew'. This license must have at least as many seats available as there are seats on 'licenseIdToRenew'" } }, "example": { "licenseIdToRenew": "123", "unusedLicenseId": "1234" }, "required": [ "licenseIdToRenew", "unusedLicenseId" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "resultingLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "License ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "deviceSerial": { "type": "string", "description": "Serial number of the device the license is assigned to" }, "networkId": { "type": "string", "description": "ID of the network the license is assigned to" }, "state": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ], "description": "The state of the license. All queued licenses have a status of `recentlyQueued`." }, "seatCount": { "type": "integer", "description": "The number of seats of the license. Only applicable to SM licenses." }, "totalDurationInDays": { "type": "integer", "description": "The duration of the license plus all permanently queued licenses associated with it" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" }, "permanentlyQueuedLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Permanently queued license ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" } } }, "description": "DEPRECATED List of permanently queued licenses attached to the license. Instead, use /organizations/{organizationId}/licenses?deviceSerial= to retrieved queued licenses for a given device." }, "claimDate": { "type": "string", "description": "The date the license was claimed into the organization" }, "activationDate": { "type": "string", "description": "The date the license started burning" }, "expirationDate": { "type": "string", "description": "The date the license will expire" }, "headLicenseId": { "type": "string", "description": "The id of the head license this license is queued behind. If there is no head license, it returns nil." } } }, "description": "Resulting licenses from the move" } } }, "example": { "resultingLicenses": [ { "id": "1234", "licenseType": "SME", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "deviceSerial": "Q234-ABCD-5678", "networkId": "N_24329156", "state": "active", "seatCount": 25, "totalDurationInDays": 425, "durationInDays": 365, "permanentlyQueuedLicenses": [ { "id": "1234", "licenseType": "SME", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "durationInDays": 60 } ], "claimDate": "2019-08-29T12:40:10Z", "activationDate": "2019-09-01T15:01:46Z", "expirationDate": "2020-10-30T15:01:46Z", "headLicenseId": "1234" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Renew SM seats of a license", "tags": [ "organizations", "configure", "licenses" ] } }, "/organizations/{organizationId}/licenses/{licenseId}": { "get": { "description": "Display a license", "operationId": "getOrganizationLicense", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "licenseId", "in": "path", "description": "License ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "License ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "deviceSerial": { "type": "string", "description": "Serial number of the device the license is assigned to" }, "networkId": { "type": "string", "description": "ID of the network the license is assigned to" }, "state": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ], "description": "The state of the license. All queued licenses have a status of `recentlyQueued`." }, "seatCount": { "type": "integer", "description": "The number of seats of the license. Only applicable to SM licenses." }, "totalDurationInDays": { "type": "integer", "description": "The duration of the license plus all permanently queued licenses associated with it" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" }, "permanentlyQueuedLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Permanently queued license ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" } } }, "description": "DEPRECATED List of permanently queued licenses attached to the license. Instead, use /organizations/{organizationId}/licenses?deviceSerial= to retrieved queued licenses for a given device." }, "claimDate": { "type": "string", "description": "The date the license was claimed into the organization" }, "activationDate": { "type": "string", "description": "The date the license started burning" }, "expirationDate": { "type": "string", "description": "The date the license will expire" }, "headLicenseId": { "type": "string", "description": "The id of the head license this license is queued behind. If there is no head license, it returns nil." } } }, "example": { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "deviceSerial": "Q234-ABCD-5678", "networkId": "N_24329156", "state": "active", "seatCount": 25, "totalDurationInDays": 425, "durationInDays": 365, "permanentlyQueuedLicenses": [ { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "durationInDays": 60 } ], "claimDate": "2019-08-29T12:40:10Z", "activationDate": "2019-09-01T15:01:46Z", "expirationDate": "2020-10-30T15:01:46Z", "headLicenseId": "1234" } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:read" ] } ], "summary": "Display a license", "tags": [ "organizations", "configure", "licenses" ] }, "put": { "description": "Update a license", "operationId": "updateOrganizationLicense", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "licenseId", "in": "path", "description": "License ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "deviceSerial": { "type": "string", "nullable": true, "description": "The serial number of the device to assign this license to. Set this to null to unassign the license. If a different license is already active on the device, this parameter will control queueing/dequeuing this license." } }, "example": { "deviceSerial": "Q234-ABCD-5678" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "License ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "deviceSerial": { "type": "string", "description": "Serial number of the device the license is assigned to" }, "networkId": { "type": "string", "description": "ID of the network the license is assigned to" }, "state": { "type": "string", "enum": [ "active", "expired", "expiring", "recentlyQueued", "unused", "unusedActive" ], "description": "The state of the license. All queued licenses have a status of `recentlyQueued`." }, "seatCount": { "type": "integer", "description": "The number of seats of the license. Only applicable to SM licenses." }, "totalDurationInDays": { "type": "integer", "description": "The duration of the license plus all permanently queued licenses associated with it" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" }, "permanentlyQueuedLicenses": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Permanently queued license ID" }, "licenseType": { "type": "string", "description": "License type" }, "licenseKey": { "type": "string", "description": "License key" }, "orderNumber": { "type": "string", "description": "Order number" }, "durationInDays": { "type": "integer", "description": "The duration of the individual license" } } }, "description": "DEPRECATED List of permanently queued licenses attached to the license. Instead, use /organizations/{organizationId}/licenses?deviceSerial= to retrieved queued licenses for a given device." }, "claimDate": { "type": "string", "description": "The date the license was claimed into the organization" }, "activationDate": { "type": "string", "description": "The date the license started burning" }, "expirationDate": { "type": "string", "description": "The date the license will expire" }, "headLicenseId": { "type": "string", "description": "The id of the head license this license is queued behind. If there is no head license, it returns nil." } } }, "example": { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "deviceSerial": "Q234-ABCD-5678", "networkId": "N_24329156", "state": "active", "seatCount": 25, "totalDurationInDays": 425, "durationInDays": 365, "permanentlyQueuedLicenses": [ { "id": "1234", "licenseType": "MX64-ENT", "licenseKey": "Z21234567890", "orderNumber": "4C1234567", "durationInDays": 60 } ], "claimDate": "2019-08-29T12:40:10Z", "activationDate": "2019-09-01T15:01:46Z", "expirationDate": "2020-10-30T15:01:46Z", "headLicenseId": "1234" } } } } }, "security": [ { "oauth2": [ "dashboard:licensing:config:write" ] } ], "summary": "Update a license", "tags": [ "organizations", "configure", "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": "Deprecated. This will always be 'true'." }, "minimumPasswordLength": { "type": "integer", "description": "The minimum number of characters required in admins' passwords." }, "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." }, "enforceLockedIpSessions": { "type": "boolean", "description": "Boolean indicating whether Dashboard sessions are locked to the IP address they were established from. Only included for organizations that support locked-IP sessions." } } }, "example": { "enforcePasswordExpiration": true, "passwordExpirationDays": 90, "enforceDifferentPasswords": true, "numDifferentPasswords": 3, "enforceStrongPasswords": true, "minimumPasswordLength": 12, "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" ] } }, "enforceLockedIpSessions": true } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "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": "Deprecated. Values of 'false' are always ignored." }, "minimumPasswordLength": { "type": "integer", "minimum": 8, "maximum": 16, "description": "Minimum number of characters required in admins' passwords." }, "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." }, "enforceLockedIpSessions": { "type": "boolean", "description": "Boolean indicating whether Dashboard sessions are locked to the IP address from which they were established. Only applicable to organizations that support locked-IP sessions; otherwise the parameter is ignored." }, "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, "minimumPasswordLength": 12, "enforceAccountLockout": true, "accountLockoutAttempts": 3, "enforceIdleTimeout": true, "idleTimeoutMinutes": 30, "enforceTwoFactorAuth": true, "enforceLoginIpRanges": true, "loginIpRanges": [ "192.195.83.1", "192.195.83.255" ], "enforceLockedIpSessions": true, "apiAuthentication": { "ipRestrictionsForKeys": { "enabled": true, "ranges": [ "192.195.83.1", "192.168.33.33" ] } } } } } }, "required": false }, "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": "Deprecated. This will always be 'true'." }, "minimumPasswordLength": { "type": "integer", "description": "The minimum number of characters required in admins' passwords." }, "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." }, "enforceLockedIpSessions": { "type": "boolean", "description": "Boolean indicating whether Dashboard sessions are locked to the IP address they were established from. Only included for organizations that support locked-IP sessions." } } }, "example": { "enforcePasswordExpiration": true, "passwordExpirationDays": 90, "enforceDifferentPasswords": true, "numDifferentPasswords": 3, "enforceStrongPasswords": true, "minimumPasswordLength": 12, "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" ] } }, "enforceLockedIpSessions": true } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "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": "productTypes", "in": "query", "description": "An optional parameter to filter networks by product type. Results will have at least one of the included product types.", "schema": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] } } }, { "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." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List the networks that the user has privileges on in an organization", "tags": [ "organizations", "configure", "networks" ] }, "post": { "description": "Create a network", "operationId": "createOrganizationNetwork", "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 new network" }, "productTypes": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] }, "description": "The product type(s) of the new network. If more than one type is included, the network will be a combined network." }, "tags": { "type": "array", "items": { "type": "string" }, "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", "nullable": true, "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 } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "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": "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" } } }, "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 } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Combine multiple networks into a single network", "tags": [ "organizations", "configure", "networks" ] } }, "/organizations/{organizationId}/networks/moves": { "post": { "description": "Move networks from one organization to another. For more information and caveats around network move limitations see the Network Portability documentation.", "operationId": "createNetworkMove", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network to move" } }, "description": "Network to be moved" }, "organizations": { "type": "object", "properties": { "target": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the organization to which the network is moving" } }, "required": [ "id" ], "description": "The organization to which the network is moving" } }, "description": "Organizations involved in the network move" }, "simulate": { "type": "boolean", "description": "If true, simulates the network move and validates the operation without committing changes. The network will remain in the source organization." } }, "example": { "network": { "id": "N_569142402909112097" }, "organizations": { "target": { "id": "146308" } }, "simulate": false }, "required": [ "network", "organizations" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "moveId": { "type": "string", "description": "ID of the network move operation" }, "initiator": { "type": "object", "properties": { "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the Admin" } }, "description": "Admin who initiated the move" } }, "description": "User who initiated the move" }, "organizations": { "type": "object", "properties": { "source": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the organization from which the network is moved" } }, "description": "The organization from which the the network is moved" }, "target": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the organization to which the network is moving" } }, "description": "The organization to which the network is moving" } }, "description": "Organizations involved in the network move" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network to be moved" } }, "description": "Network to be moved" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the network move initiated" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the network move status last changed" }, "result": { "type": "object", "properties": { "status": { "type": "string", "description": "Current status of the network move operation. Possible values are pending, in progress, failed, completed, and invalidated" }, "reason": { "type": "string", "description": "More information about the status of the network move operation" } }, "description": "Result of the network move operation" } } }, "example": { "moveId": "123456", "initiator": { "admin": { "id": "8590064780" } }, "organizations": { "source": { "id": "146307" }, "target": { "id": "146308" } }, "network": { "id": "N_569142402909112097" }, "createdAt": "1970-01-20T15:57:36.000Z", "lastUpdatedAt": "1970-01-20T15:57:36.000Z", "result": { "status": "failed", "reason": "Cannot move network: Target organization is invalid or inaccessible." } } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Move networks from one organization to another", "tags": [ "organizations", "configure", "networks" ] }, "get": { "description": "Return a list of network move operations in the organization", "operationId": "getNetworkMoves", "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 - 100. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "moveIds", "in": "query", "description": "Array of network move operation IDs to include. If not specified, all network moves will be returned.", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "moveId": { "type": "string", "description": "ID of the network move operation" }, "initiator": { "type": "object", "properties": { "admin": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the Admin" } }, "description": "Admin who initiated the move" } }, "description": "User who initiated the move" }, "organizations": { "type": "object", "properties": { "source": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the organization from which the network is moved" } }, "description": "The organization from which the the network is moved" }, "target": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the organization to which the network is moving" } }, "description": "The organization to which the network is moving" } }, "description": "Organizations involved in the network move" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "ID of the network to be moved" } }, "description": "Network to be moved" }, "createdAt": { "type": "string", "format": "date-time", "description": "Timestamp when the network move initiated" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Timestamp when the network move status last changed" }, "result": { "type": "object", "properties": { "status": { "type": "string", "description": "Current status of the network move operation. Possible values are pending, in progress, failed, completed, and invalidated" }, "reason": { "type": "string", "description": "More information about the status of the network move operation" } }, "description": "Result of the network move operation" } } }, "description": "Array of network move operations" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of items" }, "remaining": { "type": "integer", "description": "Number of items remaining after the current page" } }, "description": "Items metadata relevant to the paginated dataset" } }, "description": "Count metadata" } }, "description": "Pagination metadata" } } }, "example": { "items": [ { "moveId": "123456", "initiator": { "admin": { "id": "8590064780" } }, "organizations": { "source": { "id": "146307" }, "target": { "id": "146308" } }, "network": { "id": "N_569142402909112097" }, "createdAt": "1970-01-20T15:57:36.000Z", "lastUpdatedAt": "1970-01-20T15:57:36.000Z", "result": { "status": "failed", "reason": "Cannot move network: Target organization is invalid or inaccessible." } } ], "meta": { "counts": { "items": { "total": 42, "remaining": 12 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Return a list of network move operations in the organization", "tags": [ "organizations", "configure", "networks", "moves" ] } }, "/organizations/{organizationId}/openapiSpec": { "get": { "description": "Return the OpenAPI Specification of the organization's API documentation in JSON", "operationId": "getOrganizationOpenapiSpec", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "version", "in": "query", "description": "OpenAPI Specification version to return. Default is 2", "schema": { "type": "integer", "enum": [ 2, 3 ] } } ], "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" } ] } } } } } } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the OpenAPI Specification of the organization's API documentation in JSON", "tags": [ "organizations", "monitor", "openapiSpec" ] } }, "/organizations/{organizationId}/policies/assignments/byClient": { "get": { "description": "Get policies for all clients with policies", "operationId": "getOrganizationPoliciesAssignmentsByClient", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 31 days from today.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameter t0. The value must be in seconds and be less than or equal to 31 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 2678400 } }, { "name": "includeUndetectedClients", "in": "query", "description": "Include provisioned clients that have not associated to the network. Default: false", "schema": { "type": "boolean" } }, { "name": "networkIds", "in": "query", "required": true, "description": "Network Ids (minimum: 1, maximum: 30)", "schema": { "type": "array", "items": { "type": "string" } } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of client" }, "clientId": { "type": "string", "description": "ID of client" }, "mac": { "type": "string", "description": "MAC address of client" }, "networkId": { "type": "string", "description": "NetworkID" }, "assigned": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "name of policy" }, "type": { "type": "string", "enum": [ "Allowed", "Blocked", "Group" ], "description": "type of policy" }, "id": { "type": "string", "description": "id of policy" }, "limitTo": { "type": "array", "items": { "type": "object", "properties": { "appliance": { "type": "boolean", "description": "true if policy is applied to the appliance" }, "ssids": { "type": "array", "items": { "type": "object", "properties": { "number": { "type": "integer", "description": "ssid number" } } }, "description": "ssids" } } }, "description": "policy limits" } } }, "description": "Assigned policies" } } } }, "example": [ { "name": "Miles's phone", "clientId": "k74272e", "mac": "22:33:44:55:66:77", "networkId": "N_24329156", "assigned": [ { "name": "My group policy", "type": "Group", "id": "102", "limitTo": [ { "appliance": false, "ssids": [ { "number": 1 } ] } ] } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Get policies for all clients with policies", "tags": [ "organizations", "configure", "policies", "assignments", "byClient" ] } }, "/organizations/{organizationId}/policies/global/firewall/applicationCategories": { "get": { "description": "List application categories with their associated applications", "operationId": "getOrganizationPoliciesGlobalFirewallApplicationCategories", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the application category" }, "name": { "type": "string", "description": "Name of the application category" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Unique identifier for the application" }, "name": { "type": "string", "description": "Name of the application" }, "nbar": { "type": "object", "properties": { "mappings": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "NBAR ID" } } }, "description": "NBAR ID mappings for this application" } }, "description": "NBAR (Network-Based Application Recognition) information" } } }, "description": "List of applications in this category" } } } }, "example": [ { "id": "meraki:layer7/category/1", "name": "Email", "applications": [ { "id": "meraki:layer7/application/4", "name": "Gmail", "nbar": { "mappings": [ { "id": 1658 } ] } } ] } ] } } } }, "summary": "List application categories with their associated applications", "tags": [ "organizations", "configure", "policies", "global", "firewall", "applicationCategories" ] } }, "/organizations/{organizationId}/policies/global/firewall/rulesets": { "get": { "description": "List Organization-Wide Policy Firewall Rulesets", "operationId": "getOrganizationPoliciesGlobalFirewallRulesets", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "rulesetIds", "in": "query", "description": "Filter rulesets by IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "name", "in": "query", "description": "Filter rulesets by name (partial match, case-insensitive). If multiple instances are provided, only the last one is used.", "schema": { "type": "string" } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "rulesetId": { "type": "string", "description": "ID of the ruleset" }, "name": { "type": "string", "description": "Name of the ruleset" }, "description": { "type": "string", "description": "Description of the ruleset" }, "createdAt": { "type": "string", "format": "date-time", "description": "Ruleset creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Ruleset last update time" } } }, "description": "List of Firewall Rulesets" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "rulesetId": "123", "name": "Block Social Media", "description": "Block all Social Media", "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } ], "meta": { "counts": { "items": { "total": 12, "remaining": 2 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List Organization-Wide Policy Firewall Rulesets", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets" ] }, "post": { "description": "Create an Organization-Wide Policy Firewall Ruleset", "operationId": "createOrganizationPoliciesGlobalFirewallRuleset", "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 the firewall ruleset" }, "description": { "type": "string", "description": "Description of the firewall ruleset" } }, "example": { "name": "Block Social Media", "description": "Block all Social Media" }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rulesetId": { "type": "string", "description": "ID of the ruleset" }, "name": { "type": "string", "description": "Name of the ruleset" }, "description": { "type": "string", "description": "Description of the ruleset" }, "createdAt": { "type": "string", "format": "date-time", "description": "Ruleset creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Ruleset last update time" } } }, "example": { "rulesetId": "123", "name": "Block Social Media", "description": "Block all Social Media", "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Create an Organization-Wide Policy Firewall Ruleset", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets" ] } }, "/organizations/{organizationId}/policies/global/firewall/rulesets/rules": { "post": { "description": "Create an Organization-Wide Policy Firewall Rule", "operationId": "createOrganizationPoliciesGlobalFirewallRulesetsRule", "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 the firewall rule" }, "rulesetId": { "type": "string", "description": "Firewall ruleset ID to associate the rule with" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "Rule policy - allow or deny traffic" }, "enabled": { "type": "boolean", "description": "Whether the rule is enabled" }, "priority": { "type": "integer", "description": "Rule priority (lower numbers = higher priority)" }, "description": { "type": "string", "description": "Description of the firewall rule" }, "sources": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string", "enum": [ "addressRanges", "any", "applianceVlans", "policyObjectGroups", "policyObjects", "ports" ] }, "description": "Source match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } }, "required": [ "id" ] }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } }, "required": [ "id" ] }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } }, "required": [ "interfaceId" ] }, "description": "Appliance VLANs" } }, "description": "Source criteria values (not present if 'any' is in matchCriteria)" } }, "description": "Source traffic criteria. Each source or destination bloc is capped separately per rule at 100 total segment values. The count is segments_values_count: the sum of all values across every segment type in that bloc. Ports use a separate cap of 100." }, "destinations": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string", "enum": [ "addressRanges", "any", "applianceVlans", "applicationCategories", "applications", "policyObjectGroups", "policyObjects", "ports", "services" ] }, "description": "Destination match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "services": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Protocol (tcp, udp, etc)" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" } }, "required": [ "protocol", "ports" ] }, "description": "Protocol and port services" }, "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" }, "name": { "type": "string", "description": "Category name" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } }, "required": [ "id" ] }, "description": "Applications in this category" } }, "required": [ "id" ] }, "description": "Application categories" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } }, "required": [ "id" ] }, "description": "Applications" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } }, "required": [ "id" ] }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } }, "required": [ "id" ] }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } }, "required": [ "interfaceId" ] }, "description": "Appliance VLANs" } }, "description": "Destination criteria values (not present if 'any' is in matchCriteria)" } }, "description": "Destination traffic criteria. Each source or destination bloc is capped separately per rule at 100 total segment values. The count is segments_values_count: the sum of all values across every segment type in that bloc. Ports use a separate cap of 100." } }, "example": { "name": "Allow developers", "rulesetId": "32", "policy": "deny", "enabled": true, "priority": 100, "description": "This is rule 1", "sources": { "matchCriteria": [ "addressRanges", "ports", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ] } }, "destinations": { "matchCriteria": [ "addressRanges", "services", "applicationCategories", "applications", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "services": [ { "protocol": "tcp", "ports": [ "80", "443" ] } ], "applicationCategories": [ { "id": "meraki:layer7/category/24", "name": "Advertising", "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ] } ], "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ] } } }, "required": [ "name", "rulesetId", "policy", "sources", "destinations" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "ID of the firewall rule" }, "name": { "type": "string", "description": "Name of the firewall rule" }, "rulesetId": { "type": "string", "description": "Firewall ruleset ID" }, "policy": { "type": "string", "description": "Rule policy (allow or deny)" }, "enabled": { "type": "boolean", "description": "Whether the rule is enabled" }, "priority": { "type": "integer", "description": "Rule priority" }, "description": { "type": "string", "description": "Description of the firewall rule" }, "sources": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Source match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Source criteria values" } }, "description": "Source traffic criteria" }, "destinations": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Destination match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "services": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Protocol (tcp, udp, etc)" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" } } }, "description": "Protocol and port services" }, "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" } } }, "description": "Application categories" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } } }, "description": "Applications" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "countries": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "enum": [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "XK", "YE", "YT", "ZA", "ZM", "ZW" ], "description": "Country code (ISO 3166-1 alpha-2)" } } }, "description": "Countries" }, "fqdns": { "type": "array", "items": { "type": "string" }, "description": "Fully qualified domain names or wildcard patterns" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Destination criteria values" } }, "description": "Destination traffic criteria" }, "createdAt": { "type": "string", "format": "date-time", "description": "Rule creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Rule last update time" } } }, "example": { "ruleId": "123", "name": "Allow developers", "rulesetId": "32", "policy": "deny", "enabled": true, "priority": 100, "description": "This is rule 1", "sources": { "matchCriteria": [ "addressRanges", "ports", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "destinations": { "matchCriteria": [ "addressRanges", "services", "applicationCategories", "applications", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "services": [ { "protocol": "tcp", "ports": [ "80", "443" ] } ], "applicationCategories": [ { "id": "meraki:layer7/category/24" } ], "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "countries": [ { "code": "US" } ], "fqdns": [ "*.example.com" ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Create an Organization-Wide Policy Firewall Rule", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets", "rules" ] }, "get": { "description": "List Organization-Wide Policy Firewall Rules", "operationId": "getOrganizationPoliciesGlobalFirewallRulesetsRules", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "rulesetIds", "in": "query", "description": "Filter rules by firewall ruleset IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "ruleIds", "in": "query", "description": "Filter rules by rule IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "ID of the firewall rule" }, "name": { "type": "string", "description": "Name of the firewall rule" }, "rulesetId": { "type": "string", "description": "Firewall ruleset ID" }, "policy": { "type": "string", "description": "Rule policy (allow or deny)" }, "enabled": { "type": "boolean", "description": "Whether the rule is enabled" }, "priority": { "type": "integer", "description": "Rule priority" }, "description": { "type": "string", "description": "Description of the firewall rule" }, "sources": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Source match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Source criteria values" } }, "description": "Source traffic criteria" }, "destinations": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Destination match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "services": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Protocol (tcp, udp, etc)" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" } } }, "description": "Protocol and port services" }, "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" } } }, "description": "Application categories" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } } }, "description": "Applications" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "countries": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "enum": [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "XK", "YE", "YT", "ZA", "ZM", "ZW" ], "description": "Country code (ISO 3166-1 alpha-2)" } } }, "description": "Countries" }, "fqdns": { "type": "array", "items": { "type": "string" }, "description": "Fully qualified domain names or wildcard patterns" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Destination criteria values" } }, "description": "Destination traffic criteria" }, "createdAt": { "type": "string", "format": "date-time", "description": "Rule creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Rule last update time" } } }, "description": "List of Firewall Rules" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "ruleId": "123", "name": "Allow developers", "rulesetId": "32", "policy": "deny", "enabled": true, "priority": 100, "description": "This is rule 1", "sources": { "matchCriteria": [ "addressRanges", "ports", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "destinations": { "matchCriteria": [ "addressRanges", "services", "applicationCategories", "applications", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "services": [ { "protocol": "tcp", "ports": [ "80", "443" ] } ], "applicationCategories": [ { "id": "meraki:layer7/category/24" } ], "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "countries": [ { "code": "US" } ], "fqdns": [ "*.example.com" ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } ], "meta": { "counts": { "items": { "total": 25, "remaining": 15 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List Organization-Wide Policy Firewall Rules", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets", "rules" ] } }, "/organizations/{organizationId}/policies/global/firewall/rulesets/rules/{ruleId}": { "delete": { "description": "Delete an Organization-Wide Policy Firewall Rule", "operationId": "deleteOrganizationPoliciesGlobalFirewallRulesetsRule", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "ruleId", "in": "path", "description": "Rule ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Delete an Organization-Wide Policy Firewall Rule", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets", "rules" ] }, "put": { "description": "Update an Organization-Wide Policy Firewall Rule", "operationId": "updateOrganizationPoliciesGlobalFirewallRulesetsRule", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "ruleId", "in": "path", "description": "Rule ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the firewall rule" }, "rulesetId": { "type": "string", "description": "Firewall ruleset ID to associate the rule with" }, "policy": { "type": "string", "enum": [ "allow", "deny" ], "description": "Rule policy - allow or deny traffic" }, "enabled": { "type": "boolean", "description": "Whether the rule is enabled" }, "priority": { "type": "integer", "description": "Rule priority (lower numbers = higher priority)" }, "description": { "type": "string", "description": "Description of the firewall rule" }, "sources": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string", "enum": [ "addressRanges", "any", "applianceVlans", "policyObjectGroups", "policyObjects", "ports" ] }, "description": "Source match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } }, "required": [ "id" ] }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } }, "required": [ "id" ] }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } }, "required": [ "interfaceId" ] }, "description": "Appliance VLANs" } }, "description": "Source criteria values (not present if 'any' is in matchCriteria)" } }, "description": "Source traffic criteria. Each source or destination bloc is capped separately per rule at 100 total segment values. The count is segments_values_count: the sum of all values across every segment type in that bloc. Ports use a separate cap of 100." }, "destinations": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string", "enum": [ "addressRanges", "any", "applianceVlans", "applicationCategories", "applications", "policyObjectGroups", "policyObjects", "ports", "services" ] }, "description": "Destination match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "services": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Protocol (tcp, udp, etc)" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" } }, "required": [ "protocol", "ports" ] }, "description": "Protocol and port services" }, "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" }, "name": { "type": "string", "description": "Category name" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } }, "required": [ "id" ] }, "description": "Applications in this category" } }, "required": [ "id" ] }, "description": "Application categories" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } }, "required": [ "id" ] }, "description": "Applications" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } }, "required": [ "id" ] }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } }, "required": [ "id" ] }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } }, "required": [ "interfaceId" ] }, "description": "Appliance VLANs" } }, "description": "Destination criteria values (not present if 'any' is in matchCriteria)" } }, "description": "Destination traffic criteria. Each source or destination bloc is capped separately per rule at 100 total segment values. The count is segments_values_count: the sum of all values across every segment type in that bloc. Ports use a separate cap of 100." } }, "example": { "name": "Allow developers", "rulesetId": "32", "policy": "deny", "enabled": true, "priority": 100, "description": "This is rule 1", "sources": { "matchCriteria": [ "addressRanges", "ports", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ] } }, "destinations": { "matchCriteria": [ "addressRanges", "services", "applicationCategories", "applications", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "services": [ { "protocol": "tcp", "ports": [ "80", "443" ] } ], "applicationCategories": [ { "id": "meraki:layer7/category/24", "name": "Advertising", "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ] } ], "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ] } } } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "ruleId": { "type": "string", "description": "ID of the firewall rule" }, "name": { "type": "string", "description": "Name of the firewall rule" }, "rulesetId": { "type": "string", "description": "Firewall ruleset ID" }, "policy": { "type": "string", "description": "Rule policy (allow or deny)" }, "enabled": { "type": "boolean", "description": "Whether the rule is enabled" }, "priority": { "type": "integer", "description": "Rule priority" }, "description": { "type": "string", "description": "Description of the firewall rule" }, "sources": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Source match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Source criteria values" } }, "description": "Source traffic criteria" }, "destinations": { "type": "object", "properties": { "matchCriteria": { "type": "array", "items": { "type": "string" }, "description": "Destination match criteria types" }, "criteria": { "type": "object", "properties": { "addressRanges": { "type": "array", "items": { "type": "string" }, "description": "Address ranges or addresses" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" }, "services": { "type": "array", "items": { "type": "object", "properties": { "protocol": { "type": "string", "description": "Protocol (tcp, udp, etc)" }, "ports": { "type": "array", "items": { "type": "string" }, "description": "Port numbers or ranges" } } }, "description": "Protocol and port services" }, "applicationCategories": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" } } }, "description": "Application categories" }, "applications": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Application ID" }, "name": { "type": "string", "description": "Application name" } } }, "description": "Applications" }, "policyObjects": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" } } }, "description": "Policy objects" }, "policyObjectGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object group ID" } } }, "description": "Policy object groups" }, "applianceVlans": { "type": "array", "items": { "type": "object", "properties": { "interfaceId": { "type": "string", "description": "Interface ID" } } }, "description": "Appliance VLANs" }, "countries": { "type": "array", "items": { "type": "object", "properties": { "code": { "type": "string", "enum": [ "AD", "AE", "AF", "AG", "AI", "AL", "AM", "AN", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "XK", "YE", "YT", "ZA", "ZM", "ZW" ], "description": "Country code (ISO 3166-1 alpha-2)" } } }, "description": "Countries" }, "fqdns": { "type": "array", "items": { "type": "string" }, "description": "Fully qualified domain names or wildcard patterns" }, "siteSpecificVlans": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "VLAN ID (1-4094)" }, "address": { "type": "object", "properties": { "offsets": { "type": "object", "properties": { "ipv4": { "type": "integer", "description": "IPv4 address offset. Added to the base network address to determine the host address within the subnet." }, "ipv6": { "type": "string", "description": "IPv6 interface identifier offset in colon-separated hex format. Appended to the /64 network prefix." } }, "description": "IP address offsets" } }, "description": "Address offsets added to the VLAN's base network address to form the target host address" } } }, "description": "Site-specific VLANs with address offset configuration. Maximum 100 items." } }, "description": "Destination criteria values" } }, "description": "Destination traffic criteria" }, "createdAt": { "type": "string", "format": "date-time", "description": "Rule creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Rule last update time" } } }, "example": { "ruleId": "123", "name": "Allow developers", "rulesetId": "32", "policy": "deny", "enabled": true, "priority": 100, "description": "This is rule 1", "sources": { "matchCriteria": [ "addressRanges", "ports", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "destinations": { "matchCriteria": [ "addressRanges", "services", "applicationCategories", "applications", "policyObjects", "policyObjectGroups", "applianceVlans" ], "criteria": { "addressRanges": [ "1.1.1.1", "2.2.2.2" ], "ports": [ "22", "42-46" ], "services": [ { "protocol": "tcp", "ports": [ "80", "443" ] } ], "applicationCategories": [ { "id": "meraki:layer7/category/24" } ], "applications": [ { "id": "meraki:layer7/application/5", "name": "Advertising.com" } ], "policyObjects": [ { "id": "23" } ], "policyObjectGroups": [ { "id": "45" } ], "applianceVlans": [ { "interfaceId": "L_123456789012345678_vlan_200" } ], "countries": [ { "code": "US" } ], "fqdns": [ "*.example.com" ], "siteSpecificVlans": [ { "id": 100, "address": { "offsets": { "ipv4": 25, "ipv6": "0:ff:fe01:0" } } } ] } }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an Organization-Wide Policy Firewall Rule", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets", "rules" ] } }, "/organizations/{organizationId}/policies/global/firewall/rulesets/{rulesetId}": { "put": { "description": "Update an Organization-Wide Policy Firewall Ruleset", "operationId": "updateOrganizationPoliciesGlobalFirewallRuleset", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "rulesetId", "in": "path", "description": "Ruleset ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the firewall ruleset" }, "description": { "type": "string", "description": "Description of the firewall ruleset" } }, "example": { "name": "Block Social Media", "description": "Block all Social Media" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "rulesetId": { "type": "string", "description": "ID of the ruleset" }, "name": { "type": "string", "description": "Name of the ruleset" }, "description": { "type": "string", "description": "Description of the ruleset" }, "createdAt": { "type": "string", "format": "date-time", "description": "Ruleset creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Ruleset last update time" } } }, "example": { "rulesetId": "123", "name": "Block Social Media", "description": "Block all Social Media", "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an Organization-Wide Policy Firewall Ruleset", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets" ] }, "delete": { "description": "Delete an Organization-Wide Policy Firewall Ruleset", "operationId": "deleteOrganizationPoliciesGlobalFirewallRuleset", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "rulesetId", "in": "path", "description": "Ruleset ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Delete an Organization-Wide Policy Firewall Ruleset", "tags": [ "organizations", "configure", "policies", "global", "firewall", "rulesets" ] } }, "/organizations/{organizationId}/policies/global/group/policies": { "get": { "description": "List Organization-Wide Policies", "operationId": "getOrganizationPoliciesGlobalGroupPolicies", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "name", "in": "query", "description": "Filter policies by name (partial match, case-insensitive). If multiple instances are provided, only the last one is used.", "schema": { "type": "string" } }, { "name": "policyIds", "in": "query", "description": "Filter policies by IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "policyId": { "type": "string", "description": "ID of the Policy" }, "name": { "type": "string", "description": "Name of the Policy" }, "description": { "type": "string", "description": "Description of the Policy" }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "Group number" } }, "description": "Group information used to track the policy across different networks and devices in the organization" }, "createdAt": { "type": "string", "format": "date-time", "description": "Policy creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Policy last update time" } } }, "description": "List of Policies" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "policyId": "123", "name": "My policy", "description": "My policy description", "group": { "number": 100 }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } ], "meta": { "counts": { "items": { "total": 12, "remaining": 2 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List Organization-Wide Policies", "tags": [ "organizations", "configure", "policies", "global", "group" ] }, "post": { "description": "Create an Organization-Wide Policy", "operationId": "createOrganizationPoliciesGlobalGroupPolicy", "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 the policy" }, "description": { "type": "string", "description": "Description of the policy" } }, "example": { "name": "My policy", "description": "My policy description" }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "policyId": { "type": "string", "description": "ID of the Policy" }, "name": { "type": "string", "description": "Name of the Policy" }, "description": { "type": "string", "description": "Description of the Policy" }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "Group number" } }, "description": "Group information used to track the policy across different networks and devices in the organization" }, "createdAt": { "type": "string", "format": "date-time", "description": "Policy creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Policy last update time" } } }, "example": { "policyId": "123", "name": "My policy", "description": "My policy description", "group": { "number": 100 }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Create an Organization-Wide Policy", "tags": [ "organizations", "configure", "policies", "global", "group" ] } }, "/organizations/{organizationId}/policies/global/group/policies/adaptivePolicyGroups/assign": { "post": { "description": "Assign adaptive policy groups to a policy", "operationId": "assignOrganizationPoliciesGlobalGroupPoliciesAdaptivePolicyGroups", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy ID" } }, "description": "Policy to assign adaptive policy groups to" }, "adaptivePolicyGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Adaptive policy group ID" } }, "required": [ "id" ] }, "description": "Adaptive policy groups to assign" } }, "example": { "policy": { "id": "123" }, "adaptivePolicyGroups": [ { "id": "1234" } ] }, "required": [ "policy", "adaptivePolicyGroups" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Whether the operation was successful" } } }, "example": { "success": true } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Assign adaptive policy groups to a policy", "tags": [ "organizations", "configure", "policies", "global", "group", "adaptivePolicyGroups" ] } }, "/organizations/{organizationId}/policies/global/group/policies/adaptivePolicyGroups/assignments": { "get": { "description": "List adaptive policy group assignments", "operationId": "getOrganizationPoliciesGlobalGroupPoliciesAdaptivePolicyGroupsAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "assignmentIds", "in": "query", "description": "Filter assignments by assignment IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "policyIds", "in": "query", "description": "Filter assignments by policy IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "adaptivePolicyGroupIds", "in": "query", "description": "Filter assignments by adaptive policy group IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the assignment" }, "policyId": { "type": "string", "description": "ID of the assigned policy" }, "adaptivePolicyGroupId": { "type": "string", "description": "Adaptive policy group ID" } } }, "description": "List of Adaptive Policy Group Assignments" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "assignmentId": "assignment_123", "policyId": "policy_456", "adaptivePolicyGroupId": "1234" } ], "meta": { "counts": { "items": { "total": 25, "remaining": 15 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List adaptive policy group assignments", "tags": [ "organizations", "configure", "policies", "global", "group", "adaptivePolicyGroups", "assignments" ] } }, "/organizations/{organizationId}/policies/global/group/policies/adaptivePolicyGroups/remove": { "post": { "description": "Remove adaptive policy groups from a policy", "operationId": "removeOrganizationPoliciesGlobalGroupPoliciesAdaptivePolicyGroups", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "policy": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy ID" } }, "description": "Policy to remove adaptive policy groups from" }, "adaptivePolicyGroups": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Adaptive policy group ID" } }, "required": [ "id" ] }, "description": "Adaptive policy groups to remove" } }, "example": { "policy": { "id": "123" }, "adaptivePolicyGroups": [ { "id": "1234" } ] }, "required": [ "policy", "adaptivePolicyGroups" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "success": { "type": "boolean", "description": "Whether the operation was successful" } } }, "example": { "success": true } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Remove adaptive policy groups from a policy", "tags": [ "organizations", "configure", "policies", "global", "group", "adaptivePolicyGroups" ] } }, "/organizations/{organizationId}/policies/global/group/policies/firewall/rulesets/assignments": { "get": { "description": "List Organization-Wide Policy Ruleset Assignments", "operationId": "getOrganizationPoliciesGlobalGroupPoliciesFirewallRulesetsAssignments", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "rulesetIds", "in": "query", "description": "Filter assignments by ruleset IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "policyIds", "in": "query", "description": "Filter assignments by policy IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "assignmentIds", "in": "query", "description": "Filter assignments by assignment IDs", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 100. Default is 100.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the ruleset assignment" }, "rulesetId": { "type": "string", "description": "ID of the ruleset being assigned" }, "policyId": { "type": "string", "description": "ID of the policy the ruleset is assigned to" }, "priority": { "type": "integer", "description": "Priority of the ruleset assignment (higher numbers = higher priority)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Assignment creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Assignment last update time" } } }, "description": "List of Ruleset Assignments" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "assignmentId": "123", "rulesetId": "456", "policyId": "789", "priority": 1, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } ], "meta": { "counts": { "items": { "total": 15, "remaining": 5 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "List Organization-Wide Policy Ruleset Assignments", "tags": [ "organizations", "configure", "policies", "global", "group", "firewall", "rulesets", "assignments" ] }, "post": { "description": "Create an Organization-Wide Policy Ruleset Assignment", "operationId": "createOrganizationPoliciesGlobalGroupPoliciesFirewallRulesetsAssignment", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rulesetId": { "type": "string", "description": "ID of the ruleset to assign" }, "policyId": { "type": "string", "description": "ID of the policy to assign the ruleset to" }, "priority": { "type": "integer", "description": "Priority of the ruleset assignment (lower numbers = higher priority)", "default": 1 } }, "example": { "rulesetId": "456", "policyId": "789", "priority": 1 }, "required": [ "rulesetId", "policyId" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the ruleset assignment" }, "rulesetId": { "type": "string", "description": "ID of the ruleset being assigned" }, "policyId": { "type": "string", "description": "ID of the policy the ruleset is assigned to" }, "priority": { "type": "integer", "description": "Priority of the ruleset assignment (higher numbers = higher priority)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Assignment creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Assignment last update time" } } }, "example": { "assignmentId": "123", "rulesetId": "456", "policyId": "789", "priority": 1, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Create an Organization-Wide Policy Ruleset Assignment", "tags": [ "organizations", "configure", "policies", "global", "group", "firewall", "rulesets", "assignments" ] } }, "/organizations/{organizationId}/policies/global/group/policies/firewall/rulesets/assignments/{assignmentId}": { "put": { "description": "Update an Organization-Wide Policy Ruleset Assignment", "operationId": "updateOrganizationPoliciesGlobalGroupPoliciesFirewallRulesetsAssignment", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "assignmentId", "in": "path", "description": "Assignment ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "rulesetId": { "type": "string", "description": "ID of the ruleset to assign" }, "policyId": { "type": "string", "description": "ID of the policy to assign the ruleset to" }, "priority": { "type": "integer", "description": "Priority of the ruleset assignment (lower numbers = higher priority)" } }, "example": { "rulesetId": "456", "policyId": "789", "priority": 1 } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "assignmentId": { "type": "string", "description": "ID of the ruleset assignment" }, "rulesetId": { "type": "string", "description": "ID of the ruleset being assigned" }, "policyId": { "type": "string", "description": "ID of the policy the ruleset is assigned to" }, "priority": { "type": "integer", "description": "Priority of the ruleset assignment (higher numbers = higher priority)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Assignment creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Assignment last update time" } } }, "example": { "assignmentId": "123", "rulesetId": "456", "policyId": "789", "priority": 1, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an Organization-Wide Policy Ruleset Assignment", "tags": [ "organizations", "configure", "policies", "global", "group", "firewall", "rulesets", "assignments" ] }, "delete": { "description": "Delete an Organization-Wide Policy Ruleset Assignment", "operationId": "deleteOrganizationPoliciesGlobalGroupPoliciesFirewallRulesetsAssignment", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "assignmentId", "in": "path", "description": "Assignment ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Delete an Organization-Wide Policy Ruleset Assignment", "tags": [ "organizations", "configure", "policies", "global", "group", "firewall", "rulesets", "assignments" ] } }, "/organizations/{organizationId}/policies/global/group/policies/{policyId}": { "put": { "description": "Update an Organization-Wide Policy", "operationId": "updateOrganizationPoliciesGlobalGroupPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "policyId", "in": "path", "description": "Policy ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the policy" }, "description": { "type": "string", "description": "Description of the policy" } }, "example": { "name": "My policy", "description": "My policy description" } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "policyId": { "type": "string", "description": "ID of the Policy" }, "name": { "type": "string", "description": "Name of the Policy" }, "description": { "type": "string", "description": "Description of the Policy" }, "group": { "type": "object", "properties": { "number": { "type": "integer", "description": "Group number" } }, "description": "Group information used to track the policy across different networks and devices in the organization" }, "createdAt": { "type": "string", "format": "date-time", "description": "Policy creation time" }, "lastUpdatedAt": { "type": "string", "format": "date-time", "description": "Policy last update time" } } }, "example": { "policyId": "123", "name": "My policy", "description": "My policy description", "group": { "number": 100 }, "createdAt": "2021-01-01T00:00:00Z", "lastUpdatedAt": "2021-01-01T00:00:00Z" } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Update an Organization-Wide Policy", "tags": [ "organizations", "configure", "policies", "global", "group" ] }, "delete": { "description": "Delete an Organization-Wide Policy", "operationId": "deleteOrganizationPoliciesGlobalGroupPolicy", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "policyId", "in": "path", "description": "Policy ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Delete an Organization-Wide Policy", "tags": [ "organizations", "configure", "policies", "global", "group" ] } }, "/organizations/{organizationId}/policyObjects": { "get": { "description": "Lists Policy Objects belonging to the organization.", "operationId": "getOrganizationPolicyObjects", "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 - 5000. Default is 5000.", "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": "Policy object ID" }, "name": { "type": "string", "description": "Name of policy object (alphanumeric, space, dash, or underscore characters only)." }, "category": { "type": "string", "description": "Category of a policy object (one of: adaptivePolicy, network)" }, "type": { "type": "string", "enum": [ "adaptivePolicyIpv4Cidr", "cidr", "fqdn" ], "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn)" }, "cidr": { "type": "string", "description": "CIDR Value of a policy object" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to." }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of the networks that use the policy object." } } } }, "example": [ { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "network", "type": "cidr", "cidr": "10.0.0.0/24", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "groupIds": [ "8" ], "networkIds": [ "L_12345", "N_123456" ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Lists Policy Objects belonging to the organization.", "tags": [ "organizations", "configure", "policyObjects" ] }, "post": { "description": "Creates a new Policy Object. Note: type `ipAndMask` is deprecated; use `cidr`.", "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", "enum": [ "adaptivePolicyIpv4Cidr", "cidr", "fqdn" ], "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn). DEPRECATED: `ipAndMask` is deprecated and will be removed in a future release. Use `cidr` instead." }, "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\"). Used only with deprecated `type=ipAndMask`." }, "ip": { "type": "string", "description": "IP Address of a policy object (e.g. \"1.2.3.4\"). Used only with deprecated `type=ipAndMask`." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to" } }, "example": { "name": "Web Servers - Datacenter 10", "category": "network", "type": "cidr", "cidr": "10.0.0.0/24", "fqdn": "example.com", "mask": "255.255.0.0", "ip": "1.2.3.4", "groupIds": [ "8" ] }, "required": [ "name", "category", "type" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of policy object (alphanumeric, space, dash, or underscore characters only)." }, "category": { "type": "string", "description": "Category of a policy object (one of: adaptivePolicy, network)" }, "type": { "type": "string", "enum": [ "adaptivePolicyIpv4Cidr", "cidr", "fqdn" ], "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn)" }, "cidr": { "type": "string", "description": "CIDR Value of a policy object" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to." }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of the networks that use the policy object." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "network", "type": "cidr", "cidr": "10.0.0.0/24", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "groupIds": [ "8" ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "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", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of the Policy object group." }, "category": { "type": "string", "description": "Type of object groups. (NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "objectIds": { "type": "array", "items": { "type": "integer" }, "description": "Policy objects associated with Network Object Group or Port Object Group" }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "Network ID's associated with the policy objects." } } } }, "example": [ { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "NetworkObjectGroup", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "objectIds": [ 100 ], "networkIds": [ "L_12345", "N_123456" ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Lists Policy Object Groups belonging to the organization.", "tags": [ "organizations", "configure", "policyObjects", "groups" ] }, "post": { "description": "Creates a new Policy Object Group.", "operationId": "createOrganizationPolicyObjectsGroup", "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": "A name for the group of network addresses, unique within the organization (alphanumeric, space, dash, or underscore characters only)" }, "category": { "type": "string", "description": "Category of a policy object group (one of: NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)" }, "objectIds": { "type": "array", "items": { "type": "string" }, "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", "category": "NetworkObjectGroup", "objectIds": [ "100" ] }, "required": [ "name" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of the Policy object group." }, "category": { "type": "string", "description": "Type of object groups. (NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "objectIds": { "type": "array", "items": { "type": "integer" }, "description": "Policy objects associated with Network Object Group or Port Object Group" }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "Network ID's associated with the policy objects." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "NetworkObjectGroup", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "objectIds": [ 100 ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Creates a new Policy Object Group.", "tags": [ "organizations", "configure", "policyObjects", "groups" ] } }, "/organizations/{organizationId}/policyObjects/groups/{policyObjectGroupId}": { "get": { "description": "Shows details of a Policy Object Group.", "operationId": "getOrganizationPolicyObjectsGroup", "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": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of the Policy object group." }, "category": { "type": "string", "description": "Type of object groups. (NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "objectIds": { "type": "array", "items": { "type": "integer" }, "description": "Policy objects associated with Network Object Group or Port Object Group" }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "Network ID's associated with the policy objects." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "NetworkObjectGroup", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "objectIds": [ 100 ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Shows details of a Policy Object Group.", "tags": [ "organizations", "configure", "policyObjects", "groups" ] }, "put": { "description": "Updates a Policy Object Group.", "operationId": "updateOrganizationPolicyObjectsGroup", "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 } ], "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": "string" }, "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": [ "100" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of the Policy object group." }, "category": { "type": "string", "description": "Type of object groups. (NetworkObjectGroup, GeoLocationGroup, PortObjectGroup, ApplicationGroup)" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "objectIds": { "type": "array", "items": { "type": "integer" }, "description": "Policy objects associated with Network Object Group or Port Object Group" }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "Network ID's associated with the policy objects." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "NetworkObjectGroup", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "objectIds": [ 100 ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "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" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "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": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "policyObjectId", "in": "path", "description": "Policy object ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of policy object (alphanumeric, space, dash, or underscore characters only)." }, "category": { "type": "string", "description": "Category of a policy object (one of: adaptivePolicy, network)" }, "type": { "type": "string", "enum": [ "adaptivePolicyIpv4Cidr", "cidr", "fqdn" ], "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn)" }, "cidr": { "type": "string", "description": "CIDR Value of a policy object" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to." }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of the networks that use the policy object." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "network", "type": "cidr", "cidr": "10.0.0.0/24", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "groupIds": [ "8" ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:read" ] } ], "summary": "Shows details of a Policy Object.", "tags": [ "organizations", "configure", "policyObjects" ] }, "put": { "description": "Updates a Policy Object. Note: type `ipAndMask` is deprecated; use `cidr`.", "operationId": "updateOrganizationPolicyObject", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "policyObjectId", "in": "path", "description": "Policy object 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)" }, "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\"). Used only with deprecated `type=ipAndMask`." }, "ip": { "type": "string", "description": "IP Address of a policy object (e.g. \"1.2.3.4\"). Used only with deprecated `type=ipAndMask`." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to" } }, "example": { "name": "Web Servers - Datacenter 10", "cidr": "10.0.0.0/24", "fqdn": "example.com", "mask": "255.255.0.0", "ip": "1.2.3.4", "groupIds": [ "8" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Policy object ID" }, "name": { "type": "string", "description": "Name of policy object (alphanumeric, space, dash, or underscore characters only)." }, "category": { "type": "string", "description": "Category of a policy object (one of: adaptivePolicy, network)" }, "type": { "type": "string", "enum": [ "adaptivePolicyIpv4Cidr", "cidr", "fqdn" ], "description": "Type of a policy object (one of: adaptivePolicyIpv4Cidr, cidr, fqdn)" }, "cidr": { "type": "string", "description": "CIDR Value of a policy object" }, "createdAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object creation." }, "updatedAt": { "type": "string", "format": "date-time", "description": "Time Stamp of policy object updation." }, "groupIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of policy object groups the policy object belongs to." }, "networkIds": { "type": "array", "items": { "type": "string" }, "description": "The IDs of the networks that use the policy object." } } }, "example": { "id": "1234", "name": "Web Servers - Datacenter 10", "category": "network", "type": "cidr", "cidr": "10.0.0.0/24", "createdAt": "2018-05-12T00:00:00Z", "updatedAt": "2018-05-12T00:00:00Z", "groupIds": [ "8" ], "networkIds": [ "L_12345", "N_123456" ] } } } } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "summary": "Updates a Policy Object", "tags": [ "organizations", "configure", "policyObjects" ] }, "delete": { "description": "Deletes a Policy Object.", "operationId": "deleteOrganizationPolicyObject", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "policyObjectId", "in": "path", "description": "Policy object ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:general:config:write" ] } ], "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" }, "spInitiated": { "type": "object", "properties": { "subdomain": { "type": "string", "description": "Organization's unique SSO identifier" }, "idpId": { "type": "string", "description": "SAML IdP ID for SP-Initiated SSO Authentication" } }, "description": "SP-Initiated SSO settings" } } }, "example": { "enabled": true, "spInitiated": { "subdomain": "example_subdomain", "idpId": "uu3H_bx28Nnd" } } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "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", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Boolean for updating SAML SSO enabled settings." }, "spInitiated": { "type": "object", "properties": { "subdomain": { "type": "string", "description": "Organization's unique SSO identifier" }, "idpId": { "type": "string", "description": "SAML IdP ID for SP-Initiated SSO Authentication" } }, "description": "SP-Initiated SSO settings" } }, "example": { "enabled": true, "spInitiated": { "subdomain": "example_subdomain", "idpId": "uu3H_bx28Nnd" } } } } }, "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" }, "spInitiated": { "type": "object", "properties": { "subdomain": { "type": "string", "description": "Organization's unique SSO identifier" }, "idpId": { "type": "string", "description": "SAML IdP ID for SP-Initiated SSO Authentication" } }, "description": "SP-Initiated SSO settings" } } }, "example": { "enabled": true, "spInitiated": { "subdomain": "example_subdomain", "idpId": "uu3H_bx28Nnd" } } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "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", "schema": { "type": "string" }, "required": true } ], "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)" }, "visionConsumerUrl": { "type": "string", "description": "URL that is consuming SAML Identity Provider (IdP) for Meraki Vision Portal" }, "x509certSha1Fingerprint": { "type": "string", "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "visionConsumerUrl": "https://n7.meraki.com/saml/login/XXX?appTarget=MerakiVision", "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "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." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" }, "required": [ "x509certSha1Fingerprint" ] } } }, "required": true }, "responses": { "201": { "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)" }, "visionConsumerUrl": { "type": "string", "description": "URL that is consuming SAML Identity Provider (IdP) for Meraki Vision Portal" }, "x509certSha1Fingerprint": { "type": "string", "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "visionConsumerUrl": "https://n7.meraki.com/saml/login/XXX?appTarget=MerakiVision", "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "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." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" } } } }, "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)" }, "visionConsumerUrl": { "type": "string", "description": "URL that is consuming SAML Identity Provider (IdP) for Meraki Vision Portal" }, "x509certSha1Fingerprint": { "type": "string", "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "visionConsumerUrl": "https://n7.meraki.com/saml/login/XXX?appTarget=MerakiVision", "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "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)" }, "visionConsumerUrl": { "type": "string", "description": "URL that is consuming SAML Identity Provider (IdP) for Meraki Vision Portal" }, "x509certSha1Fingerprint": { "type": "string", "description": "Fingerprint (SHA1) of the SAML certificate provided by your Identity Provider (IdP). This will be used for encryption / validation." }, "ssoLoginUrl": { "type": "string", "description": "Dashboard will redirect users to this URL to log in again when their sessions expire." }, "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", "visionConsumerUrl": "https://n7.meraki.com/saml/login/XXX?appTarget=MerakiVision", "x509certSha1Fingerprint": "00:11:22:33:44:55:66:77:88:99:00:11:22:33:44:55:66:77:88:99", "ssoLoginUrl": "https://onelogin.com/trust/saml2/http-post/sso/3de5f942-e7b8-4cb9-94e3-85828111158b", "sloLogoutUrl": "https://onelogin.com/trust/saml2/http-redirect/slo/4155000" } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "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", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "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" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "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" }, "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" }, "camera": { "type": "array", "items": { "type": "object", "properties": { "orgWide": { "type": "boolean", "description": "Whether or not SAML administrator has org-wide access" }, "access": { "type": "string", "description": "Camera access ability" } } }, "description": "The list of camera access privileges for SAML administrator" } } } }, "example": [ { "id": "1284392014819", "role": "myrole", "orgAccess": "none", "networks": [ { "id": "N_24329156", "access": "full" } ], "tags": [ { "tag": "west", "access": "read-only" } ], "camera": [ { "orgWide": true, "access": "viewAndExport" } ] } ] } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "List the SAML roles for this organization", "tags": [ "organizations", "configure", "samlRoles" ] }, "post": { "description": "Create a SAML role", "operationId": "createOrganizationSamlRole", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "role": { "type": "string", "description": "The role of the SAML administrator" }, "orgAccess": { "type": "string", "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise' or a custom role in the format custom-role:ID:NAME." }, "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. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only' or a custom role in the format custom-role:ID." } }, "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", "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only', 'ssid-admin' or 'port-tags' or a custom role in the format custom-role:ID." } }, "required": [ "id", "access" ] }, "description": "The list of networks that the SAML administrator has privileges on" } }, "example": { "role": "myrole", "orgAccess": "none", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ] }, "required": [ "role", "orgAccess" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "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" }, "camera": { "type": "array", "items": { "type": "object", "properties": { "orgWide": { "type": "boolean", "description": "Whether or not SAML administrator has org-wide access" }, "access": { "type": "string", "description": "Camera access ability" } } }, "description": "The list of camera access privileges for SAML administrator" } } }, "example": { "id": "1284392014819", "role": "myrole", "orgAccess": "none", "networks": [ { "id": "N_24329156", "access": "full" } ], "tags": [ { "tag": "west", "access": "read-only" } ], "camera": [ { "orgWide": true, "access": "viewAndExport" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Create a SAML role", "tags": [ "organizations", "configure", "samlRoles" ] } }, "/organizations/{organizationId}/samlRoles/{samlRoleId}": { "get": { "description": "Return a SAML role", "operationId": "getOrganizationSamlRole", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "samlRoleId", "in": "path", "description": "Saml role ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "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" }, "camera": { "type": "array", "items": { "type": "object", "properties": { "orgWide": { "type": "boolean", "description": "Whether or not SAML administrator has org-wide access" }, "access": { "type": "string", "description": "Camera access ability" } } }, "description": "The list of camera access privileges for SAML administrator" } } }, "example": { "id": "1284392014819", "role": "myrole", "orgAccess": "none", "networks": [ { "id": "N_24329156", "access": "full" } ], "tags": [ { "tag": "west", "access": "read-only" } ], "camera": [ { "orgWide": true, "access": "viewAndExport" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:read" ] } ], "summary": "Return a SAML role", "tags": [ "organizations", "configure", "samlRoles" ] }, "put": { "description": "Update a SAML role", "operationId": "updateOrganizationSamlRole", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "samlRoleId", "in": "path", "description": "Saml role ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "role": { "type": "string", "description": "The role of the SAML administrator" }, "orgAccess": { "type": "string", "description": "The privilege of the SAML administrator on the organization. Can be one of 'none', 'read-only', 'full' or 'enterprise' or a custom role in the format custom-role:ID:NAME." }, "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. Can be one of 'full', 'read-only', 'guest-ambassador' or 'monitor-only' or a custom role in the format custom-role:ID." } }, "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", "description": "The privilege of the SAML administrator on the network. Can be one of 'full', 'read-only', 'guest-ambassador', 'monitor-only', 'ssid-admin' or 'port-tags' or a custom role in the format custom-role:ID." } }, "required": [ "id", "access" ] }, "description": "The list of networks that the SAML administrator has privileges on" } }, "example": { "role": "myrole", "orgAccess": "none", "tags": [ { "tag": "west", "access": "read-only" } ], "networks": [ { "id": "N_24329156", "access": "full" } ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "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" }, "camera": { "type": "array", "items": { "type": "object", "properties": { "orgWide": { "type": "boolean", "description": "Whether or not SAML administrator has org-wide access" }, "access": { "type": "string", "description": "Camera access ability" } } }, "description": "The list of camera access privileges for SAML administrator" } } }, "example": { "id": "1284392014819", "role": "myrole", "orgAccess": "none", "networks": [ { "id": "N_24329156", "access": "full" } ], "tags": [ { "tag": "west", "access": "read-only" } ], "camera": [ { "orgWide": true, "access": "viewAndExport" } ] } } } } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Update a SAML role", "tags": [ "organizations", "configure", "samlRoles" ] }, "delete": { "description": "Remove a SAML role", "operationId": "deleteOrganizationSamlRole", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "samlRoleId", "in": "path", "description": "Saml role ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "security": [ { "oauth2": [ "dashboard:iam:config:write" ] } ], "summary": "Remove a SAML role", "tags": [ "organizations", "configure", "samlRoles" ] } }, "/organizations/{organizationId}/sase/connectors": { "get": { "description": "List SSE Connectors for an organization", "operationId": "getOrganizationSaseConnectors", "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": { "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "Connector ID" }, "name": { "type": "string", "description": "Connector name" }, "region": { "type": "object", "properties": { "name": { "type": "string", "description": "Human-readable region name" }, "slug": { "type": "string", "description": "Region identifier slug" } }, "description": "Region information" }, "state": { "type": "string", "enum": [ "deployed", "error", "initialized", "provisioned", "teardown_in_progress" ], "description": "Connector state" }, "counts": { "type": "object", "properties": { "sitesConnected": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of sites connected" } }, "description": "Count of sites connected to this connector" } }, "description": "Aggregate counts for this connector" } } }, "description": "List of connectors" } } }, "example": { "items": [ { "id": "123", "name": "us-west-1-connector", "region": { "name": "US West Coast", "slug": "us-west-1" }, "state": "deployed", "counts": { "sitesConnected": { "total": 5 } } } ] } } } } }, "summary": "List SSE Connectors for an organization", "tags": [ "organizations", "configure", "sase", "connectors" ] } }, "/organizations/{organizationId}/sase/connectors/batchDelete": { "post": { "description": "Delete SSE Connectors by ID", "operationId": "batchOrganizationSaseConnectorsDelete", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "connectorId": { "type": "string", "description": "Connector ID to delete" } }, "required": [ "connectorId" ] }, "description": "List of connectors to delete (maximum 20 items)" } }, "example": { "items": [ { "connectorId": "123" } ] } } } }, "required": false }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "pipelineId": { "type": "string", "description": "Pipeline ID" }, "operation": { "type": "object", "properties": { "id": { "type": "string", "description": "Operation identifier" } }, "description": "Operation info" }, "status": { "type": "string", "description": "Pipeline status" }, "counts": { "type": "object", "properties": { "jobs": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total jobs" }, "byStatus": { "type": "object", "properties": { "completed": { "type": "integer", "description": "Completed jobs" }, "failed": { "type": "integer", "description": "Failed jobs" }, "pending": { "type": "integer", "description": "Pending jobs" } }, "description": "Counts by status" } }, "description": "Job count breakdown" } }, "description": "Job counts" } } }, "description": "Pipeline overview with aggregated job status counts" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "pipelineId": "1234", "operation": { "id": "enrollOrganizationSaseSites" }, "status": "active", "counts": { "jobs": { "total": 3, "byStatus": { "completed": 1, "failed": 1, "pending": 1 } } } } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Delete SSE Connectors by ID", "tags": [ "organizations", "configure", "sase", "connectors" ] } }, "/organizations/{organizationId}/sase/integrations": { "post": { "description": "Create a new Secure Access integration", "operationId": "createOrganizationSaseIntegration", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "api": { "type": "object", "properties": { "key": { "type": "string", "description": "The API key generated for the Secure Access org" }, "secret": { "type": "string", "description": "The API secret generated for the Secure Access org" } }, "description": "API credentials" } }, "example": { "api": { "key": "myApiKey", "secret": "myApiSecret" } }, "required": [ "api" ] } } }, "required": true }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "integrated": { "type": "object", "properties": { "by": { "type": "object", "properties": { "admin": { "type": "object", "properties": { "name": { "type": "string", "description": "Admin name" } }, "description": "Admin who created the integration" } }, "description": "Integration creator" }, "at": { "type": "string", "description": "ISO8601Z timestamp when integration was created" } }, "description": "Integration metadata" }, "lastUsedAt": { "type": "string", "description": "ISO8601Z timestamp when integration was last used" }, "external": { "type": "object", "properties": { "organization": { "type": "object", "properties": { "id": { "type": "string", "description": "The organization ID in the external system" } }, "description": "Organization in the external system" } }, "description": "External system metadata" }, "status": { "type": "string", "enum": [ "active", "deleting", "error", "inactive", "initialized", "linked", "ready" ], "description": "Integration status" } } }, "example": { "integrated": { "by": { "admin": { "name": "John Doe" } }, "at": "2025-04-01T12:00:00Z" }, "lastUsedAt": "2025-04-01T12:00:00Z", "external": { "organization": { "id": "1234567890" } }, "status": "active" } } } } }, "summary": "Create a new Secure Access integration", "tags": [ "organizations", "configure", "sase", "integrations" ] } }, "/organizations/{organizationId}/sase/integrations/{integrationId}": { "get": { "description": "Get details of a Secure Access integration", "operationId": "getOrganizationSaseIntegration", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "integrationId", "in": "path", "description": "Integration ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "integrated": { "type": "object", "properties": { "by": { "type": "object", "properties": { "admin": { "type": "object", "properties": { "name": { "type": "string", "description": "Admin name" } }, "description": "Admin who created the integration" } }, "description": "Integration creator" }, "at": { "type": "string", "description": "ISO8601Z timestamp when integration was created" } }, "description": "Integration metadata" }, "lastUsedAt": { "type": "string", "description": "ISO8601Z timestamp when integration was last used" }, "external": { "type": "object", "properties": { "organization": { "type": "object", "properties": { "id": { "type": "string", "description": "The organization ID in the external system" } }, "description": "Organization in the external system" } }, "description": "External system metadata" }, "status": { "type": "string", "enum": [ "active", "deleting", "error", "inactive", "initialized", "linked", "ready" ], "description": "Integration status" } } }, "example": { "integrated": { "by": { "admin": { "name": "John Doe" } }, "at": "2025-04-01T12:00:00Z" }, "lastUsedAt": "2025-04-01T12:00:00Z", "external": { "organization": { "id": "1234567890" } }, "status": "active" } } } } }, "summary": "Get details of a Secure Access integration", "tags": [ "organizations", "configure", "sase", "integrations" ] }, "delete": { "description": "Remove a Secure Access integration", "operationId": "deleteOrganizationSaseIntegration", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "integrationId", "in": "path", "description": "Integration ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Remove a Secure Access integration", "tags": [ "organizations", "configure", "sase", "integrations" ] } }, "/organizations/{organizationId}/sase/networks/eligible": { "get": { "description": "List of MX networks or templates that can be enrolled into Secure Access", "operationId": "getOrganizationSaseNetworksEligible", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 5.", "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": "search", "in": "query", "description": "If provided, filters results by network name", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "networkId": { "type": "string", "description": "Network ID, may not be unique in result set" }, "type": { "type": "string", "enum": [ "Meraki hub", "Meraki spoke", "Meraki template" ], "description": "The site's type (one of: 'Meraki spoke', 'Meraki hub', 'Meraki template')" }, "name": { "type": "string", "description": "Site name" }, "region": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the region" } }, "description": "The region to which the site is connected" }, "device": { "type": "object", "properties": { "primary": { "type": "object", "properties": { "model": { "type": "string", "description": "Model of the primary MX device" } }, "description": "The primary MX device" } }, "description": "Device information for the network" }, "address": { "type": "object", "properties": { "street": { "type": "string", "description": "The street address of the site" } }, "description": "The address of the site" }, "vpn": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "hub", "off", "spoke" ], "description": "The VPN type of the site" } }, "description": "VPN configuration for the site" }, "routing": { "type": "object", "properties": { "defaultRoute": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether the site has default route enabled" } }, "description": "Default route configuration for the site" } }, "description": "Routing configuration for the site" } } }, "description": "List of enrollable networks" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "networkId": "N_123", "type": "Meraki spoke", "name": "London Office", "region": { "name": "US East" }, "device": { "primary": { "model": "MX95" } }, "address": { "street": "123 Main St" }, "vpn": { "type": "hub" }, "routing": { "defaultRoute": { "enabled": true } } } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List of MX networks or templates that can be enrolled into Secure Access", "tags": [ "organizations", "configure", "sase", "networks", "eligible" ] } }, "/organizations/{organizationId}/sase/regions": { "get": { "description": "List regions", "operationId": "getOrganizationSaseRegions", "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": { "items": { "type": "array", "items": { "type": "object", "properties": { "connector": { "type": "object", "properties": { "id": { "type": "string", "description": "Connector ID, null for a CNHE region that has not been deployed yet" } }, "description": "The connector associated with this region" }, "type": { "type": "string", "enum": [ "Cloud Native Head End" ], "description": "The region's type" }, "name": { "type": "string", "description": "Region name" }, "slug": { "type": "string", "description": "Region identifier" } } }, "description": "List of regions" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of items" }, "remaining": { "type": "integer", "description": "Remaining items" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "connector": { "id": "123" }, "type": "Cloud Native Head End", "name": "US West", "slug": "us-west-1" } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } } } }, "summary": "List regions", "tags": [ "organizations", "configure", "sase", "regions" ] } }, "/organizations/{organizationId}/sase/sites": { "get": { "description": "List of enrolled SASE sites in this organization", "operationId": "getOrganizationSaseSites", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 10.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "search", "in": "query", "description": "If provided, filters results by search string", "schema": { "type": "string" } }, { "name": "status", "in": "query", "description": "If provided, filters results by site status label (e.g., 'good')", "schema": { "type": "string", "enum": [ "bad NAT", "bad tunnel", "dormant", "good", "many bad tunnels", "no registry", "offline" ] } }, { "name": "siteId", "in": "query", "description": "If provided, returns only the site matching this ID", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "siteId": { "type": "string", "description": "Unique identifier for the enrolled site" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID, may not be unique in result set" } }, "description": "Network metadata for the enrolled site" }, "type": { "type": "string", "enum": [ "Meraki hub", "Meraki spoke", "Meraki template" ], "description": "The site's type" }, "name": { "type": "string", "description": "Site name" }, "region": { "type": "object", "properties": { "slug": { "type": "string", "description": "The region identifier slug" } }, "description": "The region to which the site is connected" }, "model": { "type": "string", "description": "Model of the network's primary MX device" }, "address": { "type": "object", "properties": { "street": { "type": "string", "description": "The street address of the site" } }, "description": "The address of the site" }, "vpn": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "hub", "off", "spoke" ], "description": "The VPN type of the site" } }, "description": "VPN configuration for the site" }, "routing": { "type": "object", "properties": { "defaultRoute": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether the site has default route enabled" } }, "description": "Default route configuration for the site" } }, "description": "Routing configuration for the site" }, "devices": { "type": "object", "properties": { "primary": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the primary MX device" }, "model": { "type": "string", "description": "Model of the primary MX device" } }, "description": "The primary MX device" }, "spare": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the spare MX device" }, "model": { "type": "string", "description": "Model of the spare MX device" } }, "description": "The spare MX device" } }, "description": "Device information for the site" }, "subnets": { "type": "array", "items": { "type": "object", "properties": { "subnet": { "type": "string", "description": "Subnet of the local network" } } }, "description": "List of local networks in the site" }, "url": { "type": "string", "description": "Dashboard URL for the site's network" } } }, "description": "List of enrolled sites" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of items in the dataset" }, "remaining": { "type": "integer", "description": "The number of items in the dataset that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "siteId": "1234", "network": { "id": "N_123" }, "type": "Meraki spoke", "name": "London Office", "region": { "slug": "us-east-1" }, "model": "MX95", "address": { "street": "123 Main St" }, "vpn": { "type": "spoke" }, "routing": { "defaultRoute": { "enabled": true } }, "devices": { "primary": { "name": "cc:03:d9:01:00:0a", "model": "MX95" }, "spare": { "name": "cc:03:d9:01:00:0b", "model": "MX95" } }, "subnets": [ { "subnet": "192.168.100.0/24" } ], "url": "https://n123.meraki.com/London-Office/n/cEF-pd" } ], "meta": { "counts": { "items": { "total": 1, "remaining": 0 } } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "summary": "List of enrolled SASE sites in this organization", "tags": [ "organizations", "configure", "sase", "sites" ] } }, "/organizations/{organizationId}/sase/sites/attach": { "post": { "callbacks": { "enrollment": { "{$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": { "action": { "type": "string", "description": "Action performed by the job" }, "status": { "type": "string", "description": "Status of the job" }, "message": { "type": "string", "description": "Message from the job. Can either be a success message or an error if there is a failure." }, "request": { "type": "object", "properties": { "siteId": { "type": "string", "description": "ID of the site to enroll" }, "regionId": { "type": "string", "description": "ID of the region to enroll the site in" } }, "description": "Request that was sent to the job" } } } } } } } }, "responses": { "2XX": { "description": "Your server return this code if it accepts the callback" } } } } } }, "description": "Attach sites in this organization to Secure Access. For an organization, a maximum of 2500 sites can be attached if they are in spoke mode or a maximum of 10 sites can be attached in hub mode.", "operationId": "attachOrganizationSaseSites", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID of the site to attach" } }, "required": [ "id" ], "description": "Meraki SD-WAN Network to be attached." }, "region": { "type": "object", "properties": { "slug": { "type": "string", "description": "Unique identifying slug for the region to attach the site in." } }, "required": [ "slug" ], "description": "Region metadata for the site." } } }, "x-release-stage": "general_availability", "description": "List of Meraki SD-WAN sites with the associated regions to be attached." }, "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": { "items": [ { "network": { "id": "N_1234567890" }, "region": { "slug": "us-west-1" } } ], "callback": { "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "sharedSecret": "secret", "httpServer": { "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M=" }, "payloadTemplate": { "id": "wpt_2100" } } } } } }, "required": false }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "pipelineId": { "type": "string", "description": "Pipeline ID" }, "operation": { "type": "object", "properties": { "id": { "type": "string", "description": "Operation identifier" } }, "description": "Operation info" }, "status": { "type": "string", "description": "Pipeline status" }, "counts": { "type": "object", "properties": { "jobs": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total jobs" }, "byStatus": { "type": "object", "properties": { "completed": { "type": "integer", "description": "Completed jobs" }, "failed": { "type": "integer", "description": "Failed jobs" }, "pending": { "type": "integer", "description": "Pending jobs" } }, "description": "Counts by status" } }, "description": "Job count breakdown" } }, "description": "Job counts" } } }, "description": "Pipeline overview with aggregated job status counts" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "pipelineId": "1234", "operation": { "id": "enrollOrganizationSaseSites" }, "status": "active", "counts": { "jobs": { "total": 3, "byStatus": { "completed": 1, "failed": 1, "pending": 1 } } } } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Attach sites in this organization to Secure Access", "tags": [ "organizations", "configure", "sase", "sites" ] } }, "/organizations/{organizationId}/sase/sites/connectivity/history/bySite": { "get": { "description": "Get the connectivity history of SASE sites in this organization", "operationId": "getOrganizationSaseSitesConnectivityHistoryBySite", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "siteIds", "in": "query", "description": "Array of site IDs to fetch connectivity status data (maximum 100 values)", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "timespan", "in": "query", "description": "Timespan for the status data (e.g., '-2hours')", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "siteId": { "type": "string", "description": "Site ID" }, "name": { "type": "string", "description": "Site name" }, "history": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "bad NAT", "bad tunnel", "dormant", "good", "many bad tunnels", "no registry", "offline", "unknown" ], "description": "Connectivity status enum" }, "timestamp": { "type": "string", "description": "ISO8601 timestamp" } } }, "description": "Site level connectivity history" }, "devices": { "type": "object", "properties": { "primary": { "type": "object", "properties": { "id": { "type": "string", "description": "Device ID" }, "history": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "bad NAT", "bad tunnel", "dormant", "good", "many bad tunnels", "no registry", "offline", "unknown" ], "description": "Connectivity status enum" }, "timestamp": { "type": "string", "description": "ISO8601 timestamp" } } }, "description": "Connectivity history for the device" } }, "description": "Primary gateway device history" }, "spare": { "type": "object", "properties": { "id": { "type": "string", "description": "Device ID" }, "history": { "type": "array", "items": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "bad NAT", "bad tunnel", "dormant", "good", "many bad tunnels", "no registry", "offline", "unknown" ], "description": "Connectivity status enum" }, "timestamp": { "type": "string", "description": "ISO8601 timestamp" } } }, "description": "Connectivity history for the device" } }, "description": "Spare gateway device history" } }, "description": "Device level connectivity history" } } }, "description": "Collection of site connectivity payloads" } } }, "example": { "items": [ { "siteId": "123", "name": "Frontizo Network 1", "history": [ { "status": "good", "timestamp": "2022-11-08T00:00:00Z" } ], "devices": { "primary": { "id": "234", "history": [ { "status": "good", "timestamp": "2022-11-08T00:00:00Z" } ] }, "spare": { "id": "345", "history": [ { "status": "bad tunnel", "timestamp": "2022-11-08T00:15:00Z" } ] } } } ] } } } } }, "summary": "Get the connectivity history of SASE sites in this organization", "tags": [ "organizations", "monitor", "sase", "sites", "connectivity", "history", "bySite" ] } }, "/organizations/{organizationId}/sase/sites/connectivity/overview": { "get": { "description": "List high-level SASE site statuses (healthy, degraded, offline)", "operationId": "getOrganizationSaseSitesConnectivityOverview", "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": { "healthy": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of healthy sites" } }, "description": "Totals for healthy sites" }, "degraded": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of degraded sites" } }, "description": "Totals for degraded sites" }, "offline": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total number of offline sites" } }, "description": "Totals for offline sites" } }, "description": "Breakdown of SSE sites by connectivity status" }, "total": { "type": "integer", "description": "Total number of enrolled SSE sites" } }, "description": "Aggregated SSE site counts" } } }, "example": { "counts": { "byStatus": { "healthy": { "total": 3 }, "degraded": { "total": 3 }, "offline": { "total": 3 } }, "total": 9 } } } } } }, "summary": "List high-level SASE site statuses (healthy, degraded, offline)", "tags": [ "organizations", "configure", "sase", "sites", "connectivity", "overview" ] } }, "/organizations/{organizationId}/sase/sites/detach": { "delete": { "callbacks": { "site": { "{$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": { "action": { "type": "string", "description": "Action performed by the job" }, "status": { "type": "string", "description": "Status of the job" }, "message": { "type": "string", "description": "Message from the job. Can either be a success message or an error if there is a failure." }, "request": { "type": "object", "properties": { "siteId": { "type": "string", "description": "ID of the site to enroll" } }, "description": "Request that was sent to the job" } } } } } } } }, "responses": { "2XX": { "description": "Your server return this code if it accepts the callback" } } } } } }, "description": "Detach sites in this organization from Secure Access. This will remove the sites from Secure Access.", "operationId": "detachOrganizationSaseSites", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "siteId": { "type": "string", "description": "Site IDs of the sites to detach" } }, "required": [ "siteId" ] }, "x-release-stage": "general_availability", "description": "List of Secure Access sites to be detached." }, "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": { "items": [ { "siteId": "1234567890" } ], "callback": { "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "sharedSecret": "secret", "httpServer": { "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M=" }, "payloadTemplate": { "id": "wpt_2100" } } } } } }, "required": false }, "responses": { "202": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "items": { "type": "array", "items": { "type": "object", "properties": { "pipelineId": { "type": "string", "description": "Pipeline ID" }, "operation": { "type": "object", "properties": { "id": { "type": "string", "description": "Operation identifier" } }, "description": "Operation info" }, "status": { "type": "string", "description": "Pipeline status" }, "counts": { "type": "object", "properties": { "jobs": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total jobs" }, "byStatus": { "type": "object", "properties": { "completed": { "type": "integer", "description": "Completed jobs" }, "failed": { "type": "integer", "description": "Failed jobs" }, "pending": { "type": "integer", "description": "Pending jobs" } }, "description": "Counts by status" } }, "description": "Job count breakdown" } }, "description": "Job counts" } } }, "description": "Pipeline overview with aggregated job status counts" }, "meta": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "items": { "type": "object", "properties": { "total": { "type": "integer", "description": "The total number of available objects" }, "remaining": { "type": "integer", "description": "The number of objects that are available on subsequent pages" } }, "description": "Counts relating to the paginated items" } }, "description": "Counts relating to the paginated dataset" } }, "description": "Metadata relevant to the paginated dataset" } } }, "example": { "items": [ { "pipelineId": "1234", "operation": { "id": "enrollOrganizationSaseSites" }, "status": "active", "counts": { "jobs": { "total": 3, "byStatus": { "completed": 1, "failed": 1, "pending": 1 } } } } ], "meta": { "counts": { "items": { "total": 100, "remaining": 10 } } } } } } } }, "summary": "Detach sites in this organization from Secure Access", "tags": [ "organizations", "configure", "sase", "sites" ] } }, "/organizations/{organizationId}/sase/sites/{siteId}": { "put": { "description": "Update the configuration for a site. Currently, only supports updating default route enablement.", "operationId": "updateOrganizationSaseSite", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "siteId", "in": "path", "description": "Site ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "siteId": { "type": "string", "description": "Site ID of the site to update" }, "routing": { "type": "object", "properties": { "defaultRoute": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether the site has default route enabled" } }, "required": [ "enabled" ], "description": "Default route configuration for the site" } }, "description": "Routing configuration for the site" } }, "example": { "siteId": "1234", "routing": { "defaultRoute": { "enabled": true } } }, "required": [ "siteId" ] } } }, "required": true }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "siteId": { "type": "string", "description": "Unique identifier for the enrolled site" }, "network": { "type": "object", "properties": { "id": { "type": "string", "description": "Network ID, may not be unique in result set" } }, "description": "Network metadata for the enrolled site" }, "type": { "type": "string", "enum": [ "Meraki hub", "Meraki spoke", "Meraki template" ], "description": "The site's type" }, "name": { "type": "string", "description": "Site name" }, "region": { "type": "object", "properties": { "slug": { "type": "string", "description": "The region identifier slug" } }, "description": "The region to which the site is connected" }, "model": { "type": "string", "description": "Model of the network's primary MX device" }, "address": { "type": "object", "properties": { "street": { "type": "string", "description": "The street address of the site" } }, "description": "The address of the site" }, "vpn": { "type": "object", "properties": { "type": { "type": "string", "enum": [ "hub", "off", "spoke" ], "description": "The VPN type of the site" } }, "description": "VPN configuration for the site" }, "routing": { "type": "object", "properties": { "defaultRoute": { "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Whether the site has default route enabled" } }, "description": "Default route configuration for the site" } }, "description": "Routing configuration for the site" } } }, "example": { "siteId": "1234", "network": { "id": "N_123" }, "type": "Meraki spoke", "name": "London Office", "region": { "slug": "us-east-1" }, "model": "MX95", "address": { "street": "123 Main St" }, "vpn": { "type": "spoke" }, "routing": { "defaultRoute": { "enabled": true } } } } } } }, "summary": "Update the configuration for a site", "tags": [ "organizations", "configure", "sase", "sites" ] } }, "/organizations/{organizationId}/snmp": { "get": { "description": "Return the SNMP settings for an organization", "operationId": "getOrganizationSnmp", "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": { "v2cEnabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 2c is enabled for the organization." }, "v2CommunityString": { "type": "string", "description": "The community string for SNMP version 2c, if enabled." }, "v3Enabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 3 is enabled for the organization." }, "v3User": { "type": "string", "description": "The user for SNMP version 3, if enabled." }, "v3AuthMode": { "type": "string", "enum": [ "MD5", "SHA" ], "description": "The SNMP version 3 authentication mode. Can be either 'MD5' or 'SHA'." }, "v3PrivMode": { "type": "string", "enum": [ "AES128", "DES" ], "description": "The SNMP version 3 privacy mode. Can be either 'DES' or 'AES128'." }, "peerIps": { "type": "array", "items": { "type": "string" }, "description": "The list of IPv4 addresses that are allowed to access the SNMP server." }, "hostname": { "type": "string", "description": "The hostname of the SNMP server." }, "port": { "type": "integer", "description": "The port of the SNMP server." } } }, "example": { "v2cEnabled": false, "v2CommunityString": "o/ABCDEF", "v3Enabled": true, "v3User": "o/ABCDEF", "v3AuthMode": "SHA", "v3PrivMode": "AES128", "peerIps": [ "123.123.123.1" ], "hostname": "snmp.meraki.com", "port": 443 } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the SNMP settings for an organization", "tags": [ "organizations", "configure", "snmp" ] }, "put": { "description": "Update the SNMP settings for an organization", "operationId": "updateOrganizationSnmp", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "v2cEnabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 2c is enabled for the organization." }, "v3Enabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 3 is enabled for the organization." }, "v3AuthMode": { "type": "string", "enum": [ "MD5", "SHA" ], "description": "The SNMP version 3 authentication mode. Can be either 'MD5' or 'SHA'." }, "v3AuthPass": { "type": "string", "description": "The SNMP version 3 authentication password. Must be at least 8 characters if specified." }, "v3PrivMode": { "type": "string", "enum": [ "AES128", "DES" ], "description": "The SNMP version 3 privacy mode. Can be either 'DES' or 'AES128'." }, "v3PrivPass": { "type": "string", "description": "The SNMP version 3 privacy password. Must be at least 8 characters if specified." }, "peerIps": { "type": "array", "items": { "type": "string" }, "description": "The list of IPv4 addresses that are allowed to access the SNMP server." } }, "example": { "v2cEnabled": false, "v3Enabled": true, "v3AuthMode": "SHA", "v3AuthPass": "password", "v3PrivMode": "AES128", "v3PrivPass": "password", "peerIps": [ "123.123.123.1" ] } } } }, "required": false }, "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "v2cEnabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 2c is enabled for the organization." }, "v2CommunityString": { "type": "string", "description": "The community string for SNMP version 2c, if enabled." }, "v3Enabled": { "type": "boolean", "description": "Boolean indicating whether SNMP version 3 is enabled for the organization." }, "v3User": { "type": "string", "description": "The user for SNMP version 3, if enabled." }, "v3AuthMode": { "type": "string", "enum": [ "MD5", "SHA" ], "description": "The SNMP version 3 authentication mode. Can be either 'MD5' or 'SHA'." }, "v3PrivMode": { "type": "string", "enum": [ "AES128", "DES" ], "description": "The SNMP version 3 privacy mode. Can be either 'DES' or 'AES128'." }, "peerIps": { "type": "array", "items": { "type": "string" }, "description": "The list of IPv4 addresses that are allowed to access the SNMP server." }, "hostname": { "type": "string", "description": "The hostname of the SNMP server." }, "port": { "type": "integer", "description": "The port of the SNMP server." } } }, "example": { "v2cEnabled": false, "v2CommunityString": "o/ABCDEF", "v3Enabled": true, "v3User": "o/ABCDEF", "v3AuthMode": "SHA", "v3PrivMode": "AES128", "peerIps": [ "123.123.123.1" ], "hostname": "snmp.meraki.com", "port": 443 } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:write" ] } ], "summary": "Update the SNMP settings for an organization", "tags": [ "organizations", "configure", "snmp" ] } }, "/organizations/{organizationId}/splash/assets/{id}": { "get": { "description": "Get a Splash Theme Asset", "operationId": "getOrganizationSplashAsset", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "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": { "id": { "type": "string", "description": "Splash theme asset id" }, "name": { "type": "string", "description": "Splash theme asset name" }, "fileData": { "type": "string", "description": "Splash theme asset file date base64 encoded" } } }, "example": { "id": "1284392014819", "name": "continue.html", "fileData": "PGh0bWw+PC9odG1sPg==\n" } } } } }, "summary": "Get a Splash Theme Asset", "tags": [ "organizations", "configure", "splash", "assets" ] }, "delete": { "description": "Delete a Splash Theme Asset", "operationId": "deleteOrganizationSplashAsset", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete a Splash Theme Asset", "tags": [ "organizations", "configure", "splash", "assets" ] } }, "/organizations/{organizationId}/splash/themes": { "get": { "description": "List Splash Themes", "operationId": "getOrganizationSplashThemes", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "theme id" }, "name": { "type": "string", "description": "theme name" }, "isSystemTheme": { "type": "boolean", "description": "is a Meraki provided theme" }, "themeAssets": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "asset id" }, "name": { "type": "string", "description": "asset name" } } }, "description": "list of theme assets" } } } }, "example": [ { "id": "482367494044dbbb1d2cc8579d967cef5b4ce59f", "name": "My Custom Splash Theme", "isSystemTheme": false, "themeAssets": [ { "id": "1284392014819", "name": "continue.html" } ] } ] } } } }, "summary": "List Splash Themes", "tags": [ "organizations", "configure", "splash", "themes" ] }, "post": { "description": "Create a Splash Theme", "operationId": "createOrganizationSplashTheme", "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": "theme name" }, "baseTheme": { "type": "string", "description": "base theme id " } }, "example": {} } } }, "required": false }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "theme id" }, "name": { "type": "string", "description": "theme name" }, "isSystemTheme": { "type": "boolean", "description": "is a Meraki provided theme" }, "themeAssets": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "string", "description": "asset id" }, "name": { "type": "string", "description": "asset name" } } }, "description": "list of theme assets" } } }, "example": { "id": "482367494044dbbb1d2cc8579d967cef5b4ce59f", "name": "My Custom Splash Theme", "isSystemTheme": false, "themeAssets": [ { "id": "1284392014819", "name": "continue.html" } ] } } } } }, "summary": "Create a Splash Theme", "tags": [ "organizations", "configure", "splash", "themes" ] } }, "/organizations/{organizationId}/splash/themes/{id}": { "delete": { "description": "Delete a Splash Theme", "operationId": "deleteOrganizationSplashTheme", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "id", "in": "path", "description": "ID", "schema": { "type": "string" }, "required": true } ], "responses": { "204": { "description": "Successful operation" } }, "summary": "Delete a Splash Theme", "tags": [ "organizations", "configure", "splash", "themes" ] } }, "/organizations/{organizationId}/splash/themes/{themeIdentifier}/assets": { "post": { "description": "Create a Splash Theme Asset", "operationId": "createOrganizationSplashThemeAsset", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "themeIdentifier", "in": "path", "description": "Theme identifier", "schema": { "type": "string" }, "required": true } ], "requestBody": { "content": { "application/json": { "schema": { "type": "object", "properties": { "name": { "type": "string", "description": "File name. Will overwrite files with same name." }, "content": { "type": "string", "format": "byte", "description": "a file containing the asset content" } }, "example": {} } } }, "required": false }, "responses": { "201": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "id": { "type": "string", "description": "Splash theme asset id" }, "name": { "type": "string", "description": "Splash theme asset name" }, "fileData": { "type": "string", "description": "Splash theme asset file date base64 encoded" } } }, "example": { "id": "1284392014819", "name": "continue.html", "fileData": "PGh0bWw+PC9odG1sPg==\n" } } } } }, "summary": "Create a Splash Theme Asset", "tags": [ "organizations", "configure", "splash", "themes", "assets" ] } }, "/organizations/{organizationId}/summary/top/appliances/byUtilization": { "get": { "description": "Return the top 10 appliances sorted by utilization over given time range.", "operationId": "getOrganizationSummaryTopAppliancesByUtilization", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 25 minutes and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 1500, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Network name" }, "id": { "type": "string", "description": "Network id" } }, "description": "Network info" }, "name": { "type": "string", "description": "Name of the appliance" }, "mac": { "type": "string", "description": "Mac address of the appliance" }, "serial": { "type": "string", "description": "Serial number of the appliance" }, "model": { "type": "string", "description": "Model of the appliance" }, "utilization": { "type": "object", "properties": { "average": { "type": "object", "properties": { "percentage": { "type": "number", "format": "float", "description": "Average percentage utilization of the appliance" } }, "description": "Average utilization of the appliance" } }, "description": "Utilization of the appliance" } } } }, "example": [ { "network": { "name": "Main Office", "id": "N_24329156" }, "name": "My appliance", "mac": "00:11:22:33:44:55", "serial": "Q234-ABCD-5678", "model": "MX", "utilization": { "average": { "percentage": 7.3 } } } ] } } } }, "security": [ { "oauth2": [ "sdwan:telemetry:read" ] } ], "summary": "Return the top 10 appliances sorted by utilization over given time range.", "tags": [ "organizations", "monitor", "summary", "top", "appliances", "byUtilization" ] } }, "/organizations/{organizationId}/summary/top/applications/byUsage": { "get": { "description": "Return the top applications sorted by data usage over given time range. Default unit is megabytes.", "operationId": "getOrganizationSummaryTopApplicationsByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "device", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "networkId", "in": "query", "description": "Match result to an exact network id", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 25 minutes and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 1500, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "application": { "type": "string", "description": "Name of the Application" }, "total": { "type": "number", "format": "float", "description": "Total usage of the Application, in megabytes" }, "downstream": { "type": "number", "format": "float", "description": "Downstream usage of the Application, in megabytes" }, "upstream": { "type": "number", "format": "float", "description": "Upstream usage of the Application, in megabytes" }, "percentage": { "type": "number", "format": "float", "description": "Percent usage of the Application" } } } }, "example": [ { "application": "sample name", "total": 18000.0, "downstream": 10000.0, "upstream": 8000.0, "percentage": 80.223456789 } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the top applications sorted by data usage over given time range", "tags": [ "organizations", "monitor", "summary", "top", "applications", "byUsage" ] } }, "/organizations/{organizationId}/summary/top/applications/categories/byUsage": { "get": { "description": "Return the top application categories sorted by data usage over given time range. Default unit is megabytes.", "operationId": "getOrganizationSummaryTopApplicationsCategoriesByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "networkId", "in": "query", "description": "Match result to an exact network id", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 25 minutes and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 1500, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "category": { "type": "string", "description": "Name of the Application Category" }, "total": { "type": "number", "format": "float", "description": "Total usage of the Application Category, in megabytes" }, "downstream": { "type": "number", "format": "float", "description": "Downstream usage of the Application Category, in megabytes" }, "upstream": { "type": "number", "format": "float", "description": "Upstream usage of the Application Category, in megabytes" }, "percentage": { "type": "number", "format": "float", "description": "Percent usage of the Application Category" } } } }, "example": [ { "category": "other", "total": 18000.0, "downstream": 10000.0, "upstream": 8000.0, "percentage": 80.223456789 } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the top application categories sorted by data usage over given time range", "tags": [ "organizations", "monitor", "summary", "top", "applications", "categories", "byUsage" ] } }, "/organizations/{organizationId}/summary/top/clients/byUsage": { "get": { "description": "Return metrics for organization's top 10 clients by data usage (in mb) over given time range.", "operationId": "getOrganizationSummaryTopClientsByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 28800, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of client" }, "mac": { "type": "string", "description": "MAC address of client" }, "id": { "type": "string", "description": "ID of client" }, "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of network" }, "id": { "type": "string", "description": "ID of network" } }, "description": "" }, "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total data usage by client" }, "upstream": { "type": "number", "format": "float", "description": "Upstream data usage by client" }, "downstream": { "type": "number", "format": "float", "description": "Downstream data usage by client" }, "percentage": { "type": "number", "format": "float", "description": "Percentage of total data usage by client" } }, "description": "Data usage information" } } } }, "example": [ { "name": "Office Switch", "mac": "22:33:44:55:66:77", "id": "k74272e", "network": { "name": "Main Office", "id": "N_24329156" }, "usage": { "total": 18000.0, "upstream": 8000.0, "downstream": 10000.0, "percentage": 80.2 } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return metrics for organization's top 10 clients by data usage (in mb) over given time range.", "tags": [ "organizations", "monitor", "summary", "top", "clients", "byUsage" ] } }, "/organizations/{organizationId}/summary/top/clients/manufacturers/byUsage": { "get": { "description": "Return metrics for organization's top clients by data usage (in mb) over given time range, grouped by manufacturer.", "operationId": "getOrganizationSummaryTopClientsManufacturersByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the manufacturer" }, "clients": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total counts of clients" } }, "description": "Counts of clients" } }, "description": "Clients info" }, "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total data usage by client" }, "upstream": { "type": "number", "format": "float", "description": "Upstream data usage by client" }, "downstream": { "type": "number", "format": "float", "description": "Downstream data usage by client" } }, "description": "Clients usage" } } } }, "example": [ { "name": "Manufacturer Name", "clients": { "counts": { "total": 3 } }, "usage": { "total": 9000.0, "upstream": 1000.0, "downstream": 8000.0 } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return metrics for organization's top clients by data usage (in mb) over given time range, grouped by manufacturer.", "tags": [ "organizations", "monitor", "summary", "top", "clients", "manufacturers", "byUsage" ] } }, "/organizations/{organizationId}/summary/top/devices/byUsage": { "get": { "description": "Return metrics for organization's top 10 devices sorted by data usage over given time range. Default unit is megabytes.", "operationId": "getOrganizationSummaryTopDevicesByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 28800, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "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 } } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "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": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 28800, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "model": { "type": "string", "description": "The device model" }, "count": { "type": "integer", "description": "Total number of devices per model" }, "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total usage in megabytes" }, "average": { "type": "number", "format": "float", "description": "Average usage in megabytes" } }, "description": "Usage info in megabytes" } } } }, "example": [ { "model": "MR34", "count": 2, "usage": { "total": 2000.0, "average": 1000.0 } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "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/networks/byStatus": { "get": { "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", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 5000.", "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": { "networkId": { "type": "string", "description": "Network identifier" }, "name": { "type": "string", "description": "Network name" }, "url": { "type": "string", "description": "Network clients list URL" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "Network tags" }, "group": { "type": "object", "properties": { "id": { "type": "string", "description": "Network group identifier" } }, "description": "Network group membership" }, "clients": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total count of clients in network" } }, "description": "Network client counts" }, "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": "Network clients data" }, "statuses": { "type": "object", "properties": { "overall": { "type": "string", "enum": [ "alerting", "dormant", "offline", "online" ], "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": [ { "networkId": "N_24329156", "name": "Main Office", "url": "https://n1.meraki.com//n//manage/nodes/list", "tags": [ "tag1", "tag2" ], "group": { "id": "1284392014819" }, "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." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the client and status overview information for the networks in an organization", "tags": [ "organizations", "monitor", "summary", "top", "networks", "byStatus" ] } }, "/organizations/{organizationId}/summary/top/ssids/byUsage": { "get": { "description": "Return metrics for organization's top 10 ssids by data usage over given time range. Default unit is megabytes.", "operationId": "getOrganizationSummaryTopSsidsByUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 8 hours and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 28800, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the SSID" }, "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total usage of the SSID" }, "downstream": { "type": "number", "format": "float", "description": "Downstream usage of the SSID" }, "upstream": { "type": "number", "format": "float", "description": "Upstream usage of the SSID" }, "percentage": { "type": "number", "format": "float", "description": "Percentage usage of the SSID" } }, "description": "Date usage of the SSID, in megabytes" }, "clients": { "type": "object", "properties": { "counts": { "type": "object", "properties": { "total": { "type": "integer", "description": "Total counts of the clients" } }, "description": "Counts of the clients" } }, "description": "Clients info of the SSID" } } } }, "example": [ { "name": "My SSID", "usage": { "total": 18000.0, "downstream": 10000.0, "upstream": 8000.0, "percentage": 80.223456789 }, "clients": { "counts": { "total": 4 } } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return metrics for organization's top 10 ssids by data usage over given time range", "tags": [ "organizations", "monitor", "summary", "top", "ssids", "byUsage" ] } }, "/organizations/{organizationId}/summary/top/switches/byEnergyUsage": { "get": { "description": "Return metrics for organization's top 10 switches by energy usage over given time range. Default unit is joules.", "operationId": "getOrganizationSummaryTopSwitchesByEnergyUsage", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "networkTag", "in": "query", "description": "Match result to an exact network tag", "schema": { "type": "string" } }, { "name": "deviceTag", "in": "query", "description": "Match result to an exact device tag", "schema": { "type": "string" } }, { "name": "quantity", "in": "query", "description": "Set number of desired results to return. Default is 10. Maximum is 50", "schema": { "type": "integer" } }, { "name": "ssidName", "in": "query", "description": "Filter results by ssid name", "schema": { "type": "string" } }, { "name": "usageUplink", "in": "query", "description": "Filter results by usage uplink", "schema": { "type": "string" } }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 186 days after t0.", "schema": { "type": "string" } }, { "name": "timespan", "in": "query", "description": "The timespan for which the information will be fetched. If specifying timespan, do not specify parameters t0 and t1. The value must be in seconds and be greater than or equal to 25 minutes and be less than or equal to 186 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "minimum": 1500, "maximum": 16070400 } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "network": { "type": "object", "properties": { "name": { "type": "string", "description": "Network name" }, "id": { "type": "string", "description": "Network id" } }, "description": "Network info" }, "name": { "type": "string", "description": "Name of the switch" }, "mac": { "type": "string", "description": "Mac address of the switch" }, "model": { "type": "string", "description": "Model of the switch" }, "usage": { "type": "object", "properties": { "total": { "type": "number", "format": "float", "description": "Total energy usage of the switch" } }, "description": "Energy usage of the switch" } } } }, "example": [ { "network": { "name": "Main Office", "id": "N_24329156" }, "name": "My switch", "mac": "00:11:22:33:44:55", "model": "MS", "usage": { "total": 800.021 } } ] } } } }, "security": [ { "oauth2": [ "switch:telemetry:read" ] } ], "summary": "Return metrics for organization's top 10 switches by energy usage over given time range", "tags": [ "organizations", "monitor", "summary", "top", "switches", "byEnergyUsage" ] } }, "/organizations/{organizationId}/uplinks/statuses": { "get": { "description": "List the uplink status of every Meraki MX, MG and Z series devices in the organization", "operationId": "getOrganizationUplinksStatuses", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 1000.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "networkIds", "in": "query", "description": "A list of network IDs. The returned devices will be filtered to only include these networks.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "serials", "in": "query", "description": "A list of serial numbers. The returned devices will be filtered to only include these serials.", "schema": { "type": "array", "items": { "type": "string" } } }, { "name": "iccids", "in": "query", "description": "A list of ICCIDs. The returned devices will be filtered to only include these ICCIDs.", "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": "Network identifier" }, "serial": { "type": "string", "description": "The uplink serial" }, "model": { "type": "string", "description": "The uplink model" }, "lastReportedAt": { "type": "string", "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": { "type": "object", "properties": { "interface": { "type": "string", "enum": [ "cellular", "wan1", "wan2", "wan3" ], "description": "Uplink interface" }, "status": { "type": "string", "enum": [ "active", "connecting", "failed", "not connected", "ready" ], "description": "Uplink status" }, "ip": { "type": "string", "description": "Uplink IP" }, "gateway": { "type": "string", "description": "Gateway IP" }, "publicIp": { "type": "string", "description": "Public IP" }, "primaryDns": { "type": "string", "description": "Primary DNS IP" }, "secondaryDns": { "type": "string", "description": "Secondary DNS IP" }, "ipAssignedBy": { "type": "string", "description": "The way in which the IP is assigned" }, "provider": { "type": "string", "description": "Network Provider" }, "signalStat": { "type": "object", "properties": { "rsrp": { "type": "string", "description": "Reference Signal Received Power" }, "rsrq": { "type": "string", "description": "Reference Signal Received Quality" } }, "description": "Tower Signal Status (Cellular Signal Stats)" }, "mcc": { "type": "string", "description": "Mobile Country Code" }, "mnc": { "type": "string", "description": "Mobile Network Code" }, "roaming": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "home", "roaming", "unknown" ], "description": "Roaming Status" } }, "description": "Roaming Status" }, "connectionType": { "type": "string", "description": "Connection Type (Radio Access Technology)" }, "apn": { "type": "string", "description": "Access Point Name" }, "dns1": { "type": "string", "description": "Primary DNS IP" }, "dns2": { "type": "string", "description": "Secondary DNS IP" }, "signalType": { "type": "string", "description": "Signal Type" }, "mtu": { "type": "integer", "description": "Maximum Transmission Unit" }, "iccid": { "type": "string", "description": "Integrated Circuit Card Identification Number" }, "imsi": { "type": "string", "description": "International Mobile Subscriber Identity" }, "msisdn": { "type": "string", "description": "Mobile Station Integrated Services Digital Network" } } }, "description": "Uplinks" } } } }, "example": [ { "networkId": "N_24329156", "serial": "Q234-ABCD-5678", "model": "MX68C", "lastReportedAt": "2018-02-11T00:00:00Z", "highAvailability": { "enabled": true, "role": "primary" }, "uplinks": [ { "interface": "wan1", "status": "active", "ip": "1.2.3.4", "gateway": "1.2.3.5", "publicIp": "123.123.123.1", "primaryDns": "8.8.8.8", "secondaryDns": "8.8.4.4", "ipAssignedBy": "static", "provider": "at&t", "signalStat": { "rsrp": "-120", "rsrq": "-13" }, "mcc": "123", "mnc": "123", "roaming": { "status": "home" }, "connectionType": "4g", "apn": "internet", "dns1": "111.111.111.111", "dns2": "222.222.222.222", "signalType": "4G", "mtu": 1500, "iccid": "123456789", "imsi": "123456789012345", "msisdn": "123456789012345" } ] } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "List the uplink status of every Meraki MX, MG and Z series devices in the organization", "tags": [ "organizations", "monitor", "uplinks", "statuses" ] } }, "/organizations/{organizationId}/webhooks/alertTypes": { "get": { "description": "Return a list of alert types to be used with managing webhook alerts", "operationId": "getOrganizationWebhooksAlertTypes", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "productType", "in": "query", "description": "Filter sample alerts to a specific product type", "schema": { "type": "string", "enum": [ "appliance", "camera", "cellularGateway", "platform", "sensor", "sm", "switch", "wireless" ] } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "alertTypeId": { "type": "string", "description": "The type ID of Meraki alert" }, "alertType": { "type": "string", "description": "The type of Meraki alert" }, "example": { "type": "object", "properties": { "version": { "type": "string", "description": "Version of the alert" }, "sharedSecret": { "type": "string", "description": "Shared secret for the alert" }, "sentAt": { "type": "string", "format": "date-time", "description": "When the alert notification was sent, in ISO8601 format" }, "alertId": { "type": "string", "description": "ID for the alert instance" }, "alertType": { "type": "string", "description": "The type of Meraki alert" }, "alertTypeId": { "type": "string", "description": "The type ID of Meraki alert" }, "alertLevel": { "type": "string", "enum": [ "critical", "informational", "warning" ], "description": "Severity level of the alert" }, "occurredAt": { "type": "string", "format": "date-time", "description": "When the alert occurred, in ISO8601 format" }, "alertData": { "type": "object", "additionalProperties": true, "description": "Data for the specific alert. Contents depend on the type of the alert" }, "organizationId": { "type": "string", "description": "ID of the organization associated with the alert" }, "organizationName": { "type": "string", "description": "Name of the organization associated with the alert" }, "organizationUrl": { "type": "string", "description": "URL of the organization associated with the alert" }, "deviceSerial": { "type": "string", "description": "Serial for the device associated with the alert" }, "deviceMac": { "type": "string", "description": "Mac address for the device associated with the alert" }, "deviceName": { "type": "string", "description": "Name of the device associated with the alert" }, "deviceUrl": { "type": "string", "description": "URL of the device associated with the alert" }, "deviceTags": { "type": "array", "items": { "type": "string" }, "description": "List of tags for the device associated with the alert" }, "deviceModel": { "type": "string", "description": "Model of the device associated with the alert" }, "networkId": { "type": "string", "description": "ID of the network associated with the alert" }, "networkName": { "type": "string", "description": "Name of the network associated with the alert" }, "networkUrl": { "type": "string", "description": "URL of the network associated with the alert" }, "networkTags": { "type": "array", "items": { "type": "string" }, "description": "List of tags for the network associated with the alert" }, "enrollmentString": { "type": "string", "description": "Enrollment string of the network associated with the alert" }, "notes": { "type": "string", "description": "Notes for the network associated with the alert" }, "productTypes": { "type": "array", "items": { "type": "string", "enum": [ "appliance", "camera", "campusGateway", "cellularGateway", "secureConnect", "sensor", "switch", "systemsManager", "wireless", "wirelessController" ] }, "description": "List of product types that are part of the network associated with the alert" }, "encryptedId": { "type": "string", "description": "Encrypted ID of the network associated with the alert" } }, "description": "Example alert type" } } } }, "example": [ { "alertTypeId": "stopped_reporting", "alertType": "APs went down", "example": { "version": "0.1", "sharedSecret": "secret", "sentAt": "2018-02-11T00:00:00.090210Z", "alertId": "0000000000000000", "alertType": "APs went down", "alertTypeId": "stopped_reporting", "alertLevel": "warning", "occurredAt": "2018-02-11T00:00:00.090210Z", "organizationId": "2930418", "organizationName": "My organization", "organizationUrl": "https://dashboard.meraki.com/o/VjjsAd/manage/organization/overview", "deviceSerial": "Q234-ABCD-5678", "deviceMac": "00:11:22:33:44:55", "deviceName": "My AP", "deviceUrl": "https://n1.meraki.com//n//manage/nodes/new_list/000000000000", "deviceTags": [ "tag1", "tag2" ], "deviceModel": "MR34", "networkId": "N_24329156", "networkName": "Main Office", "networkUrl": "https://n1.meraki.com//n//manage/nodes/list", "networkTags": [], "enrollmentString": "my-enrollment-string", "notes": "Additional description of the network", "productTypes": [ "appliance", "switch", "wireless" ], "encryptedId": "6GREra" } } ] } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return a list of alert types to be used with managing webhook alerts", "tags": [ "organizations", "monitor", "webhooks", "alertTypes" ] } }, "/organizations/{organizationId}/webhooks/callbacks/statuses/{callbackId}": { "get": { "description": "Return the status of an API callback", "operationId": "getOrganizationWebhooksCallbacksStatus", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "callbackId", "in": "path", "description": "Callback ID", "schema": { "type": "string" }, "required": true } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "object", "properties": { "callbackId": { "type": "string", "description": "The ID of the callback" }, "status": { "type": "string", "enum": [ "completed", "failed", "running" ], "description": "The status of the callback" }, "errors": { "type": "array", "items": { "type": "string" }, "description": "The errors returned by the callback" }, "createdBy": { "type": "object", "properties": { "adminId": { "type": "string", "description": "The ID of the user who initiated the callback" } }, "description": "Information around who initiated the callback" }, "webhook": { "type": "object", "properties": { "url": { "type": "string", "description": "The webhook receiver URL where the callback will be sent" }, "httpServer": { "type": "object", "properties": { "id": { "type": "string", "description": "The webhook receiver ID that will receive information" } }, "description": "The webhook receiver used for the callback webhook" }, "payloadTemplate": { "type": "object", "properties": { "id": { "type": "string", "description": "The ID of the payload template" } }, "description": "The payload template of the webhook used for the callback" }, "sentAt": { "type": "string", "format": "date-time", "description": "The timestamp the callback was sent to the webhook receiver" } }, "description": "The webhook receiver used by the callback to send results" } } }, "example": { "callbackId": "1284392014819", "status": "completed", "errors": [ "Callback failed" ], "createdBy": { "adminId": "212406" }, "webhook": { "url": "https://webhook.site/28efa24e-f830-4d9f-a12b-fbb9e5035031", "httpServer": { "id": "aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20vd2ViaG9va3M=" }, "payloadTemplate": { "id": "wpt_2100" }, "sentAt": "2018-02-11T00:00:00.090210Z" } } } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the status of an API callback", "tags": [ "organizations", "configure", "webhooks", "callbacks", "statuses" ] } }, "/organizations/{organizationId}/webhooks/logs": { "get": { "description": "Return the log of webhook POSTs sent", "operationId": "getOrganizationWebhooksLogs", "parameters": [ { "name": "organizationId", "in": "path", "description": "Organization ID", "schema": { "type": "string" }, "required": true }, { "name": "t0", "in": "query", "description": "The beginning of the timespan for the data. The maximum lookback period is 30 days from today.", "schema": { "type": "string" } }, { "name": "t1", "in": "query", "description": "The end of the timespan for the data. t1 can be a maximum of 30 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 30 days. The default is 1 day.", "schema": { "type": "number", "format": "float", "maximum": 2592000 } }, { "name": "perPage", "in": "query", "description": "The number of entries per page returned. Acceptable range is 3 - 1000. Default is 50.", "schema": { "type": "integer" } }, { "name": "startingAfter", "in": "query", "description": "A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "endingBefore", "in": "query", "description": "A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.", "schema": { "type": "string" } }, { "name": "url", "in": "query", "description": "The URL the webhook was sent to", "schema": { "type": "string" } } ], "responses": { "200": { "description": "Successful operation", "content": { "application/json": { "schema": { "type": "array", "items": { "type": "object", "properties": { "alertType": { "type": "string", "description": "Type of alert that the webhook is delivering" }, "loggedAt": { "type": "string", "format": "date-time", "description": "When the webhook log was created, in ISO8601 format" }, "networkId": { "type": "string", "description": "Network ID for the webhook log" }, "organizationId": { "type": "string", "description": "ID for the webhook log's organization" }, "responseCode": { "type": "integer", "description": "Response code from the webhook" }, "responseDuration": { "type": "integer", "description": "Duration of the response, in milliseconds" }, "sentAt": { "type": "string", "format": "date-time", "description": "When the webhook was sent, in ISO8601 format" }, "url": { "type": "string", "description": "URL where the webhook was sent" } } } }, "example": [ { "alertType": "Settings changed", "loggedAt": "2019-01-01T13:37:28.423456Z", "networkId": "N_24329156", "organizationId": "2930418", "responseCode": 200, "responseDuration": 244, "sentAt": "2019-01-01T13:37:28.123456Z", "url": "https://www.example.com/path" } ] } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "A comma-separated list of first, last, prev, and next relative links used for subsequent paginated requests." } } } }, "security": [ { "oauth2": [ "dashboard:general:telemetry:read" ] } ], "summary": "Return the log of webhook POSTs sent", "tags": [ "organizations", "monitor", "webhooks", "logs" ] } } } }