Juniper Mist AI Sites Devices API

Mist provides many ways (device_type specific template, site template, device profile, per-device) to configure devices for different kind of scenarios. The precedence goes from most specific to least specific Device > Device Profile > RFTemplate (for AP only) > DeviceType-specific Template > Site Template > Site Setting

Operations 16

GET /api/v1/sites/{site_id}/devices listSiteDevices #
GET /api/v1/sites/{site_id}/devices/config_history/count countSiteDeviceConfigHistory #
GET /api/v1/sites/{site_id}/devices/config_history/search searchSiteDeviceConfigHistory #
GET /api/v1/sites/{site_id}/devices/count countSiteDevices #
GET /api/v1/sites/{site_id}/devices/events/count countSiteDeviceEvents #
GET /api/v1/sites/{site_id}/devices/events/search searchSiteDeviceEvents #
GET /api/v1/sites/{site_id}/devices/export exportSiteDevices #
POST /api/v1/sites/{site_id}/devices/gbp_tag setSiteDevicesGbpTag #
POST /api/v1/sites/{site_id}/devices/import importSiteDevices #
GET /api/v1/sites/{site_id}/devices/last_config/count countSiteDeviceLastConfig #
GET /api/v1/sites/{site_id}/devices/last_config/search searchSiteDeviceLastConfigs #
GET /api/v1/sites/{site_id}/devices/search searchSiteDevices #
GET /api/v1/sites/{site_id}/devices/{device_id} getSiteDevice #
PUT /api/v1/sites/{site_id}/devices/{device_id} updateSiteDevice #
DELETE /api/v1/sites/{site_id}/devices/{device_id}/image/{image_number} deleteSiteDeviceImage #
POST /api/v1/sites/{site_id}/devices/{device_id}/image/{image_number} addSiteDeviceImage #

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-sites-devices-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-sites-devices-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 Sites Devices 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: 'Mist provides many ways (device_type specific template, site template, device profile, per-device) to configure devices for different kind of scenarios.


    The precedence goes from most specific to least specific


    Device > Device Profile > RFTemplate (for AP only) > DeviceType-specific Template > Site Template > Site Setting'
  name: Sites Devices
paths:
  /api/v1/sites/{site_id}/devices:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Get list of devices on the site.
      operationId: listSiteDevices
      parameters:
      - in: query
        name: type
        schema:
          $ref: '#/components/schemas/device_type_with_all'
      - $ref: '#/components/parameters/name'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page'
      responses:
        '200':
          $ref: '#/components/responses/DevicesArray'
        '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: listSiteDevices
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/config_history/count:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Counts the number of entries in device config history for distinct field with given filters
      operationId: countSiteDeviceConfigHistory
      parameters:
      - in: query
        name: distinct
        schema:
          type: string
      - in: query
        name: mac
        schema:
          type: string
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $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: countSiteDeviceConfigHistory
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/config_history/search:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Search for entries in device config history
      operationId: searchSiteDeviceConfigHistory
      parameters:
      - in: query
        name: type
        schema:
          $ref: '#/components/schemas/device_type_default_ap'
      - description: Device MAC Address
        in: query
        name: mac
        schema:
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/search_after'
      responses:
        '200':
          $ref: '#/components/responses/ConfigsHistorySearch'
        '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: searchSiteDeviceConfigHistory
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/count:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Counts the number of entries in ap events history for distinct field with given filters
      operationId: countSiteDevices
      parameters:
      - in: query
        name: distinct
        schema:
          $ref: '#/components/schemas/site_devices_count_distinct'
      - in: query
        name: hostname
        schema:
          type: string
      - in: query
        name: model
        schema:
          type: string
      - in: query
        name: mac
        schema:
          type: string
      - in: query
        name: version
        schema:
          type: string
      - in: query
        name: mxtunnel_status
        schema:
          type: string
      - in: query
        name: mxedge_id
        schema:
          type: string
      - in: query
        name: lldp_system_name
        schema:
          type: string
      - in: query
        name: lldp_system_desc
        schema:
          type: string
      - in: query
        name: lldp_port_id
        schema:
          type: string
      - in: query
        name: lldp_mgmt_addr
        schema:
          type: string
      - in: query
        name: map_id
        schema:
          type: string
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $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: countSiteDevices
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/events/count:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Counts the number of entries in ap events history for distinct field with given filters
      operationId: countSiteDeviceEvents
      parameters:
      - in: query
        name: distinct
        schema:
          $ref: '#/components/schemas/site_device_events_count_distinct'
      - in: query
        name: model
        schema:
          type: string
      - $ref: '#/components/parameters/device_event_type'
      - in: query
        name: type_code
        schema:
          type: string
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $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: countSiteDeviceEvents
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/events/search:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Search Devices Events
      operationId: searchSiteDeviceEvents
      parameters:
      - description: Device mac
        in: query
        name: mac
        schema:
          type: string
      - description: Device model
        in: query
        name: model
        schema:
          type: string
      - description: Event message
        in: query
        name: text
        schema:
          type: string
      - description: Event time
        in: query
        name: timestamp
        schema:
          type: string
      - $ref: '#/components/parameters/device_event_type'
      - description: Return last/recent event for passed in field
        example: port_id
        in: query
        name: last_by
        schema:
          type: string
      - description: Keyword to include events from additional indices (e.g. ext_tunnel for prisma events)
        in: query
        name: includes
        schema:
          examples:
          - ext_tunnel
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/search_after'
      responses:
        '200':
          $ref: '#/components/responses/EventsDevices'
        '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: searchSiteDeviceEvents
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/export:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: To download the exported device information
      operationId: exportSiteDevices
      responses:
        '200':
          $ref: '#/components/responses/File'
        '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: exportSiteDevices
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/gbp_tag:
    parameters:
    - $ref: '#/components/parameters/site_id'
    post:
      description: Set GBP Tag for multiple devices
      operationId: setSiteDevicesGbpTag
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/devices_gbp_tag'
        description: Request Body
      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: setSiteDevicesGbpTag
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/import:
    parameters:
    - $ref: '#/components/parameters/site_id'
    post:
      description: 'Import Information for Multiple Devices


        CSV format:

        ```csv

        mac,name,map_id,x,y,height,orientation,labels,band_24.power,band_24.bandwidth,band_24.channel,band_24.disabled,band_5.power,band_5.bandwidth,band_5.channel,band_5.disabled,band_6.power,band_6.bandwidth,band_6.channel,band_6.disabled

        5c5b53010101,"AP 1",845a23bf-bed9-e43c-4c86-6fa474be7ae5,30,10,2.3,45,"guest, campus, vip",1,20,0,false,0,40,0,false,17,80,0,false

        ```'
      operationId: importSiteDevices
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ap_import_json'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/binary_stream'
      responses:
        '200':
          $ref: '#/components/responses/DevicesArray'
        '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: importSiteDevices
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/last_config/count:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Counts the number of entries in device config history for distinct field with given filters
      operationId: countSiteDeviceLastConfig
      parameters:
      - in: query
        name: distinct
        schema:
          $ref: '#/components/schemas/site_device_last_config_count_distinct'
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $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: countSiteDeviceLastConfig
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/last_config/search:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Search Device Last Configs
      operationId: searchSiteDeviceLastConfigs
      parameters:
      - description: 'Duration for expiring cert queries (format: 2d/3h/172800 seconds)'
        in: query
        name: cert_expiry_duration
        schema:
          examples:
          - 2d
          type: string
      - in: query
        name: device_type
        schema:
          $ref: '#/components/schemas/last_config_device_type'
      - in: query
        name: mac
        schema:
          type: string
      - in: query
        name: version
        schema:
          type: string
      - in: query
        name: name
        schema:
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/search_after'
      responses:
        '200':
          $ref: '#/components/responses/ConfigsHistorySearch'
        '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: searchSiteDeviceLastConfigs
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/search:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Search Device
      operationId: searchSiteDevices
      parameters:
      - description: When `type`==`ap`, Channel of band_24
        in: query
        name: band_24_channel
        schema:
          type: integer
      - description: When `type`==`ap`, Channel of band_5
        in: query
        name: band_5_channel
        schema:
          type: integer
      - description: When `type`==`ap`, Channel of band_6
        in: query
        name: band_6_channel
        schema:
          type: integer
      - description: When `type`==`ap`, Bandwidth of band_24
        in: query
        name: band_24_bandwidth
        schema:
          type: integer
      - description: When `type`==`ap`, Bandwidth of band_5
        in: query
        name: band_5_bandwidth
        schema:
          type: integer
      - description: When `type`==`ap`, Bandwidth of band_6
        in: query
        name: band_6_bandwidth
        schema:
          type: integer
      - description: When `type`==`ap`, Power of band_24
        in: query
        name: band_24_power
        schema:
          type: integer
      - description: When `type`==`ap`, Power of band_5
        in: query
        name: band_5_power
        schema:
          type: integer
      - description: When `type`==`ap`, Power of band_6
        in: query
        name: band_6_power
        schema:
          type: integer
      - description: When `type`==`gateway`, true / false
        in: query
        name: clustered
        schema:
          type: boolean
      - description: When `type`==`ap`, Port speed of eth0
        in: query
        name: eth0_port_speed
        schema:
          examples:
          - 100
          - 1000
          type: integer
      - description: When `type`==`switch`, EVPN topology id
        in: query
        name: evpntopo_id
        schema:
          format: uuid
          type: string
      - $ref: '#/components/parameters/partial_filter_ext_ip'
      - $ref: '#/components/parameters/partial_filter_hostname_device'
      - $ref: '#/components/parameters/partial_filter_ip_device'
      - description: When `type`==`switch` or `type`==`gateway`, last configuration status
        in: query
        name: last_config_status
        schema:
          examples:
          - success
          type: string
      - description: Last hostname of the device.
        in: query
        name: last_hostname
        schema:
          type: string
      - description: When `type`==`ap`, LLDP management ip address
        in: query
        name: lldp_mgmt_addr
        schema:
          type: string
      - $ref: '#/components/parameters/partial_filter_lldp_port_id'
      - $ref: '#/components/parameters/partial_filter_lldp_system_desc'
      - $ref: '#/components/parameters/partial_filter_lldp_system_name'
      - $ref: '#/components/parameters/partial_filter_mac_device'
      - $ref: '#/components/parameters/partial_filter_model'
      - description: When `type`==`ap`, Mist Edge id, if AP is connecting to a Mist Edge
        in: query
        name: mxedge_id
        schema:
          format: uuid
          type: string
      - description: When `type`==`ap`, Comma separated list of Mist Edge id, if AP is connecting to a Mist Edge
        in: query
        name: mxedge_ids
        schema:
          type: string
      - description: When `type`==`ap`, MxTunnel status, up / down.
        in: query
        name: mxtunnel_status
        schema:
          $ref: '#/components/schemas/search_site_devices_mxtunnel_status'
      - description: 'When `type`==`gateway`. enum: `node0`, `node1`'
        in: query
        name: node
        schema:
          $ref: '#/components/schemas/ha_cluster_node_enum'
      - description: When `type`==`gateway`, node0 MAC Address
        in: query
        name: node0_mac
        schema:
          type: string
      - description: When `type`==`gateway`, node1 MAC Address
        in: query
        name: node1_mac
        schema:
          type: string
      - description: When `type`==`ap`, whether the AP is power constrained
        in: query
        name: power_constrained
        schema:
          type: boolean
      - description: "When `type`==`switch` or `type`==`gateway`, Key-value pairs where the key\nis the RADIUS server address and the value contains authentication statistics:\n  * <server_address> (string): IP address of the RADIUS server as the key\n  * `auth_accepts` (long): Number of accepted authentication requests\n  * `auth_rejects` (long): Number of rejected authentication requests\n  * `auth_timeouts` (long): Number of authentication timeouts\n  * `auth_server_status` (string): Status of the server. Possible values: `up`, `down`, `unreachable`"
        in: query
        name: radius_stats
        schema:
          type: string
      - description: Whether to return device stats
        in: query
        name: stats
        schema:
          default: false
          type: boolean
      - description: When `type`==`gateway` (SSR only), version of 128T agent
        in: query
        name: t128agent_version
        schema:
          type: string
      - $ref: '#/components/parameters/device_type'
      - description: Version
        in: query
        name: version
        schema:
          type: string
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/start'
      - $ref: '#/components/parameters/end'
      - $ref: '#/components/parameters/duration'
      - description: Sort options
        in: query
        name: sort
        schema:
          $ref: '#/components/schemas/search_site_devices_sort'
      - description: Sort options in reverse order
        in: query
        name: desc_sort
        schema:
          $ref: '#/components/schemas/search_site_devices_desc_sort'
      - $ref: '#/components/parameters/search_after'
      responses:
        '200':
          $ref: '#/components/responses/DevicesSearch'
        '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: searchSiteDevices
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/{device_id}:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/device_id'
    get:
      description: Get Device Configuration
      operationId: getSiteDevice
      responses:
        '200':
          $ref: '#/components/responses/Device'
        '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: getSiteDevice
      tags:
      - Sites Devices
    put:
      description: Update Device Configuration
      operationId: updateSiteDevice
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/mist_device'
        description: Request Body
      responses:
        '200':
          $ref: '#/components/responses/Device'
        '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: updateSiteDevice
      tags:
      - Sites Devices
  /api/v1/sites/{site_id}/devices/{device_id}/image/{image_number}:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/device_id'
    - in: path
      name: image_number
      required: true
      schema:
        type: integer
    delete:
      description: Delete image from a device
      operationId: deleteSiteDeviceImage
      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: deleteSiteDeviceImage
      tags:
      - Sites Devices
    post:
      description: Attach up to 3 images to a device
      operationId: addSiteDeviceImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/image_import'
        description: Request Body
      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: addSiteDeviceImage
      tags:
      - Sites Devices
components:
  schemas:
    switch_port_usage_dynamic_rule:
      additionalProperties: false
      properties:
        description:
          description: Optional description of the rule
          type: string
        equals:
          type: string
        equals_any:
          $ref: '#/components/schemas/switch_port_usage_dynamic_rule_equals_any'
        expression:
          description: '"[0:3]":"abcdef" -> "abc"

            "split(.)[1]": "a.b.c" -> "b"

            "split(-)[1][0:3]: "a1234-b5678-c90" -> "b56"'
          type: string
        src:
          $ref: '#/components/schemas/switch_port_usage_dynamic_rule_src'
        usage:
          description: '`port_usage` name'
          type: string
      required:
      - src
      type: object
    switch_mist_nac:
      additionalProperties: false
      description: Enable mist_nac to use RadSec
      properties:
        enabled:
          type: boolean
        network:
          type: string
      type: object
    gateway_mgmt:
      additionalProperties: false
      description: Gateway Management settings
      properties:
        admin_sshkeys:
          $ref: '#/components/schemas/gateway_mgmt_admin_sshkeys'
        app_probing:
          $ref: '#/components/schemas/app_probing'
        app_usage:
          description: Consumes uplink bandwidth, requires WA license
          type: boolean
        auto_signature_update:
          $ref: '#/components/schemas/gateway_mgmt_auto_signature_update'
        config_revert_timer:
          default: 10
          description: Rollback timer for commit confirmed
          maximum: 30
          minimum: 1
          type: integer
        disable_console:
          default: false
          description: For SSR and SRX, disable console port
          type: boolean
        disable_oob:
          default: false
          description: For SSR and SRX, disable management interface
          type: boolean
        disable_usb:
          default: false
          description: For SSR and SRX, disable usb interface
          type: boolean
        fips_enabled:
          default: false
          type: boolean
        probe_hosts:
          $ref: '#/components/schemas/gateway_mgmt_probe_hosts'
        probe_hostsv6:
          $ref: '#/components/schemas/gateway_mgmt_probe_hostsv6'
        protect_re:
          $ref: '#/components/schemas/protect_re'
        root_password:
          description: SRX only
          format: password
          type: string
        security_log_source_address:
          examples:
          - 192.168.1.1
          format: ipv4
          type: string
        security_log_source_interface:
          examples:
          - ge-0/0/1.0
          type: string
      type: object
    switch_dhcpd_config_property:
      additionalProperties: false
      description: the Property key is the network name. In case of DHCP relay, it's common for many networks to use the same dhcp relay, comma-separated network names can be used here (e.g. "net1,net2")
      properties:
        dns_servers:
          $ref: '#/components/schemas/switch_dhcpd_config_dns_servers'
        dns_suffix:
          $ref: '#/components/schemas/switch_dhcpd_config_dns_suffix'
        fixed_bindings:
          $ref: '#/components/schemas/switch_dhcpd_config_fixed_bindings'
        gateway:
          description: If `type`==`server` - optional, `ip` will be used if not provided
          examples:
          - 192.168.70.1
          type: string
        ip_end:
          description: If `type`==`server`
          examples:
          - 192.168.70.200
          type: string
        ip_end6:
          description: If `type6`==`server`
          examples:
          - 2607:f8b0:4005:808::ff
          type: string
        ip_start:
          description: If `type`==`server`
          examples:
          - 192.168.70.100
          type: string
        ip_start6:
          description: If `type6`==`server`
          examples:
          - 2607:f8b0:4005:808::2
          type: string
        lease_time:
          default: 86400
          description: In seconds, lease time has to be between 3600 [1hr] - 604800 [1 week], default is 86400 [1 day]
          maximum: 604800
          minimum: 3600
          type: integer
        options:
          $ref: '#/components/schemas/switch_dhcpd_config_options'
        server_id_override:
          default: false
          description: "`server_id_override`==`true` means the device, when acts as DHCP relay and forwards DHCP responses from DHCP server to clients, \nshould overwrite the Sever Identifier option (i.e. DHCP option 54) in DHCP responses with its own IP address."
          type: boolean
        servers:
          $ref: '#/components/schemas/dhcpd_config_servers'
        servers6:
          $ref: '#/components/schemas/dhcpd_config_servers6'
        type:
          $ref: '#/components/schemas/switch_dhcpd_config_type'
        type6:
          $ref: '#/components/schemas/switch_dhcpd_config_type6'
        vendor_encapsulated:
          $ref: '#/components/schemas/switch_dhcpd_config_vendor_options'
      type: object
    service_policy_skyatp_dns_tunnel_detection_profile:
      description: 'enum: `default`, `standard`, `strict`'
      enum:
      - default
      - standard
      - strict
      type: string
    dhcpd_config_property:
      additionalProperties: false
      properties:
        dns_servers:
          $ref: '#/components/schemas/dhcpd_config_dns_servers'
        dns_suffix:
          $ref: '#/components/schemas/dhcpd_config_dns_suffix'
        fixed_bindings:
          $ref: '#/components/schemas/dhcpd_config_fixed_bindings'
        gateway:
          description: If `type`==`local` - optional, `ip` will be used if not provided
          examples:
          - 192.168.70.1
          type: string
        ip6_end:
          description: If `type6`==`local`
          examples:
          - 2607:f8b0:4005:808::ff
          type: string
        ip6_start:
          description: If `type6`==`local`
          examples:
          - 2607:f8b0:4005:808::2
          type: string
        ip_end:
          description: If `type`==`local`
          examples:
          - 192.168.70.200
          type: string
        ip_start:
     

# --- truncated at 32 KB (309 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mist-ai/refs/heads/main/openapi/mist-ai-sites-devices-api-openapi.yml