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 Sites AP Templates 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: 'AP Templates are defining Wi-Fi and AP settings that can be assigned to Access Points based on different types of rules. Site AP Templates are created and managed at the site level and can only be referenced and used within that particular site.' name: Sites AP Templates paths: /api/v1/sites/{site_id}/aptemplates/derived: parameters: - $ref: '#/components/parameters/site_id' get: description: Get the list of derived AP Templates for a site operationId: listSiteApTemplatesDerived parameters: - description: Whether resolve the site variables in: query name: resolve schema: type: boolean responses: '200': $ref: '#/components/responses/AptemplatesArray' '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: listSiteApTemplatesDerived tags: - Sites AP Templates 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 radsec_mxcluster_ids: description: To use Org mxedges when this WLAN does not use mxtunnel, specify their mxcluster_ids. Org mxedge(s) identified by mxcluster_ids items: examples: - 572586b7-f97b-a22b-526c-8b97a3f609c4 format: uuid type: string type: array ap_template: properties: ap_matching: $ref: '#/components/schemas/ap_template_matching' created_time: $ref: '#/components/schemas/created_time' for_site: readOnly: true type: boolean id: $ref: '#/components/schemas/id' modified_time: $ref: '#/components/schemas/modified_time' org_id: $ref: '#/components/schemas/org_id' site_id: $ref: '#/components/schemas/site_id' wifi: $ref: '#/components/schemas/ap_template_wifi' required: - ap_matching type: object radsec_proxy_hosts: description: Default is site.mxedge.radsec.proxy_hosts which must be a superset of all `wlans[*].radsec.proxy_hosts`. When `radsec.proxy_hosts` are not used, tunnel peers (org or site mxedges) are used irrespective of `use_site_mxedge` items: examples: - mxedge1.local type: string type: array response_http403: additionalProperties: false properties: detail: examples: - You do not have permission to perform this action. type: string type: object radsec: additionalProperties: false description: RadSec settings properties: coa_enabled: default: false type: boolean enabled: type: boolean idle_timeout: $ref: '#/components/schemas/radsec_idle_timeout' mxcluster_ids: $ref: '#/components/schemas/radsec_mxcluster_ids' proxy_hosts: $ref: '#/components/schemas/radsec_proxy_hosts' server_name: description: Name of the server to verify (against the cacerts in Org Setting). Only if not Mist Edge. examples: - radsec.abc.com type: string servers: $ref: '#/components/schemas/radsec_servers' use_mxedge: description: use mxedge(s) as RadSec Proxy type: boolean use_site_mxedge: default: false description: To use Site mxedges when this WLAN does not use mxtunnel type: boolean type: object ap_template_matching_rule: additionalProperties: false properties: match_model: minLength: 1 type: string name: minLength: 1 type: string port_config: additionalProperties: $ref: '#/components/schemas/ap_port_config' description: Property key is the interface(s) name (e.g. "eth1,eth2") type: object type: object radsec_idle_timeout: anyOf: - default: 60 type: integer - type: string description: Radsec Idle Timeout in seconds. Default is 60 radius_acct_port: anyOf: - maximum: 65545 minimum: 1 type: integer - type: string description: Radius Auth Port, value from 1 to 65535, default is 1813 radsec_server: additionalProperties: false properties: host: examples: - 1.1.1.1 type: string port: examples: - 1812 maximum: 65535 minimum: 1 type: integer type: object radius_auth_server: additionalProperties: false description: Authentication Server properties: host: description: IP/ hostname of RADIUS server examples: - 1.2.3.4 type: string keywrap_enabled: type: boolean keywrap_format: $ref: '#/components/schemas/radius_keywrap_format' keywrap_kek: examples: - '1122334455' type: string keywrap_mack: examples: - '1122334455' type: string port: $ref: '#/components/schemas/radius_auth_port' require_message_authenticator: default: false description: Whether to require Message-Authenticator in requests type: boolean secret: description: Secret of RADIUS server examples: - testing123 format: password type: string required: - host - secret type: object ap_templates: items: $ref: '#/components/schemas/ap_template' type: array radius_acct_server: additionalProperties: false properties: host: description: IP/ hostname of RADIUS server examples: - 1.2.3.4 type: string keywrap_enabled: type: boolean keywrap_format: $ref: '#/components/schemas/radius_keywrap_format' keywrap_kek: examples: - '1122334455' type: string keywrap_mack: examples: - '1122334455' type: string port: $ref: '#/components/schemas/radius_acct_port' secret: description: Secret of RADIUS server examples: - testing123 format: password type: string required: - host - secret type: object site_id: examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 format: uuid readOnly: true type: string ap_template_matching: additionalProperties: false properties: enabled: type: boolean rules: $ref: '#/components/schemas/ap_template_matching_rules' type: object radius_keywrap_format: description: 'enum: `ascii`, `hex`' enum: - ascii - hex type: string response_http404: additionalProperties: false properties: id: type: string type: object ap_port_config: additionalProperties: false properties: disabled: default: false type: boolean dynamic_vlan: $ref: '#/components/schemas/ap_port_config_dynamic_vlan' enable_mac_auth: default: false type: boolean forwarding: $ref: '#/components/schemas/ap_port_config_forwarding' mac_auth_preferred: default: false description: When `true`, we'll do dot1x then mac_auth. enable this to prefer mac_auth type: boolean mac_auth_protocol: $ref: '#/components/schemas/ap_port_config_mac_auth_protocol' mist_nac: $ref: '#/components/schemas/wlan_mist_nac' mx_tunnel_id: default: '' description: If `forwarding`==`mxtunnel`, vlan_ids comes from mxtunnel examples: - 08cd7499-5841-51c8-e663-fb16b6f3b45e format: uuid type: string mxtunnel_name: default: '' description: If `forwarding`==`site_mxedge`, vlan_ids comes from site_mxedge (`mxtunnels` under site setting) type: string port_auth: $ref: '#/components/schemas/ap_port_config_port_auth' port_vlan_id: description: If `forwarding`==`limited` examples: - 1 maximum: 4094 minimum: 1 type: integer radius_config: $ref: '#/components/schemas/radius_config' radsec: $ref: '#/components/schemas/radsec' vlan_id: description: "Optional to specify the vlan id for a tunnel if forwarding is for `wxtunnel`, `mxtunnel` or `site_mxedge`.\n * if vlan_id is not specified then it will use first one in vlan_ids[] of the mxtunnel.\n * if forwarding == site_mxedge, vlan_ids comes from site_mxedge (`mxtunnels` under site setting)" examples: - 9 maximum: 4094 minimum: 1 type: integer vlan_ids: description: If `forwarding`==`limited`, comma separated list of additional vlan ids allowed on this port examples: - 10,20,30 type: string wxtunnel_id: default: '' description: If `forwarding`==`wxtunnel`, the port is bridged to the vlan of the session examples: - 7dae216d-7c98-a51b-e068-dd7d477b7216 format: uuid type: string wxtunnel_remote_id: default: '' description: If `forwarding`==`wxtunnel`, the port is bridged to the vlan of the session examples: - wifiguest type: string type: object radius_auth_servers: items: $ref: '#/components/schemas/radius_auth_server' type: array uniqueItems: true ap_template_wifi: additionalProperties: false properties: cisco_enabled: type: boolean disable_11k: default: false type: boolean disable_radios_when_power_constrained: type: boolean enable_arp_spoof: type: boolean enable_shared_radio_scanning: default: false type: boolean enabled: default: true type: boolean locate_connected: default: false type: boolean locate_unconnected: default: false type: boolean mesh_allow_dfs: default: false type: boolean mesh_enable_crm: type: boolean mesh_enabled: type: boolean proxy_arp: default: false type: boolean type: object response_http400: additionalProperties: false properties: detail: examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' type: string type: object radius_config: additionalProperties: false description: Junos Radius config properties: acct_interim_interval: default: 0 description: How frequently should interim accounting be reported, 60-65535. default is 0 (use one specified in Access-Accept request from RADIUS Server). Very frequent messages can affect the performance of the radius server, 600 and up is recommended when enabled maximum: 65535 minimum: 0 type: integer acct_servers: $ref: '#/components/schemas/radius_acct_servers' auth_servers: $ref: '#/components/schemas/radius_auth_servers' auth_servers_retries: default: 3 description: radius auth session retries type: integer auth_servers_timeout: default: 5 description: radius auth session timeout type: integer coa_enabled: default: false type: boolean coa_port: default: 3799 maximum: 65535 minimum: 1 type: integer network: description: use `network`or `source_ip`, which network the RADIUS server resides, if there's static IP for this network, we'd use it as source-ip type: string source_ip: description: use `network`or `source_ip` type: string type: object wlan_mist_nac: additionalProperties: false properties: acct_interim_interval: default: 0 description: How frequently should interim accounting be reported, 60-65535. default is 0 (use one specified in Access-Accept request from Server). Very frequent messages can affect the performance of the radius server, 600 and up is recommended when enabled. examples: - 60 maximum: 65535 minimum: 0 type: integer auth_servers_retries: default: 2 description: Radius auth session retries. Following fast timers are set if `fast_dot1x_timers` knob is enabled. "retries" are set to value of `auth_servers_timeout`. "max-requests" is also set when setting `auth_servers_retries` is set to default value to 3. examples: - 3 maximum: 10 minimum: 1 type: integer auth_servers_timeout: default: 5 description: Radius auth session timeout. Following fast timers are set if `fast_dot1x_timers` knob is enabled. "quite-period" and "transmit-period" are set to half the value of `auth_servers_timeout`. "supplicant-timeout" is also set when setting `auth_servers_timeout` is set to default value of 10. examples: - 5 maximum: 30 minimum: 1 type: integer coa_enabled: default: false description: Allows a RADIUS server to dynamically modify the authorization status of a user session. type: boolean coa_port: description: the communication port used for “Change of Authorization” (CoA) messages examples: - 3799 maximum: 65535 minimum: 1 type: integer enabled: default: false description: "When enabled:\n * `auth_servers` is ignored\n * `acct_servers` is ignored\n * `auth_servers_*` are ignored\n * `coa_servers` is ignored\n * `radsec` is ignored\n * `coa_enabled` is assumed" type: boolean fast_dot1x_timers: default: false description: If set to true, sets default fast-timers with values calculated from `auth_servers_timeout` and `auth_server_retries`. type: boolean network: description: Which network the mist nac server resides in examples: - default type: - string - 'null' source_ip: description: In case there is a static IP for this network, we can specify it using source ip examples: - 1.2.3.4 type: - string - 'null' type: object radius_acct_servers: items: $ref: '#/components/schemas/radius_acct_server' 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 ap_port_config_dynamic_vlan: additionalProperties: false description: Optional dynamic vlan properties: default_vlan_id: examples: - 999 maximum: 4094 minimum: 1 type: integer enabled: type: boolean type: type: string vlans: additionalProperties: type: - string - 'null' examples: - 1-10: null user: null type: object type: object ap_port_config_mac_auth_protocol: default: pap description: 'if `enable_mac_auth`==`true`, allows user to select an authentication protocol. enum: `eap-md5`, `eap-peap`, `pap`' enum: - eap-md5 - eap-peap - pap type: string ap_port_config_forwarding: default: all description: "enum: \n * `all`: local breakout, All VLANs\n * `limited`: local breakout, only the VLANs configured in `port_vlan_id` and `vlan_ids`\n * `mxtunnel`: central breakout to an Org Mist Edge (requires `mxtunnel_id`)\n * `site_mxedge`: central breakout to a Site Mist Edge (requires `mxtunnel_name`)\n * `wxtunnel`': central breakout to an Org WxTunnel (requires `wxtunnel_id`)" enum: - all - limited - mxtunnel - site_mxedge - wxtunnel examples: - all type: string ap_port_config_port_auth: default: none description: 'When doing port auth. enum: `dot1x`, `none`' enum: - dot1x - none examples: - none type: string radsec_servers: description: List of RadSec Servers. Only if not Mist Edge. items: $ref: '#/components/schemas/radsec_server' type: array uniqueItems: true response_http401: additionalProperties: false properties: detail: examples: - Authentication credentials were not provided. type: string type: object ap_template_matching_rules: items: $ref: '#/components/schemas/ap_template_matching_rule' type: array uniqueItems: true org_id: examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 format: uuid readOnly: true type: string 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 radius_auth_port: anyOf: - maximum: 65545 minimum: 1 type: integer - type: string description: Radius Auth Port, value from 1 to 65535, default is 1812 responses: AptemplatesArray: content: application/json: examples: Example: $ref: '#/components/examples/AptemplatesArrayExample' schema: $ref: '#/components/schemas/ap_templates' application/vnd.api+json: examples: Example: $ref: '#/components/examples/AptemplatesArrayExample' schema: $ref: '#/components/schemas/ap_templates' description: Example response 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 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: AptemplatesArrayExample: value: - ap_matching: enabled: true rules: - match_model: string name: string port_config: eth1,eth2: disabled: true dynamic_vlan: default_vlan_id: 999 enabled: true port_vlan_id: 1 vlan_id: 9 vlan_ids: 1, 10, 50 created_time: 0 for_site: true id: 497f6eca-6276-4993-bfeb-53cbbbba9f08 modified_time: 0 org_id: a40f5d1f-d889-42e9-94ea-b9b33585fc6b site_id: 72771e6a-6f5e-4de4-a5b9-1266c4197811 wifi: cisco_enabled: true disable_11k: false disable_radios_when_power_constrained: true enable_arp_spoof: true enable_shared_radio_scanning: false enabled: true locate_connected: false locate_unconnected: false mesh_allow_dfs: false mesh_enable_crm: true mesh_enabled: true proxy_arp: false 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: site_id: in: path name: site_id required: true schema: examples: - 000000ab-00ab-00ab-00ab-0000000000ab format: uuid type: 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