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 Stats - Tunnels 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: API Calls to retrieve statistics about the Mist Tunnels at the Org level name: Orgs Stats - Tunnels paths: /api/v1/orgs/{org_id}/stats/tunnels/count: parameters: - $ref: '#/components/parameters/org_id' get: description: Count by Distinct Attributes of Mist Tunnels Stats operationId: countOrgTunnelsStats parameters: - description: "- If `type`==`wxtunnel`: wxtunnel_id / ap / remote_ip / remote_port / state / mxedge_id / mxcluster_id / site_id / peer_mxedge_id; default is wxtunnel_id \n- If `type`==`wan`: mac / site_id / node / peer_ip / peer_host/ ip / tunnel_name / protocol / auth_algo / encrypt_algo / ike_version / last_event / up" in: query name: distinct schema: $ref: '#/components/schemas/org_tunnel_count_distinct' - in: query name: type schema: $ref: '#/components/schemas/org_tunnel_type_count' - $ref: '#/components/parameters/limit' responses: '200': $ref: '#/components/responses/Count' '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: countOrgTunnelsStats tags: - Orgs Stats - Tunnels /api/v1/orgs/{org_id}/stats/tunnels/search: parameters: - $ref: '#/components/parameters/org_id' get: description: 'By default the endpoint returns only `wxtunnel` type stats, to get `wan` type stats you need to specify `type=wan` in the query parameters. Tunnel types: - `wxtunnel` (default) - A WxLan Tunnel (WxTunnel) are used to create a secure connection between Juniper Mist Access Points and third-party VPN concentrators using protocols such as L2TPv3 or dmvpn. - `wan` - A WAN Tunnel is a secure connection between two Gateways, typically used for site-to-site or mesh connectivity. It can be configured with various protocols and encryption methods. If `type` is not specified or `type`==`wxtunnel`, the following parameters are supported: - `mxcluster_id` - the MX cluster ID - `site_id` - the site ID - `wxtunnel_id` - the WX tunnel ID - `ap` - the AP MAC address If `type`==`wan`, the following parameters are supported: - `mac` - the MAC address of the WAN device - `node` - the node ID - `peer_ip` - the peer IP address - `peer_host` - the peer host name - `ip` - the IP address of the WAN device - `tunnel_name` - the name of the tunnel - `protocol` - the protocol used for the tunnel - `auth_algo` - the authentication algorithm used for the tunnel - `encrypt_algo` - the encryption algorithm used for the tunnel - `ike_version` - the IKE version used for the tunnel - `up` - the status of the tunnel (up or down) ' operationId: searchOrgTunnelsStats parameters: - description: If `type`==`wxtunnel` in: query name: mxcluster_id schema: type: string - in: query name: site_id schema: type: string - description: If `type`==`wxtunnel` in: query name: wxtunnel_id schema: type: string - description: If `type`==`wxtunnel` in: query name: ap schema: type: string - description: If `type`==`wan` in: query name: mac schema: type: string - description: If `type`==`wan` in: query name: node schema: type: string - description: If `type`==`wan` in: query name: peer_ip schema: type: string - description: If `type`==`wan` in: query name: peer_host schema: type: string - description: If `type`==`wan` in: query name: ip schema: type: string - description: If `type`==`wan` in: query name: tunnel_name schema: type: string - description: If `type`==`wan` in: query name: protocol schema: type: string - description: If `type`==`wan` in: query name: auth_algo schema: type: string - description: If `type`==`wan` in: query name: encrypt_algo schema: type: string - description: If `type`==`wan` in: query name: ike_version schema: type: string - description: If `type`==`wan` in: query name: up schema: type: string - in: query name: type schema: $ref: '#/components/schemas/tunnel_type' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/start' - $ref: '#/components/parameters/end' - $ref: '#/components/parameters/duration_5m' - $ref: '#/components/parameters/sort' - $ref: '#/components/parameters/search_after' responses: '200': $ref: '#/components/responses/TunnelsSearch' '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: searchOrgTunnelsStats tags: - Orgs Stats - Tunnels components: schemas: response_count: additionalProperties: false properties: distinct: type: string end: type: integer limit: type: integer results: $ref: '#/components/schemas/count_results' start: type: integer total: type: integer required: - distinct - end - limit - results - start - total type: object tunnel_type: default: wxtunnel description: 'enum: `wan`, `wxtunnel`' enum: - wan - wxtunnel type: string stats_mxtunnel: additionalProperties: false description: MxTunnels statistics properties: ap: readOnly: true type: string for_site: readOnly: true type: boolean fwupdate: $ref: '#/components/schemas/fwupdate_stat' last_seen: $ref: '#/components/schemas/last_seen' mtu: readOnly: true type: integer mxcluster_id: format: uuid readOnly: true type: string mxedge_id: format: uuid readOnly: true type: string mxtunnel_id: format: uuid readOnly: true type: string org_id: $ref: '#/components/schemas/org_id' peer_mxedge_id: description: MxEdge ID of the peer(mist edge to mist edge tunnel) format: uuid readOnly: true type: string remote_ip: readOnly: true type: string remote_port: readOnly: true type: integer rx_control_pkts: readOnly: true type: integer sessions: $ref: '#/components/schemas/stats_mxtunnel_sessions' site_id: $ref: '#/components/schemas/site_id' state: $ref: '#/components/schemas/stats_mxtunnel_state' tx_control_pkts: readOnly: true type: integer uptime: readOnly: true type: integer required: - remote_ip type: object response_http403: additionalProperties: false properties: detail: examples: - You do not have permission to perform this action. type: string type: object wan_tunnel_protocol: description: 'enum: `gre`, `ipsec`' enum: - gre - ipsec type: string response_tunnel_search_results: items: $ref: '#/components/schemas/response_tunnel_search_item' type: array count_results: items: $ref: '#/components/schemas/count_result' type: array uniqueItems: true count_result: additionalProperties: type: string properties: count: type: integer required: - count type: object tx_pkts: description: Amount of packets sent since connection examples: - 812204062 format: int64 readOnly: true type: - integer - 'null' fwupdate_stat: additionalProperties: false properties: progress: examples: - 10 maximum: 100 minimum: 0 readOnly: true type: - integer - 'null' status: $ref: '#/components/schemas/fwupdate_stat_status' status_id: examples: - 5 readOnly: true type: - integer - 'null' timestamp: $ref: '#/components/schemas/timestamp' will_retry: examples: - false readOnly: true type: - boolean - 'null' type: object site_id: examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 format: uuid readOnly: true type: string last_seen: description: Last seen timestamp examples: - 1470417522 format: double readOnly: true type: - number - 'null' response_http404: additionalProperties: false properties: id: type: string type: object tunnel_priority: description: 'enum: `primary`, `secondary`' enum: - primary - secondary type: string timestamp: description: Epoch (seconds) format: double readOnly: true type: number stats_mxtunnel_sessions: description: List of sessions items: $ref: '#/components/schemas/stats_mxtunnel_session' readOnly: true type: array uniqueItems: true stats_mxtunnel_session: additionalProperties: false properties: local_sid: description: Remote sessions id (dynamically unless Tunnel is said to be static) type: integer remote_id: description: WxlanTunnel Remote ID type: string remote_sid: description: Remote sessions id (dynamically unless Tunnel is said to be static) type: integer state: type: string required: - local_sid - remote_id - remote_sid - state type: object response_http400: additionalProperties: false properties: detail: examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' type: string type: object tx_bytes: description: Amount of traffic sent since connection examples: - 211217389682 format: int64 readOnly: true type: - integer - 'null' org_tunnel_count_distinct: default: wxtunnel_id description: 'enum: `ap`, `auth_algo`, `encrypt_algo`, `ike_version`, `ip`, `last_event`, `mac`, `mxcluster_id`, `mxedge_id`, `node`, `peer_host`, `peer_ip`, `peer_mxedge_id`, `protocol`, `remote_ip`, `remote_port`, `site_id`, `state`, `tunnel_name`, `up`, `wxtunnel_id`' enum: - ap - auth_algo - encrypt_algo - ike_version - ip - last_event - mac - mxcluster_id - mxedge_id - node - peer_host - peer_ip - peer_mxedge_id - protocol - remote_ip - remote_port - site_id - state - tunnel_name - up - wxtunnel_id 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 fwupdate_stat_status: description: 'enum: `inprogress`, `failed`, `upgraded`, `success`, `scheduled`, `error`' enum: - inprogress - failed - upgraded - success - scheduled - error readOnly: true type: - string - 'null' org_tunnel_type_count: default: wxtunnel description: 'enum: `wan`, `wxtunnel`' enum: - wan - wxtunnel type: string response_tunnel_search_item: oneOf: - $ref: '#/components/schemas/stats_mxtunnel' - $ref: '#/components/schemas/stats_wan_tunnel' stats_wan_tunnel: additionalProperties: false properties: auth_algo: description: Authentication algorithm type: string encrypt_algo: description: Encryption algorithm type: string ike_version: description: IKE version type: string ip: description: IP Address type: string last_event: description: Reason of why the tunnel is down type: string mac: description: Router mac address type: string node: description: Node0/node1 type: string org_id: $ref: '#/components/schemas/org_id' peer_host: description: Peer host type: string peer_ip: description: Peer ip address type: string priority: $ref: '#/components/schemas/tunnel_priority' protocol: $ref: '#/components/schemas/wan_tunnel_protocol' rx_bytes: $ref: '#/components/schemas/rx_bytes' rx_pkts: $ref: '#/components/schemas/rx_pkts' site_id: $ref: '#/components/schemas/site_id' tunnel_name: description: Mist Tunnel Name type: string tx_bytes: $ref: '#/components/schemas/tx_bytes' tx_pkts: $ref: '#/components/schemas/tx_pkts' up: type: boolean uptime: description: Duration from first (or last) SA was established type: integer wan_name: description: WAN interface name examples: - wan type: string required: - peer_ip type: object rx_bytes: description: Amount of traffic received since connection examples: - 8515104416 format: int64 readOnly: true type: - integer - 'null' stats_mxtunnel_state: description: 'enum: `established`, `established_with_sessions`, `idle`, `wait-ctrl-conn`, `wait-ctrl-reply`' enum: - established - established_with_sessions - idle - wait-ctrl-conn - wait-ctrl-reply readOnly: true type: string response_http401: additionalProperties: false properties: detail: examples: - Authentication credentials were not provided. type: string type: object response_tunnel_search: additionalProperties: false properties: end: type: integer limit: type: integer next: type: string results: $ref: '#/components/schemas/response_tunnel_search_results' start: type: integer total: type: integer required: - end - limit - results - start - total type: object org_id: examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 format: uuid readOnly: true type: string rx_pkts: description: Amount of packets received since connection examples: - 57770567 format: int64 readOnly: true type: - integer - 'null' examples: CountExample: value: distinct: string end: 0 limit: 0 results: - count: 0 property: string start: 0 total: 0 TunnelsSearchTypeWan: value: end: 1531862583 limit: 10 results: - auth_algo: hmac-md5-96 encrypt_algo: aes-256-cbc ike_version: '2' ip: 192.168.233.0 last_event: down reason mac: 020001ae9dd5 node: node0 org_id: 78c11da8-f984-4425-bedb-a7ddd7d0f6da peer_host: sunnyvale1-vpn.zscalerbeta.net peer_ip: 10.224.8.16 protocol: ipsec rx_bytes: 150 rx_pkts: 75 site_id: e83e7928-eda1-4e93-82db-df3dd42ab726 tunnel_name: Device-ipsec-1 tx_bytes: 100 tx_pkts: 50 up: true uptime: 10 wan_name: wan start: 1531776183 total: 1 TunnelsSearchTypeWxtunnel: value: end: 1531862583 limit: 10 results: - ap: 5c5b35000010 last_seen: 1547437078 mxcluster_id: 572586b7-f97b-a22b-526c-8b97a3f609c4 mxedge_id: 387804a7-3474-85ce-15a2-f9a9684c9c90 mxtunnel_id: 7dae216d-7c98-a51b-e068-dd7d477b7216 org_id: 2818e386-8dec-2562-9ede-5b8a0fbbdc71 peer_mxedge_id: 09320a5c-bc23-441e-80a0-b96c632d45f5 remote_ip: 172.16.1.2 remote_port: 13535 rx_control_pkts: 7571 sessions: - local_sid: 31 remote_id: mxtunnel remote_sid: 13 state: established site_id: 4ac1dcf4-9d8b-7211-65c4-057819f0862b state: established_with_sessions tx_control_pkts: 14862 uptime: 135 start: 1531776183 total: 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 duration_5m: description: Duration like 7d, 2w in: query name: duration schema: default: 5m examples: - 10m 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 start: description: Start time (epoch timestamp in seconds, or relative string like "-1d", "-1w") in: query name: start schema: 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 limit: in: query name: limit schema: default: 100 minimum: 0 type: integer responses: 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 TunnelsSearch: content: application/json: examples: Type Wan: $ref: '#/components/examples/TunnelsSearchTypeWan' Type Wxtunnel: $ref: '#/components/examples/TunnelsSearchTypeWxtunnel' schema: $ref: '#/components/schemas/response_tunnel_search' application/vnd.api+json: examples: Type Wan: $ref: '#/components/examples/TunnelsSearchTypeWan' Type Wxtunnel: $ref: '#/components/examples/TunnelsSearchTypeWxtunnel' schema: $ref: '#/components/schemas/response_tunnel_search' description: OK 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 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 Count: content: application/json: examples: Example: $ref: '#/components/examples/CountExample' schema: $ref: '#/components/schemas/response_count' application/vnd.api+json: examples: Example: $ref: '#/components/examples/CountExample' schema: $ref: '#/components/schemas/response_count' description: Result of Count 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