openapi: 3.1.0 info: contact: email: tmunzer@juniper.net name: Thomas Munzer description: '> Version: **2604.1.1** > > Date: **May 13, 2026**
NOTE:
Some important API changes will be introduced. Please make sure to read the announcements
--- ## Additional Documentation * [Mist Automation Guide](https://www.juniper.net/documentation/us/en/software/mist/automation-integration/index.html) * [Mist Location SDK](https://www.juniper.net/documentation/us/en/software/mist/location-services/topics/concept/mist-how-get-mist-sdk.html) * [Mist Product Updates](https://www.juniper.net/documentation/us/en/software/mist/product-updates/) ## Helpful Resources * [API Sandbox and Exercises](https://api-class.mist.com/) * [Postman Collection, Runners and Webhook Samples](https://www.postman.com/juniper-mist/workspace/mist-systems-s-public-workspace) * [Python Script Examples](https://github.com/tmunzer/mist_library) * [API Demo Apps](https://apps.mist-lab.fr/) * [Juniper Blog](https://blogs.juniper.net/) ## Mist Web Browser Extension: * Google Chrome, Microsoft Edge and other Chromium-based browser: [Chrome Web Store](https://chromewebstore.google.com/detail/mist-extension/ejhpdcljeamillfhdihkkmoakanpbplh) * Firefox: [Firefox Add-ons](https://addons.mozilla.org/en-US/firefox/addon/mist-extension/) ---' license: name: MIT url: https://raw.githubusercontent.com/tmunzer/Mist-OAS3.0/main/LICENSE title: Mist Admins MSPs Orgs API version: 2604.1.1 x-logo: altText: Juniper-MistAI backgroundColor: '#FFFFFF' url: https://www.mist.com/wp-content/uploads/logo.png servers: - description: Mist Global 01 url: https://api.mist.com - description: Mist Global 02 url: https://api.gc1.mist.com - description: Mist Global 03 url: https://api.ac2.mist.com - description: Mist Global 04 url: https://api.gc2.mist.com - description: Mist Global 05 url: https://api.gc4.mist.com - description: Mist EMEA 01 url: https://api.eu.mist.com - description: Mist EMEA 02 url: https://api.gc3.mist.com - description: Mist EMEA 03 url: https://api.ac6.mist.com - description: Mist EMEA 04 url: https://api.gc6.mist.com - description: Mist APAC 01 url: https://api.ac5.mist.com - description: Mist APAC 02 url: https://api.gc5.mist.com - description: Mist APAC 03 url: https://api.gc7.mist.com security: - apiToken: [] - basicAuth: [] - basicAuth: [] csrfToken: [] tags: - description: 'An organization usually represents a customer - which has inventories, licenses. An Organization can contain multiple sites. A site usually represents a deployment at the same location (a campus, an office).' name: MSPs Orgs paths: /api/v1/msps/{msp_id}/orgs: parameters: - $ref: '#/components/parameters/msp_id' get: description: Get List of MSP Orgs operationId: listMspOrgs responses: '200': $ref: '#/components/responses/OrgsArray' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: listMspOrgs tags: - MSPs Orgs post: description: Create an Org under MSP operationId: createMspOrg requestBody: content: application/json: examples: Example: value: alarmtemplate_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 allow_mist: true name: string orggroup_ids: - b069b358-4c97-5319-1f8c-7c5ca64d6ab1 session_expiry: 10 schema: $ref: '#/components/schemas/org' description: Request Body responses: '200': $ref: '#/components/responses/Org' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: createMspOrg tags: - MSPs Orgs put: description: Assign or Unassign Orgs to an MSP account operationId: manageMspOrgs requestBody: content: application/json: examples: Example: value: op: assign org_ids: - 2b069b358-4c97-5319-1f8c-7c5ca64d6ab1 schema: $ref: '#/components/schemas/msp_org_change' description: Request Body responses: '200': $ref: '#/components/responses/OK' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: manageMspOrgs tags: - MSPs Orgs /api/v1/msps/{msp_id}/orgs/search: parameters: - $ref: '#/components/parameters/msp_id' get: description: Search Org in MSP operationId: searchMspOrgs parameters: - $ref: '#/components/parameters/name' - description: Org id in: query name: org_id schema: examples: - b069b358-4c97-5319-1f8c-7c5ca64d6ab1 format: uuid type: string - description: If this org has sufficient subscription in: query name: sub_insufficient schema: examples: - false type: boolean - description: If this org is under trial period in: query name: trial_enabled schema: examples: - false type: boolean - description: List of types that enabled by usage in: query name: usage_types schema: $ref: '#/components/schemas/strings' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/end' - $ref: '#/components/parameters/search_after' responses: '200': $ref: '#/components/responses/OrgsSearch' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: searchMspOrgs tags: - MSPs Orgs /api/v1/msps/{msp_id}/orgs/{org_id}: parameters: - $ref: '#/components/parameters/msp_id' - $ref: '#/components/parameters/org_id' delete: description: Delete MSP Org operationId: deleteMspOrg responses: '200': $ref: '#/components/responses/OK' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: deleteMspOrg tags: - MSPs Orgs get: description: Get MSP Org Details operationId: getMspOrg responses: '200': $ref: '#/components/responses/Org' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: getMspOrg tags: - MSPs Orgs put: description: Update MSP Org operationId: updateMspOrg requestBody: content: application/json: schema: $ref: '#/components/schemas/org' responses: '200': $ref: '#/components/responses/Org' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: updateMspOrg tags: - MSPs Orgs /api/v1/msps/{msp_id}/stats/orgs: parameters: - $ref: '#/components/parameters/msp_id' get: description: Get List of MSP Orgs Stats operationId: listMspOrgStats parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': $ref: '#/components/responses/OrgsArrayStats' '400': $ref: '#/components/responses/HTTP400' '401': $ref: '#/components/responses/HTTP401' '403': $ref: '#/components/responses/HTTP403' '404': $ref: '#/components/responses/HTTP404' '429': $ref: '#/components/responses/HTTP429' summary: listMspOrgStats tags: - MSPs Orgs components: schemas: response_org_search: additionalProperties: false properties: end: readOnly: true type: number limit: readOnly: true type: integer next: type: string results: $ref: '#/components/schemas/response_org_search_results' start: readOnly: true type: number total: readOnly: true type: integer required: - end - limit - results - start - total type: object id: description: Unique ID of the object instance in the Mist Organization examples: - 53f10664-3ce8-4c27-b382-0ef66432349f format: uuid readOnly: true type: string msp_org_change_org_ids: description: List of org_id items: type: string type: array orggroup_ids: items: format: uuid type: string type: array strings: items: type: string type: array uniqueItems: true stats_org_orggroup_ids: items: format: uuid type: string type: array response_http403: additionalProperties: false properties: detail: examples: - You do not have permission to perform this action. type: string type: object stats_orgs: items: $ref: '#/components/schemas/stats_org' type: array msp_org_change: properties: op: $ref: '#/components/schemas/msp_org_change_operation' org_ids: $ref: '#/components/schemas/msp_org_change_org_ids' required: - op - org_ids type: object stats_org_sle_user_minutes: additionalProperties: false properties: ok: type: number total: type: number required: - total - ok type: object response_http404: additionalProperties: false properties: id: type: string type: object response_org_search_results: items: $ref: '#/components/schemas/response_org_search_item' type: array uniqueItems: true response_org_search_item_usage_types: description: a list of types that enabled by usage items: type: string readOnly: true type: array timestamp: description: Epoch (seconds) format: double readOnly: true type: number org: properties: alarmtemplate_id: format: uuid type: - string - 'null' allow_mist: default: true type: boolean created_time: $ref: '#/components/schemas/created_time' id: $ref: '#/components/schemas/id' modified_time: $ref: '#/components/schemas/modified_time' msp_id: $ref: '#/components/schemas/msp_id' msp_logo_url: description: logo uploaded by the MSP with advanced tier, only present if provided examples: - https://example.com/logo/b9d42c2e-88ee-41f8-b798-f009ce7fe909.jpeg format: uri readOnly: true type: string msp_name: description: Name of the msp the org belongs to examples: - MSP readOnly: true type: string name: examples: - Org type: string orggroup_ids: $ref: '#/components/schemas/orggroup_ids' session_expiry: default: 1440 format: int32 maximum: 20160 minimum: 10 type: integer required: - name type: object stats_org_sles: items: $ref: '#/components/schemas/stats_org_sle' type: array uniqueItems: true modified_time: description: When the object has been modified for the last time, in epoch format: double readOnly: true type: number stats_org: additionalProperties: false description: Org statistics properties: alarmtemplate_id: format: uuid type: string allow_mist: type: boolean created_time: $ref: '#/components/schemas/created_time' id: $ref: '#/components/schemas/id' modified_time: $ref: '#/components/schemas/modified_time' msp_id: $ref: '#/components/schemas/msp_id' name: type: string num_devices: type: integer num_devices_connected: type: integer num_devices_disconnected: type: integer num_inventory: type: integer num_sites: type: integer orggroup_ids: $ref: '#/components/schemas/stats_org_orggroup_ids' session_expiry: format: int64 type: integer sle: $ref: '#/components/schemas/stats_org_sles' required: - orggroup_ids - name - id - msp_id - created_time - modified_time - allow_mist - session_expiry - alarmtemplate_id - num_sites - num_devices - num_inventory - num_devices_connected - num_devices_disconnected - sle type: object msp_org_change_operation: description: 'enum: `assign`, `unassign`' enum: - assign - unassign type: string stats_org_sle: additionalProperties: false properties: path: type: string user_minutes: $ref: '#/components/schemas/stats_org_sle_user_minutes' required: - path type: object response_http400: additionalProperties: false properties: detail: examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' type: string type: object org_list: items: $ref: '#/components/schemas/org' type: array response_org_search_item: additionalProperties: false properties: msp_id: $ref: '#/components/schemas/msp_id' name: description: org name readOnly: true type: string num_aps: readOnly: true type: integer num_gateways: readOnly: true type: integer num_sites: readOnly: true type: integer num_switches: readOnly: true type: integer num_unassigned_aps: readOnly: true type: integer org_id: $ref: '#/components/schemas/org_id' sub_ana_entitled: readOnly: true type: integer sub_ana_required: readOnly: true type: integer sub_ast_entitled: readOnly: true type: integer sub_ast_required: readOnly: true type: integer sub_eng_entitled: readOnly: true type: integer sub_eng_required: readOnly: true type: integer sub_ex12_required: readOnly: true type: integer sub_insufficient: description: If this org has sufficient subscription readOnly: true type: boolean sub_man_entitled: readOnly: true type: integer sub_man_required: readOnly: true type: integer sub_me_entitled: readOnly: true type: integer sub_vna_entitled: readOnly: true type: integer sub_vna_required: readOnly: true type: integer timestamp: $ref: '#/components/schemas/timestamp' trial_enabled: description: If this org is under trial period readOnly: true type: boolean usage_types: $ref: '#/components/schemas/response_org_search_item_usage_types' type: object response_http429: additionalProperties: false properties: detail: examples: - Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold type: string type: object msp_id: examples: - b9d42c2e-88ee-41f8-b798-f009ce7fe909 format: uuid readOnly: true type: string response_http401: additionalProperties: false properties: detail: examples: - Authentication credentials were not provided. type: string type: object org_id: examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 format: uuid readOnly: true type: string created_time: description: When the object has been created, in epoch format: double readOnly: true type: number parameters: name: in: query name: name schema: type: string org_id: in: path name: org_id required: true schema: examples: - 000000ab-00ab-00ab-00ab-0000000000ab format: uuid type: string start: description: Start time (epoch timestamp in seconds, or relative string like "-1d", "-1w") in: query name: start schema: type: string sort: description: On which field the list should be sorted, -prefix represents DESC order in: query name: sort schema: default: timestamp examples: - -site_id type: string search_after: description: Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. in: query name: search_after schema: type: string end: description: End time (epoch timestamp in seconds, or relative string like "-1d", "-2h", "now") in: query name: end schema: type: string page: in: query name: page schema: default: 1 minimum: 1 type: integer msp_id: in: path name: msp_id required: true schema: examples: - 000000ab-00ab-00ab-00ab-0000000000ab format: uuid type: string limit: in: query name: limit schema: default: 100 minimum: 0 type: integer examples: OrgExample: value: alarmtemplate_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 allow_mist: true created_time: 0 id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 modified_time: 0 msp_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 name: string orggroup_ids: - b069b358-4c97-5319-1f8c-7c5ca64d6ab1 session_expiry: 1440 HTTP400Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' HTTP403Example: value: detail: You do not have permission to perform this action. HTTP429Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold OrgsArrayExample: value: - alarmtemplate_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 allow_mist: true created_time: 0 id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 modified_time: 0 msp_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 name: string orggroup_ids: - b069b358-4c97-5319-1f8c-7c5ca64d6ab1 session_expiry: 1440 HTTP401Example: value: detail: Authentication credentials were not provided. OrgsSearchExample: value: end: 1614383378.4365287 limit: 10 next: /api/v1/msps/43e96c5a-6ef6-11e6-9909-9596d1d1534f/orgs/search?end=1760601621&limit=1&search_after=%5B1760599794477%5D&start=1759996821 results: - msp_id: d287e62f-0000-0000-0000-f2b9ba0a531f name: Test Org num_aps: 9 num_sites: 5 num_switches: 1 num_unassigned_aps: 1 org_id: bb1a8bf6-0000-0000-0000-8053a663cf65 sub_ana_required: 9 sub_ast_entitled: 5 sub_ast_required: 3 sub_eng_required: 3 sub_ex12_required: 1 sub_insufficient: true sub_man_required: 9 sub_vna_entitled: 1 timestamp: 1614322563.513937 trial_enabled: false usage_types: - sub_eng - msp_id: d287e62f-0000-0000-0000-f2b9ba0a531f name: Rogue Test1 num_aps: 1 num_sites: 1 org_id: 0fb81690-0000-0000-0000-9596d1d1534f sub_ana_entitled: 1 sub_ana_required: 1 sub_insufficient: false sub_man_entitled: 1 sub_man_required: 1 timestamp: 1614309876.500955 start: 1613778578.4365668 total: 2 responses: OrgsSearch: content: application/json: examples: Example: $ref: '#/components/examples/OrgsSearchExample' schema: $ref: '#/components/schemas/response_org_search' application/vnd.api+json: examples: Example: $ref: '#/components/examples/OrgsSearchExample' schema: $ref: '#/components/schemas/response_org_search' description: OK HTTP404: content: application/json: schema: $ref: '#/components/schemas/response_http404' application/vnd.api+json: schema: $ref: '#/components/schemas/response_http404' description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist HTTP429: content: application/json: examples: Example: $ref: '#/components/examples/HTTP429Example' schema: $ref: '#/components/schemas/response_http429' application/vnd.api+json: examples: Example: $ref: '#/components/examples/HTTP429Example' schema: $ref: '#/components/schemas/response_http429' description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold OrgsArray: content: application/json: examples: Example: $ref: '#/components/examples/OrgsArrayExample' schema: $ref: '#/components/schemas/org_list' application/vnd.api+json: examples: Example: $ref: '#/components/examples/OrgsArrayExample' schema: $ref: '#/components/schemas/org_list' description: OK Org: content: application/json: examples: Example: $ref: '#/components/examples/OrgExample' schema: $ref: '#/components/schemas/org' application/vnd.api+json: examples: Example: $ref: '#/components/examples/OrgExample' schema: $ref: '#/components/schemas/org' description: Org Infos HTTP403: content: application/json: examples: Example: $ref: '#/components/examples/HTTP403Example' schema: $ref: '#/components/schemas/response_http403' application/vnd.api+json: examples: Example: $ref: '#/components/examples/HTTP403Example' schema: $ref: '#/components/schemas/response_http403' description: Permission Denied HTTP400: content: application/json: examples: Example: $ref: '#/components/examples/HTTP400Example' schema: $ref: '#/components/schemas/response_http400' application/vnd.api+json: examples: Example: $ref: '#/components/examples/HTTP400Example' schema: $ref: '#/components/schemas/response_http400' description: Bad Syntax OK: description: OK HTTP401: content: application/json: examples: Example: $ref: '#/components/examples/HTTP401Example' schema: $ref: '#/components/schemas/response_http401' application/vnd.api+json: examples: Example: $ref: '#/components/examples/HTTP401Example' schema: $ref: '#/components/schemas/response_http401' description: Unauthorized OrgsArrayStats: content: application/json: schema: $ref: '#/components/schemas/stats_orgs' application/vnd.api+json: schema: $ref: '#/components/schemas/stats_orgs' description: OK securitySchemes: apiToken: description: "Like many other API providers, it’s also possible to generate API Tokens to be used (in HTTP Header) for authentication. An API token ties to a Admin with equal or less privileges.\n\n**Format**:\n API Token value format is `Token {apitoken}`\n\n**Notes**:\n* an API token generated for a specific admin has the same privilege as the user\n* an API token will be automatically removed if not used for > 90 days\n* SSO admins cannot generate these API tokens. Refer Org level API tokens which can have privileges of a specific Org/Site for more information." in: header name: Authorization type: apiKey basicAuth: description: While our current UI uses Session / Cookie-based authentication, it’s also possible to do Basic Auth. scheme: basic type: http csrfToken: description: "This protects the website against [Cross Site Request Forgery](https://en.wikipedia.org/wiki/Cross-site_request_forgery), all the POST / PUT / DELETE APIs needs to have CSRF token in the AJAX Request header when using Login/Password authentication (with or without MFA)\n\n\nThe CSRF Token is sent back by Mist in the Cookies from the Login Response API Call:\n`cookies[csrftoken]` \n\nThe CSRF Token must be added in the HTTP Request Headers:\n```\nX-CSRFToken: vwvBuq9qkqaKh7lu8tNc0gkvBfEaLAmx\n```" in: header name: X-CSRFToken type: apiKey