Juniper Mist AI Orgs AP Templates API

AP Templates are defining Wi-Fi and AP settings that can be assigned to Access Points based on different types of rules. AP Templates must be assigned to one or multiple sites to be used.

Operations 5

GET /api/v1/orgs/{org_id}/aptemplates listOrgAptemplates #
POST /api/v1/orgs/{org_id}/aptemplates createOrgAptemplate #
DELETE /api/v1/orgs/{org_id}/aptemplates/{aptemplate_id} deleteOrgAptemplate #
GET /api/v1/orgs/{org_id}/aptemplates/{aptemplate_id} getOrgAptemplate #
PUT /api/v1/orgs/{org_id}/aptemplates/{aptemplate_id} updateOrgAptemplate #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/mist-ai-orgs-ap-templates-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

mist-ai-orgs-ap-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: tmunzer@juniper.net
    name: Thomas Munzer
  description: '> Version: **2604.1.1**

    >

    > Date: **May 13, 2026**

    <div class="notification"> NOTE:<br>Some important API changes will be introduced. Please make sure to read the <a href="https://www.juniper.net/documentation/us/en/software/mist/api/http/guides/important-api-changes">announcements</a> </div>


    ---

    ## 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 Orgs 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.


    AP Templates must be assigned to one or multiple sites to be used.'
  name: Orgs AP Templates
paths:
  /api/v1/orgs/{org_id}/aptemplates:
    parameters:
    - $ref: '#/components/parameters/org_id'
    get:
      description: Get List of Org AP Templates
      operationId: listOrgAptemplates
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page'
      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: listOrgAptemplates
      tags:
      - Orgs AP Templates
    post:
      description: Create Org AP Template
      operationId: createOrgAptemplate
      requestBody:
        content:
          application/json:
            examples:
              Example:
                value:
                  ap_matching:
                    enabled: true
                    rules:
                    - match_model: string
                      name: string
                      port_config:
                        property1:
                          disabled: true
                          dynamic_vlan:
                            default_vlan_id: 999
                            enabled: true
                            type: string
                            vlans:
                              1-10: null
                              user: null
                          enable_mac_auth: false
                          forwarding: all
                          mx_tunnel_id: 08cd7499-5841-51c8-e663-fb16b6f3b45e
                          mxtunnel_name: string
                          port_auth: none
                          port_vlan_id: 1
                          radius_config:
                            acct_interim_interval: 0
                            acct_servers:
                            - host: 1.2.3.4
                              keywrap_enabled: true
                              keywrap_format: hex
                              keywrap_kek: '1122334455'
                              keywrap_mack: '1122334455'
                              port: 1813
                              secret: testing123
                            auth_servers:
                            - host: 1.2.3.4
                              keywrap_enabled: true
                              keywrap_format: hex
                              keywrap_kek: '1122334455'
                              keywrap_mack: '1122334455'
                              port: 1812
                              secret: testing123
                            auth_servers_retries: 3
                            auth_servers_timeout: 5
                            coa_enabled: false
                            coa_port: 3799
                            network: string
                            source_ip: string
                          radsec:
                            enabled: true
                            idle_timeout: 60
                            mxcluster_ids:
                            - 572586b7-f97b-a22b-526c-8b97a3f609c4
                            proxy_hosts:
                            - mxedge1.local
                            server_name: radsec.abc.com
                            servers:
                            - host: 1.1.1.1
                              port: 1812
                            use_mxedge: true
                            use_site_mxedge: false
                          vlan_id: 9
                          vlan_ids: 1, 10, 50
                          wxtunnel_id: 7dae216d-7c98-a51b-e068-dd7d477b7216
                          wxtunnel_remote_id: wifiguest
                        property2:
                          disabled: true
                          dynamic_vlan:
                            default_vlan_id: 999
                            enabled: true
                            type: string
                            vlans:
                              1-10: null
                              user: null
                          enable_mac_auth: false
                          forwarding: all
                          mx_tunnel_id: 08cd7499-5841-51c8-e663-fb16b6f3b45e
                          mxtunnel_name: string
                          port_auth: none
                          port_vlan_id: 1
                          radius_config:
                            acct_interim_interval: 0
                            acct_servers:
                            - host: 1.2.3.4
                              keywrap_enabled: true
                              keywrap_format: hex
                              keywrap_kek: '1122334455'
                              keywrap_mack: '1122334455'
                              port: 1813
                              secret: testing123
                            auth_servers:
                            - host: 1.2.3.4
                              keywrap_enabled: true
                              keywrap_format: hex
                              keywrap_kek: '1122334455'
                              keywrap_mack: '1122334455'
                              port: 1812
                              secret: testing123
                            auth_servers_retries: 3
                            auth_servers_timeout: 5
                            coa_enabled: false
                            coa_port: 3799
                            network: string
                            source_ip: string
                          radsec:
                            enabled: true
                            idle_timeout: 60
                            mxcluster_ids:
                            - 572586b7-f97b-a22b-526c-8b97a3f609c4
                            proxy_hosts:
                            - mxedge1.local
                            server_name: radsec.abc.com
                            servers:
                            - host: 1.1.1.1
                              port: 1812
                            use_mxedge: true
                            use_site_mxedge: false
                          vlan_id: 9
                          vlan_ids: 1, 10, 50
                          wxtunnel_id: 7dae216d-7c98-a51b-e068-dd7d477b7216
                          wxtunnel_remote_id: wifiguest
                  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
            schema:
              $ref: '#/components/schemas/ap_template'
      responses:
        '200':
          $ref: '#/components/responses/Aptemplate'
        '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: createOrgAptemplate
      tags:
      - Orgs AP Templates
  /api/v1/orgs/{org_id}/aptemplates/{aptemplate_id}:
    parameters:
    - $ref: '#/components/parameters/org_id'
    - $ref: '#/components/parameters/aptemplate_id'
    delete:
      description: Delete existing AP Template
      operationId: deleteOrgAptemplate
      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: deleteOrgAptemplate
      tags:
      - Orgs AP Templates
    get:
      description: Get AP Template
      operationId: getOrgAptemplate
      responses:
        '200':
          $ref: '#/components/responses/Aptemplate'
        '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: getOrgAptemplate
      tags:
      - Orgs AP Templates
    put:
      description: Update AP Template
      operationId: updateOrgAptemplate
      requestBody:
        content:
          application/json:
            examples:
              Example:
                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
                  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
            schema:
              $ref: '#/components/schemas/ap_template'
      responses:
        '200':
          $ref: '#/components/responses/Aptemplate'
        '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: updateOrgAptemplate
      tags:
      - Orgs AP Templates
components:
  schemas:
    radius_acct_port:
      anyOf:
      - maximum: 65545
        minimum: 1
        type: integer
      - type: string
      description: Radius Auth Port, value from 1 to 65535, default is 1813
    response_http403:
      additionalProperties: false
      properties:
        detail:
          examples:
          - You do not have permission to perform this action.
          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
    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_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
    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
    org_id:
      examples:
      - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61
      format: uuid
      readOnly: true
      type: string
    response_http400:
      additionalProperties: false
      properties:
        detail:
          examples:
          - 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
          type: string
      type: object
    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
    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
    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_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
    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_template_matching:
      additionalProperties: false
      properties:
        enabled:
          type: boolean
        rules:
          $ref: '#/components/schemas/ap_template_matching_rules'
      type: object
    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
    ap_port_config_port_auth:
      default: none
      description: 'When doing port auth. enum: `dot1x`, `none`'
      enum:
      - dot1x
      - none
      examples:
      - none
      type: string
    modified_time:
      description: When the object has been modified for the last time, in epoch
      format: double
      readOnly: true
      type: number
    radius_keywrap_format:
      description: 'enum: `ascii`, `hex`'
      enum:
      - ascii
      - hex
      type: string
    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
    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
    radsec_idle_timeout:
      anyOf:
      - default: 60
        type: integer
      - type: string
      description: Radsec Idle Timeout in seconds. Default is 60
    response_http404:
      additionalProperties: false
      properties:
        id:
          type: string
      type: object
    response_http401:
      additionalProperties: false
      properties:
        detail:
          examples:
          - Authentication credentials were not provided.
          type: string
      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
    id:
      description: Unique ID of the object instance in the Mist Organization
      examples:
      - 53f10664-3ce8-4c27-b382-0ef66432349f
      format: uuid
      readOnly: true
      type: string
    site_id:
      examples:
      - 441a1214-6928-442a-8e92-e1d34b8ec6a6
      format: uuid
      readOnly: true
      type: string
    created_time:
      description: When the object has been created, in epoch
      format: double
      readOnly: true
      type: number
    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
    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
    ap_template_matching_rules:
      items:
        $ref: '#/components/schemas/ap_template_matching_rule'
      type: array
      uniqueItems: true
    radsec_servers:
      description: List of RadSec Servers. Only if not Mist Edge.
      items:
        $ref: '#/components/schemas/radsec_server'
      type: array
      uniqueItems: true
    ap_templates:
      items:
        $ref: '#/components/schemas/ap_template'
      type: array
    radius_auth_port:
      anyOf:
      - maximum: 65545
        minimum: 1
        type: integer
      - type: string
      description: Radius Auth Port, value from 1 to 65535, default is 1812
    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
    radius_acct_servers:
      items:
        $ref: '#/components/schemas/radius_acct_server'
      type: array
      uniqueItems: true
  parameters:
    aptemplate_id:
      in: path
      name: aptemplate_id
      required: true
      schema:
        format: uuid
        type: string
    page:
      in: query
      name: page
      schema:
        default: 1
        minimum: 1
        type: integer
    org_id:
      in: path
      name: org_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
  responses:
    Aptemplate:
      content:
        application/json:
          examples:
            Example:
              $ref: '#/components/examples/AptemplateExample'
          schema:
            $ref: '#/components/schemas/ap_template'
        application/vnd.api+json:
          examples:
            Example:
              $ref: '#/components/examples/AptemplateExample'
          schema:
            $ref: '#/components/schemas/ap_template'
      description: AP Template
    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
    HTTP400:
      co

# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mist-ai/refs/heads/main/openapi/mist-ai-orgs-ap-templates-api-openapi.yml