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 Orgs Psks 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: 'A multi PSK (Pre-Shared Key) is a feature that allows the use of multiple PSKs for securing network connections. It provides a simple and comprehensive way to onboard client devices without relying on client mac addresses. Each psk has its own key name, which can be used for user-level accountability, key rotation, and visibility in the management platform. It supports the creation, rotation, and auto-expiration of PSKs, and allows vlan assignment and role assignment for dynamic per-user policies. Multi PSKs create virtual broadcast domains and can be used for end-user onboarding via authenticated sso login. Mist supports three methods of Org PSKs lookup: * local * radius * cloud' name: Orgs Psks paths: /api/v1/orgs/{org_id}/psks: parameters: - $ref: '#/components/parameters/org_id' get: description: Get List of Org Psks operationId: listOrgPsks parameters: - example: psk_name in: query name: name schema: type: string - in: query name: ssid schema: type: string - in: query name: role schema: type: string - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': $ref: '#/components/responses/PsksArray' '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: listOrgPsks tags: - Orgs Psks post: description: 'Create Org PSK When `usage`==`macs`, corresponding "macs" field will hold a list consisting of client mac addresses (["xx:xx:xx:xx:xx",...]) or mac patterns(["xx:xx:*","xx*",...]) or both (["xx:xx:xx:xx:xx:xx", "xx:*", ...]). This list is capped at 5000' operationId: createOrgPsk parameters: - description: If a key exists with the same `name`, replace it with the new one in: query name: upsert schema: type: boolean requestBody: content: application/json: schema: $ref: '#/components/schemas/psk' description: Request Body responses: '200': $ref: '#/components/responses/Psk' '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: createOrgPsk tags: - Orgs Psks put: description: Update Multiple PSKs operationId: updateOrgMultiplePsks requestBody: content: application/json: examples: Example: value: - expire_time: 1614990263 mac: string max_usage: 0 name: string passphrase: secretpsk ssid: string usage: multi vlan_id: 10 schema: $ref: '#/components/schemas/psks' responses: '200': $ref: '#/components/responses/PsksArray' '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: updateOrgMultiplePsks tags: - Orgs Psks /api/v1/orgs/{org_id}/psks/delete: parameters: - $ref: '#/components/parameters/org_id' post: description: 'Delete Org PSK List Delete list of psks on the org. This API accepts single string or list of strings' operationId: deleteOrgPskList requestBody: content: application/json: schema: $ref: '#/components/schemas/psk_id_list' 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: deleteOrgPskList tags: - Orgs Psks /api/v1/orgs/{org_id}/psks/import: parameters: - $ref: '#/components/parameters/org_id' post: description: 'Import PSK from CSV file or JSON ## CSV File Format ``` PSK Import CSV File Format: name,ssid,passphrase,usage,vlan_id,mac,max_usage,role,expire_time,notify_expiry,expiry_notification_time,notify_on_create_or_edit,email Common,warehouse,foryoureyesonly,single,35,a31425f31278,0,student,1618594236 Justin,reception,visible,multi,1002,200,teacher,1618594236 Common2,ssid,1245678-xx,single,35,a31425f31278,0,student,1618594236,true,7,true,admin@test.com ```' operationId: importOrgPsks requestBody: content: application/json: schema: $ref: '#/components/schemas/psks' multipart/form-data: schema: $ref: '#/components/schemas/psks_import_file' responses: '200': $ref: '#/components/responses/PsksArray' '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: importOrgPsks tags: - Orgs Psks /api/v1/orgs/{org_id}/psks/{psk_id}: parameters: - $ref: '#/components/parameters/org_id' - $ref: '#/components/parameters/psk_id' delete: description: Delete Org PSK operationId: deleteOrgPsk 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: deleteOrgPsk tags: - Orgs Psks get: description: Get Org PSK Details operationId: getOrgPsk responses: '200': $ref: '#/components/responses/Psk' '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: getOrgPsk tags: - Orgs Psks put: description: Update Org PSK operationId: updateOrgPsk requestBody: content: application/json: schema: $ref: '#/components/schemas/psk' description: Request Body responses: '200': $ref: '#/components/responses/Psk' '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: updateOrgPsk tags: - Orgs Psks /api/v1/orgs/{org_id}/psks/{psk_id}/delete_old_passphrase: parameters: - $ref: '#/components/parameters/org_id' - $ref: '#/components/parameters/psk_id' post: description: "Delete `old_passphrase` from PSK. \nIf successful, response is same as GET, returns the PSK with `old_passphrase` removed." operationId: deleteOrgPskOldPassphrase responses: '200': $ref: '#/components/responses/Psk' '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: deleteOrgPskOldPassphrase tags: - Orgs Psks components: schemas: id: description: Unique ID of the object instance in the Mist Organization examples: - 53f10664-3ce8-4c27-b382-0ef66432349f format: uuid readOnly: true type: string psk_macs: description: If `usage`==`macs`, this list contains N number of client mac addresses or mac patterns(1122*) or both. This list is capped at 5000 examples: - - 112233abcedf - aabbcc* items: type: string type: array psk_usage: default: multi description: 'enum: `macs`, `multi`, `single`' enum: - macs - multi - single type: string response_http403: additionalProperties: false properties: detail: examples: - You do not have permission to perform this action. type: string type: object psk_id_list_psk_id: examples: - - 0039c16c-ca87-4d3f-bb94-b97c58199f18 - 6562cc8e-5893-418a-acaa-4d7c1af8084f items: format: uuid type: string type: array site_id: examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 format: uuid readOnly: true type: string response_http404: additionalProperties: false properties: id: type: string type: object psk_id_list: properties: psk_ids: $ref: '#/components/schemas/psk_id_list_psk_id' type: object modified_time: description: When the object has been modified for the last time, in epoch format: double readOnly: true type: number psks_import_file: additionalProperties: false properties: file: contentMediaType: application/octet-stream type: string type: object response_http400: additionalProperties: false properties: detail: examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' type: string type: object psks: items: $ref: '#/components/schemas/psk' type: array uniqueItems: true 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 response_http401: additionalProperties: false properties: detail: examples: - Authentication credentials were not provided. type: string type: object psk_vlan_id: description: VLAN for this PSK key oneOf: - type: string - maximum: 4094 minimum: 1 type: integer org_id: examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 format: uuid readOnly: true type: string psk_list: items: $ref: '#/components/schemas/psk' type: array created_time: description: When the object has been created, in epoch format: double readOnly: true type: number psk: description: PSK properties: admin_sso_id: description: sso id for psk created from psk portal readOnly: true type: string created_time: $ref: '#/components/schemas/created_time' email: description: email to send psk expiring notifications to type: string expire_time: default: null description: Expire time for this PSK key (epoch time in seconds). Default `null` (as no expiration) examples: - 1614990263 type: - integer - 'null' expiry_notification_time: description: Number of days before psk is expired. Used as to when to start sending reminder notification when the psk is about to expire type: integer id: $ref: '#/components/schemas/id' mac: description: If `usage`==`single`, the mac that this PSK ties to, empty if `auto-binding` type: string macs: $ref: '#/components/schemas/psk_macs' max_usage: default: 0 description: For Org PSK Only. Max concurrent users for this PSK key. Default is 0 (unlimited) type: integer modified_time: $ref: '#/components/schemas/modified_time' name: type: string note: type: string notify_expiry: default: false description: If set to true, reminder notification will be sent when psk is about to expire type: boolean notify_on_create_or_edit: description: If set to true, notification will be sent when psk is created or edited type: boolean old_passphrase: description: previous passphrase of the PSK if it has been rotated type: string org_id: $ref: '#/components/schemas/org_id' passphrase: description: passphrase of the PSK (8-63 character or 64 in hex) maxLength: 64 minLength: 8 type: string role: maxLength: 32 minLength: 0 type: string site_id: $ref: '#/components/schemas/site_id' ssid: description: SSID this PSK should be applicable to type: string usage: $ref: '#/components/schemas/psk_usage' vlan_id: $ref: '#/components/schemas/psk_vlan_id' vlan_name: description: VLAN name to be assigned. Optional, `vlan_id` takes precedence if both are provided type: string required: - name - passphrase - ssid type: object responses: Psk: content: application/json: schema: $ref: '#/components/schemas/psk' application/vnd.api+json: schema: $ref: '#/components/schemas/psk' 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 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 PsksArray: content: application/json: examples: Example: $ref: '#/components/examples/PsksArrayExample' schema: $ref: '#/components/schemas/psk_list' application/vnd.api+json: examples: Example: $ref: '#/components/examples/PsksArrayExample' schema: $ref: '#/components/schemas/psk_list' description: OK 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 examples: PsksArrayExample: value: - created_time: 0 id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 mac: string modified_time: 0 name: string org_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 passphrase: secretpsk site_id: b069b358-4c97-5319-1f8c-7c5ca64d6ab1 ssid: string usage: multi vlan_id: 1 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 HTTP401Example: value: detail: Authentication credentials were not provided. parameters: org_id: in: path name: org_id required: true schema: examples: - 000000ab-00ab-00ab-00ab-0000000000ab format: uuid type: string page: in: query name: page schema: default: 1 minimum: 1 type: integer psk_id: description: PSK ID in: path name: psk_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 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