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 MxClusters 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 Mist Edge Cluster (MxCluster) is a group of Juniper Mist Edge devices that are configured to work together in order to provide high availability and load balancing for the tunneling of traffic from access points (APs). The cluster can consist of a single edge device or multiple edge devices. name: Orgs MxClusters paths: /api/v1/orgs/{org_id}/mxclusters: parameters: - $ref: '#/components/parameters/org_id' get: description: Get List of Org MxEdge Clusters operationId: listOrgMxEdgeClusters parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': $ref: '#/components/responses/MxclustersArray' '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: listOrgMxEdgeClusters tags: - Orgs MxClusters post: description: Create MxCluster operationId: createOrgMxEdgeCluster requestBody: content: application/json: examples: Example: value: name: string radsec: auth_servers: - host: string port: 0 enabled: true tunterm_ap_subnets: - string tunterm_hosts: - string schema: $ref: '#/components/schemas/mxcluster' description: Request Body responses: '200': $ref: '#/components/responses/Mxcluster' '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: createOrgMxEdgeCluster tags: - Orgs MxClusters /api/v1/orgs/{org_id}/mxclusters/{mxcluster_id}: parameters: - $ref: '#/components/parameters/org_id' - $ref: '#/components/parameters/mxcluster_id' delete: description: Delete Org MXEdge Cluster operationId: deleteOrgMxEdgeCluster 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: deleteOrgMxEdgeCluster tags: - Orgs MxClusters get: description: Get Org MxEdge Cluster Details operationId: getOrgMxEdgeCluster responses: '200': $ref: '#/components/responses/Mxcluster' '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: getOrgMxEdgeCluster tags: - Orgs MxClusters put: description: Update Org MxEdge Cluster operationId: updateOrgMxEdgeCluster requestBody: content: application/json: examples: Example: value: name: string radsec: auth_servers: - host: string port: 0 enabled: true tunterm_ap_subnets: - string tunterm_hosts: - string schema: $ref: '#/components/schemas/mxcluster' description: Request Body responses: '200': $ref: '#/components/responses/Mxcluster' '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: updateOrgMxEdgeCluster tags: - Orgs MxClusters components: schemas: mxcluster_tunterm_hosts_order: description: List of index of tunterm_hosts items: type: integer type: array id: description: Unique ID of the object instance in the Mist Organization examples: - 53f10664-3ce8-4c27-b382-0ef66432349f format: uuid readOnly: true type: string tunterm_dhcpd_type: default: relay description: 'enum: `relay`' enum: - relay type: string strings: items: type: string type: array uniqueItems: true mxcluster_rad_auth_server_keywrap_format: default: ascii description: 'if used for Mist APs. enum: `ascii`, `hex`' enum: - ascii - hex type: - string - 'null' mxedge_mgmt_oob_ip_type: default: dhcp description: 'enum: `dhcp`, `disabled`, `static`' enum: - dhcp - disabled - static type: string mxedge_das_coa_server: additionalProperties: false properties: disable_event_timestamp_check: default: false description: Whether to disable Event-Timestamp Check type: boolean enabled: type: boolean host: description: This server configured to send CoA|DM to mist edges type: string port: default: 3799 description: Mist edges will allow this host on this port type: integer require_message_authenticator: default: false description: Whether to require Message-Authenticator in requests type: boolean secret: format: password type: string type: object mxcluster_radsec_auth_server_ssids: description: List of ssids that will use this server if match_ssid is true and match is found items: type: string type: array response_http403: additionalProperties: false properties: detail: examples: - You do not have permission to perform this action. type: string type: object mxcluster_radsec_acct_servers: description: List of RADIUS accounting servers, optional, order matters where the first one is treated as primary items: $ref: '#/components/schemas/mxcluster_radsec_acct_server' type: array uniqueItems: true mxcluster: description: MxCluster properties: created_time: $ref: '#/components/schemas/created_time' for_site: readOnly: true type: boolean id: $ref: '#/components/schemas/id' mist_das: $ref: '#/components/schemas/mxedge_das' mist_nac: $ref: '#/components/schemas/mxcluster_nac' modified_time: $ref: '#/components/schemas/modified_time' mxedge_mgmt: $ref: '#/components/schemas/mxedge_mgmt' name: type: string org_id: $ref: '#/components/schemas/org_id' proxy: $ref: '#/components/schemas/proxy' radsec: $ref: '#/components/schemas/mxcluster_radsec' radsec_tls: $ref: '#/components/schemas/mxcluster_radsec_tls' site_id: $ref: '#/components/schemas/site_id' tunterm_ap_subnets: $ref: '#/components/schemas/mxcluster_tunterm_ap_subnets' tunterm_dhcpd_config: $ref: '#/components/schemas/tunterm_dhcpd_config' tunterm_extra_routes: $ref: '#/components/schemas/mxcluster_tunterm_extra_routes' tunterm_hosts: $ref: '#/components/schemas/mxcluster_tunterm_hosts' tunterm_hosts_order: $ref: '#/components/schemas/mxcluster_tunterm_hosts_order' tunterm_hosts_selection: $ref: '#/components/schemas/mxcluster_tunterm_hosts_selection' tunterm_monitoring: $ref: '#/components/schemas/mxcluster_tunterm_monitoring' tunterm_monitoring_disabled: type: boolean type: object mxcluster_nac: additionalProperties: false properties: acct_server_port: default: 1813 type: integer auth_server_port: default: 1812 type: integer client_ips: additionalProperties: $ref: '#/components/schemas/mxcluster_nac_client_ips' description: Property key is the RADIUS Client IP/Subnet. type: object enabled: default: false type: boolean secret: examples: - testing123 type: string type: object mxcluster_radsec: additionalProperties: false description: MxEdge RadSec Configuration properties: acct_servers: $ref: '#/components/schemas/mxcluster_radsec_acct_servers' auth_servers: $ref: '#/components/schemas/mxcluster_radsec_auth_servers' enabled: description: Whether to enable service on Mist Edge i.e. RADIUS proxy over TLS type: boolean match_ssid: description: Whether to match ssid in request message to select from a subset of RADIUS servers type: boolean nas_ip_source: $ref: '#/components/schemas/mxcluster_radsec_nas_ip_source' proxy_hosts: $ref: '#/components/schemas/mxcluster_radsec_proxy_hosts' server_selection: $ref: '#/components/schemas/mxcluster_radsec_server_selection' src_ip_source: $ref: '#/components/schemas/mxcluster_radsec_src_ip_source' type: object mxcluster_tunterm_ap_subnets: description: List of subnets where we allow AP to establish Mist Tunnels from items: type: string type: array mxedge_mgmt: additionalProperties: false properties: config_auto_revert: default: false type: boolean fips_enabled: default: false type: boolean mist_password: examples: - MIST_PASSWORD type: string oob_ip_type: $ref: '#/components/schemas/mxedge_mgmt_oob_ip_type' oob_ip_type6: $ref: '#/components/schemas/mxedge_mgmt_oob_ip_type6' root_password: examples: - ROOT_PASSWORD format: password type: string type: object mxedge_das_coa_servers: description: Dynamic authorization clients configured to send CoA|DM to mist edges on port 3799 items: $ref: '#/components/schemas/mxedge_das_coa_server' type: array tunterm_dhcpd_config: additionalProperties: $ref: '#/components/schemas/tunterm_dhcpd_config_property' description: DHCP server/relay configuration of Mist Tunneled VLANs. Property key is the VLAN ID properties: enabled: default: false type: boolean servers: $ref: '#/components/schemas/strings' type: $ref: '#/components/schemas/tunterm_dhcpd_type' type: object proxy: additionalProperties: false description: Proxy Configuration to talk to Mist properties: disabled: default: false examples: - true type: boolean url: examples: - https://proxy.corp.com:8080/ type: string type: object mxclusters: items: $ref: '#/components/schemas/mxcluster' type: array site_id: examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 format: uuid readOnly: true type: string mxcluster_nac_client_ip: additionalProperties: false properties: require_message_authenticator: default: false description: Whether to require Message-Authenticator in requests type: boolean secret: description: If different from above type: string site_id: description: Present only for 3rd party clients examples: - 00000000-0000-0000-1234-000000000000 format: uuid type: string vendor: $ref: '#/components/schemas/mxcluster_nac_client_vendor' type: object response_http404: additionalProperties: false properties: id: type: string type: object mxcluster_tunterm_hosts: description: Hostnames or IPs where a Mist Tunnel will use as the Peer (i.e. they are reachable from AP) items: type: string type: array tunterm_monitoring: items: $ref: '#/components/schemas/tunterm_monitoring_item' type: array mxcluster_nac_client_vendor: description: 'convention to be followed is : "-", could be an os/platform/model/company. For ex: for cisco vendor, there could variants wrt os (such as ios, nxos etc), platforms (asa etc), or acquired companies (such as meraki, aironet) etc. enum: `aruba`, `cisco-aironet`, `cisco-dnac`, `cisco-ios`, `cisco-meraki`, `brocade`, `generic`, `juniper`, `paloalto`' enum: - aruba - cisco-aironet - cisco-dnac - cisco-ios - cisco-meraki - brocade - generic - juniper - paloalto examples: - cisco-ios type: string mxcluster_radsec_auth_servers: description: List of RADIUS authentication servers, order matters where the first one is treated as primary items: $ref: '#/components/schemas/mxcluster_radsec_auth_server' type: array uniqueItems: true mxcluster_radsec_nas_ip_source: default: any description: 'SSpecify NAS-IP-ADDRESS, NAS-IPv6-ADDRESS to use with auth_servers. enum: `any`, `oob`, `oob6`, `tunnel`, `tunnel6`' enum: - any - oob - oob6 - tunnel - tunnel6 type: string response_http400: additionalProperties: false properties: detail: examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' type: string type: object mxcluster_radsec_auth_server: additionalProperties: false properties: host: description: IP / hostname of RADIUS server type: string inband_status_check: default: false description: Whether to enable inband status check type: boolean inband_status_interval: default: 300 description: Inband status interval, in seconds minimum: 0 type: integer keywrap_enabled: description: If used for Mist APs, enable keywrap algorithm. Default is false type: boolean keywrap_format: $ref: '#/components/schemas/mxcluster_rad_auth_server_keywrap_format' keywrap_kek: description: If used for Mist APs, encryption key type: string keywrap_mack: description: If used for Mist APs, Message Authentication Code Key type: string port: default: 1812 description: Auth port of RADIUS server type: integer retry: default: 2 description: Authentication request retry type: integer secret: description: Secret of RADIUS server format: password type: string ssids: $ref: '#/components/schemas/mxcluster_radsec_auth_server_ssids' timeout: default: 5 description: Authentication request timeout, in seconds type: integer type: object mxcluster_tunterm_hosts_selection: default: shuffle description: "Ordering of tunterm_hosts for mxedge within the same mxcluster. enum:\n * `shuffle`: the ordering of tunterm_hosts is randomized by the device''s MAC\n * `shuffle-by-site`: shuffle by site_id+tunnel_id (so when client connects to a specific Tunnel, it will go to the same (order of) mxedge, and we load-balancing between tunnels)\n * `ordered`: order decided by tunterm_hosts_order" enum: - ordered - shuffle - shuffle-by-site type: string mxcluster_radsec_src_ip_source: default: any description: 'Specify IP address to connect to auth_servers and acct_servers. enum: `any`, `oob`, `oob6`, `tunnel`, `tunnel6`' enum: - any - oob - oob6 - tunnel - tunnel6 type: string 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 mxcluster_radsec_server_selection: default: ordered description: 'When ordered, Mist Edge will prefer and go back to the first radius server if possible. enum: `ordered`, `unordered`' enum: - ordered - unordered type: string mxedge_mgmt_oob_ip_type6: default: autoconf description: 'enum: `autoconf`, `dhcp`, `disabled`, `static`' enum: - autoconf - dhcp - disabled - static type: string mxcluster_tunterm_extra_routes: additionalProperties: $ref: '#/components/schemas/mxcluster_tunterm_extra_route' description: Extra routes for Mist Tunneled VLANs. Property key is a CIDR type: object mxcluster_radsec_tls: additionalProperties: false properties: keypair: type: string type: object mxcluster_radsec_proxy_hosts: description: Hostnames or IPs for Mist AP to use as the TLS Server (i.e. they are reachable from AP) in addition to `tunterm_hosts` items: type: string type: array mxedge_das: additionalProperties: false description: Configure cloud-assisted dynamic authorization service on this cluster of mist edges properties: coa_servers: $ref: '#/components/schemas/mxedge_das_coa_servers' enabled: default: false type: boolean type: object mxcluster_radsec_acct_server: additionalProperties: false properties: host: description: IP / hostname of RADIUS server type: string port: default: 1813 description: Acct port of RADIUS server type: integer secret: description: Secret of RADIUS server format: password type: string ssids: $ref: '#/components/schemas/mxcluster_radsec_acct_server_ssids' type: object mxcluster_tunterm_monitoring: items: $ref: '#/components/schemas/tunterm_monitoring' type: array mxcluster_radsec_acct_server_ssids: description: List of ssids that will use this server if match_ssid is true and match is found items: type: string type: array tunterm_monitoring_protocol: description: 'enum: `arp`, `ping`, `tcp`' enum: - arp - ping - tcp examples: - tcp minLength: 1 type: string response_http401: additionalProperties: false properties: detail: examples: - Authentication credentials were not provided. type: string type: object mxcluster_tunterm_extra_route: additionalProperties: false properties: via: type: string type: object org_id: examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 format: uuid readOnly: true type: string tunterm_dhcpd_config_property: additionalProperties: false properties: enabled: default: false type: boolean servers: $ref: '#/components/schemas/strings' type: $ref: '#/components/schemas/tunterm_dhcpd_type' type: object mxcluster_nac_client_ips: additionalProperties: $ref: '#/components/schemas/mxcluster_nac_client_ip' type: object modified_time: description: When the object has been modified for the last time, in epoch format: double readOnly: true type: number created_time: description: When the object has been created, in epoch format: double readOnly: true type: number tunterm_monitoring_item: additionalProperties: false properties: host: description: Can be ip, ipv6, hostname examples: - 10.2.8.15 minLength: 1 type: string port: description: When `protocol`==`tcp` examples: - 80 type: integer protocol: $ref: '#/components/schemas/tunterm_monitoring_protocol' src_vlan_id: description: Optional source for the monitoring check, vlan_id configured in tunterm_other_ip_configs examples: - 5 type: integer timeout: default: 300 examples: - 300 type: integer type: object responses: MxclustersArray: content: application/json: examples: Example: $ref: '#/components/examples/MxclustersArrayExample' schema: $ref: '#/components/schemas/mxclusters' application/vnd.api+json: examples: Example: $ref: '#/components/examples/MxclustersArrayExample' schema: $ref: '#/components/schemas/mxclusters' description: OK Mxcluster: content: application/json: examples: Example: $ref: '#/components/examples/MxclusterExample' schema: $ref: '#/components/schemas/mxcluster' application/vnd.api+json: examples: Example: $ref: '#/components/examples/MxclusterExample' schema: $ref: '#/components/schemas/mxcluster' 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 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 parameters: org_id: in: path name: org_id required: true schema: examples: - 000000ab-00ab-00ab-00ab-0000000000ab format: uuid type: string mxcluster_id: in: path name: mxcluster_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 limit: in: query name: limit schema: default: 100 minimum: 0 type: integer examples: HTTP400Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' MxclusterExample: value: created_time: 0 for_site: true id: 468f6eca-6276-4993-bfeb-53cbbbba6f68 modified_time: 0 name: string org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b radsec: acct_servers: - host: string port: 1813 secret: string auth_servers: - host: string port: 1812 secret: string enabled: true server_selection: ordered radsec_tls: keypair: string site_id: 72771e6a-6f5e-4de4-a5b9-1266c4197811 tunterm_ap_subnets: - string tunterm_dhcpd_config: enabled: false property1: enabled: false servers: - string type: relay property2: enabled: false servers: - string type: relay servers: - string type: relay tunterm_extra_routes: property1: via: string property2: via: string tunterm_hosts: - string HTTP429Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold HTTP403Example: value: detail: You do not have permission to perform this action. HTTP401Example: value: detail: Authentication credentials were not provided. MxclustersArrayExample: value: - created_time: 0 for_site: true id: 467f6eca-6276-4993-bfeb-53cbbbba6f78 modified_time: 0 name: string org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b radsec: acct_servers: - host: string port: 1813 secret: string auth_servers: - host: string port: 1812 secret: string enabled: true server_selection: ordered radsec_tls: keypair: string site_id: 72771e6a-6f5e-4de4-a5b9-1266c4197811 tunterm_ap_subnets: - string tunterm_dhcpd_config: enabled: false property1: enabled: false servers: - string type: relay property2: enabled: false servers: - string type: relay servers: - string type: relay tunterm_extra_routes: property1: via: string property2: via: string tunterm_hosts: - string 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