Juniper Mist AI Sites Maps - Auto-placement API

### AP Auto-Placement AP Auto-Placement is a feature in Juniper Mist wireless assurance that automatically determines and sets the positions of Access Points (APs) on a floorplan. It saves time and simplifies the deployment process by eliminating the need for manual placement. The autoplacement algorithm calculates the most probable location for each AP based on factors such as signal strength and coverage requirements. The confidence level of the autoplacement is indicated by colors, with green representing high certainty, orange indicating medium certainty, and red suggesting low certainty. In cases where aps are isolated or cannot communicate with nearby aps, they cannot be placed automatically and must be [manually positioned on the floorplan](/#operations/updateSiteDevice). After the autoplacement process is complete, the results can be evaluated and accepted of rejected with the API Call [Confirm Site AP Localization Data](/#operations/confirmSiteApLocalizationData) ### AP Auto-Orientation Ap Auto-Orientation is a feature in juniper mist wireless assurance that allows users to check and correct the orientation of Access Points (APs) on a floorplan. This feature is supported by specific ap models and requires a firmware dependency of version 0.14.28310 or higher and does not require a maintenance window and can be used after performing autoplacement. To use auto-orientation, physically install the APs, claim or adopt them into the Juniper Mist organization, place them on the floorplan, and perform auto-placement, then trigger the [Start Site Ap Auto Orientation API call](/#operations/startSiteApAutoOrientation) After 24 hours, the rotation in degrees of the AP(s) will be updated. users can accept or deny the changes made by the auto-orientation feature with the API Call [Confirm Site AP Localization Data](/#operations/confirmSiteApLocalizationData).

OpenAPI Specification

mist-ai-sites-maps-auto-placement-api-openapi.yml Raw ↑
openapi: 3.1.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 Admins Sites Maps - Auto-placement 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 Auto-Placement\nAP Auto-Placement is a feature in Juniper Mist wireless assurance that automatically determines and sets the positions of Access Points (APs) on a floorplan.\n\nIt saves time and simplifies the deployment process by eliminating the need for manual placement. \n\nThe autoplacement algorithm calculates the most probable location for each AP based on factors such as signal strength and coverage requirements. \n\nThe confidence level of the autoplacement is indicated by colors, with green representing high certainty, orange indicating medium certainty, and red suggesting low certainty. \nIn cases where aps are isolated or cannot communicate with nearby aps, they cannot be placed automatically and must be [manually positioned on the floorplan](/#operations/updateSiteDevice). \n\nAfter the autoplacement process is complete, the results can be evaluated and accepted of rejected with the API Call [Confirm Site AP Localization Data](/#operations/confirmSiteApLocalizationData)\n\n\n### AP Auto-Orientation\nAp Auto-Orientation is a feature in juniper mist wireless assurance that allows users to check and correct the orientation of Access Points (APs) on a floorplan. \n\nThis feature is supported by specific ap models and requires a firmware dependency of version 0.14.28310 or higher and does not require a maintenance window and can be used after performing autoplacement. \n\nTo use auto-orientation, physically install the APs, claim or adopt them into the Juniper Mist organization, place them on the floorplan, and perform auto-placement, then trigger the [Start Site Ap Auto Orientation API call](/#operations/startSiteApAutoOrientation)\n\nAfter 24 hours, the rotation in degrees of the AP(s) will be updated. users can accept or deny the changes made by the auto-orientation feature with the API Call [Confirm Site AP Localization Data](/#operations/confirmSiteApLocalizationData)."
  name: Sites Maps - Auto-placement
paths:
  /api/v1/sites/{site_id}/maps/{map_id}/auto_orient:
    parameters:
    - $ref: '#/components/parameters/map_id'
    - $ref: '#/components/parameters/site_id'
    delete:
      description: This API is called to force stop auto placement for a given map
      operationId: deleteSiteApAutoOrientation
      responses:
        '200':
          description: Auto orient process has stopped for this map
        '400':
          description: Autoplacement was not triggered
        '401':
          $ref: '#/components/responses/HTTP401'
        '403':
          $ref: '#/components/responses/HTTP403'
        '404':
          $ref: '#/components/responses/HTTP404'
        '429':
          $ref: '#/components/responses/HTTP429'
      summary: deleteSiteApAutoOrientation
      tags:
      - Sites Maps - Auto-placement
    get:
      description: This API is called to view the current status of auto orient for a given map.
      operationId: getSiteApAutoOrientation
      responses:
        '200':
          $ref: '#/components/responses/AutoOrientationInfo'
        '400':
          description: Autoplacement was not triggered
        '401':
          $ref: '#/components/responses/HTTP401'
        '403':
          $ref: '#/components/responses/HTTP403'
        '404':
          $ref: '#/components/responses/HTTP404'
        '429':
          $ref: '#/components/responses/HTTP429'
      summary: getSiteApAutoOrientation
      tags:
      - Sites Maps - Auto-placement
    post:
      description: 'This API is called to trigger a map for auto orient. For auto orient feature to work, BLE data needs to be collected from the APs on the map. This precess is not disruptive unlike FTM collection. Repeated POST requests to this endpoint while a map is still running will be rejected.



        `force_collection` is set to `false` by default. If `force_collection`==`false`, the API attempts to start orientation with existing data. If no data exists, the API attempts to start collecting orientation data. If `force_collection`==`true`, the API attempts to start collecting orientation data.



        Providing a list of device macs is optional. If provided, auto orientation suggestions will be made only for the specified devices. If no list is provided, all APs associated with the map are considered by default.'
      operationId: startSiteApAutoOrientation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/auto_orient'
      responses:
        '200':
          $ref: '#/components/responses/AutoOrientation'
        '400':
          $ref: '#/components/responses/AutoOrientationFailed'
        '401':
          $ref: '#/components/responses/HTTP401'
        '403':
          $ref: '#/components/responses/HTTP403'
        '404':
          $ref: '#/components/responses/HTTP404'
        '429':
          $ref: '#/components/responses/HTTP429'
      summary: startSiteApAutoOrientation
      tags:
      - Sites Maps - Auto-placement
  /api/v1/sites/{site_id}/maps/{map_id}/auto_placement:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    delete:
      description: This API is called to force stop auto placement for a given map
      operationId: deleteSiteApAutoplacement
      responses:
        '200':
          description: Autoplacement Process has stopped for this map
        '400':
          description: Autoplacement was not triggered
        '401':
          $ref: '#/components/responses/HTTP401'
        '403':
          $ref: '#/components/responses/HTTP403'
        '404':
          $ref: '#/components/responses/HTTP404'
        '429':
          $ref: '#/components/responses/HTTP429'
      summary: deleteSiteApAutoplacement
      tags:
      - Sites Maps - Auto-placement
    get:
      description: 'This API is called to view the current status of auto placement for a given map.



        #### Status Descriptions


        | Status | Description |

        | --- | --- |

        | `pending` | Autoplacement has not been requested for this map |

        | `inprogress` | Autoplacement is currently processing |

        | `done` | The autoplacement process has completed |

        | `data_needed` | Additional position data is required for autoplacement. Users should verify the requested anchor APs have a position on the map |

        | `invalid_model` | Autoplacement is not supported on the model of the APs on the map |

        | `invalid_version` | Autoplacement is not supported with the APs current firmware version |

        | `error` | There was an error in the autoplacement process |'
      operationId: getSiteApAutoPlacement
      responses:
        '200':
          $ref: '#/components/responses/AutoPlacementInfo'
        '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: getSiteApAutoplacement
      tags:
      - Sites Maps - Auto-placement
    post:
      description: "This API is called to trigger auto placement for a map. For the auto placement feature to work, RTT-FTM data needs to be collected from the APs on the map.  \nThis scan is disruptive, and users must be notified of service disruption during the auto placement process. Repeated POST requests to this endpoint while a map is still running will be rejected.\n\n\n`force_collection` is set to `false` by default. If `force_collection` is set to `false`, the API attempts to start localization with existing data. If no data exists, the API attempts to start orchestration.  \nIf `force_collection` is set to `true`, the API attempts to start orchestration.\n\n\nProviding a list of devices is optional. If provided, autoplacement suggestions will be made only for the specified devices. If no list is provided, all APs associated with the map are considered by default."
      operationId: runSiteApAutoplacement
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/auto_placement'
      responses:
        '200':
          $ref: '#/components/responses/HTTP200AutoPlacement'
        '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: runSiteApAutoplacement
      tags:
      - Sites Maps - Auto-placement
  /api/v1/sites/{site_id}/maps/{map_id}/clear_auto_orient:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: This API is used to destroy the autoorientations of a map or subset of APs on a map.
      operationId: clearSiteApAutoOrient
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/mac_addresses'
      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: clearSiteApAutoOrient
      tags:
      - Sites Maps - Auto-placement
  /api/v1/sites/{site_id}/maps/{map_id}/clear_autoplacement:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: This API is used to destroy the cached autoplacement locations of a map or subset of APs on a map.
      operationId: clearSiteApAutoplacement
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/mac_addresses'
      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: clearSiteApAutoplacement
      tags:
      - Sites Maps - Auto-placement
  /api/v1/sites/{site_id}/maps/{map_id}/use_auto_ap_values:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: 'This API is used to accept or reject the cached autoplacement and auto-orientation values of a map or subset of APs on a map. Any APs that have autoplacement values are stored in cache for up to 7 days while awaiting acceptance or rejection.


        ```

        Accepting the autoplacement values overwrites the existing X, Y, and orientation of the accepted APs with their cached autoplacement values.

        Rejecting the autoplacement values causes the APs to retain their current X, Y, and orientation.

        ```


        Once a decision (accept or reject) is made, or the 7-day time-to-live (TTL) expires, the cached values are deleted.'
      operationId: confirmSiteApLocalizationData
      requestBody:
        content:
          application/json:
            examples:
              Example:
                value:
                  accept: false
                  device_macs:
                  - string
                  for: placement
            schema:
              $ref: '#/components/schemas/use_auto_ap_values'
      responses:
        '200':
          description: Success
        '400':
          description: Map does not exist or belong to specified site / Invalid localization service. Expected [placement, orientation]
        '401':
          $ref: '#/components/responses/HTTP401'
        '403':
          $ref: '#/components/responses/HTTP403'
        '404':
          $ref: '#/components/responses/HTTP404'
        '429':
          $ref: '#/components/responses/HTTP429'
      summary: confirmSiteApLocalizationData
      tags:
      - Sites Maps - Auto-placement
components:
  examples:
    AutoPlacementInfoInProgress:
      value:
        est_time_left: 300
        start_time: 1678900062
        status: inprogress
    AutoOrientationFailedExample:
      value:
        detail: Map has less than 3 APs associated with it to perform auto orient
    AutoOrientationInfoInProgress:
      value:
        est_time_left: 300.0
        start_time: 1678900062
        status: inprogress
    AutoOrientationInfoCompleted:
      value:
        start_time: 1678900062
        status: done
        stop_time: 1678900362
    AutoOrientationFailedExample2:
      value:
        detail: Auto AP orient is already in progress for this Map
    AutoPlacementInfoError:
      value:
        end_time: 1678900362
        start_time: 1678900062
        status: error
    AutoOrientationServiceStartedSuccessfullyForLocalizationOrientCollection:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 300
        reason: Started collection for auto orient
        started: true
        valid: true
    AutoOrientationServiceFailedToStartDueContainingInvalidAPs:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
          '00000000004':
            reason: Device model AP41 is not supported for auto orient
            valid: false
          '00000000005':
            reason: Device firmware 0.14.28300 does not meet the minimum requirement 0.14.28310
            valid: false
        reason: Map has APs that do not meet the minimum requirements for auto orient
        started: false
        valid: false
    AutoOrientationDryrunForMapCompleted:
      value:
        devices:
          '00000000001':
            reason: Device meets the minimum requirements for auto orient
            valid: true
          '00000000002':
            reason: Device meets the minimum requirements for auto orient
            valid: true
          '00000000003':
            reason: Device meets the minimum requirements for auto orient
            valid: true
        estimated_runtime: 300
        reason: Map has met the minimum requirements for auto orient
        valid: true
        wifi_interrupting: true
    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
    HTTP200AutoPlacementServicestartedafteroverridefororchestration:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
          '00000000004':
            reason: Device model AP41 is not supported for auto placement
            valid: false
          '00000000005':
            reason: Device firmware 0.14.28300 does not meet the minimum requirement 0.14.28310
            valid: false
        estimated_runtime: 30
        reason: Started collection for auto placement
        started: true
        valid: false
        wifi_interrupting: true
    AutoOrientationFailedExample3:
      value:
        detail: Auto orient data does not exist or has gone stale
    AutoOrientationServiceStartedAfterOverrideForLocalizationOrientCollection:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
          '00000000004':
            reason: Device model AP32 is not supported for auto orient
            valid: false
          '00000000005':
            reason: Device firmware 0.14.28300 does not meet the minimum requirement 0.14.28310
            valid: false
        estimated_runtime: 300
        reason: Started collection for auto orient
        started: true
        valid: false
    HTTP401Example:
      value:
        detail: Authentication credentials were not provided.
    HTTP200AutoPlacementAutoplacementisalreadyinprogressforthismap:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 30
        reason: Map Already Enqueued
        started: false
        valid: true
        wifi_interrupting: true
    HTTP200AutoPlacementDryrunformapcompleted:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 30
        reason: Map has met the minimum requirements for auto placement
        valid: true
        wifi_interrupting: true
    AutoPlacementInfoDone:
      value:
        end_time: 1678900362
        start_time: 1678900062
        status: done
    HTTP200AutoPlacementServicefailedtostartduecontaininginvalidAPs:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
          '00000000004':
            reason: Device model AP41 is not supported for auto placement
            valid: false
          '00000000005':
            reason: Device firmware 0.14.28300 does not meet the minimum requirement 0.14.28310
            valid: false
        reason: Map has APs that do not meet the minimum requirements for auto placement
        started: false
        valid: false
    AutoOrientationMapFailedToStartAsItHadLessThan3APsAssociatedWithIt:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 300
        reason: Map Already Enqueued
        started: false
        valid: true
        wifi_interrupting: true
    HTTP200AutoPlacementUnabletoreachtheautoplacementservice:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 30
        reason: Unable to reach auto placement service
        started: false
        valid: true
        wifi_interrupting: true
    HTTP200AutoPlacementServicestartedsuccessfullyfororchestration:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 30
        reason: Started collection for auto placement
        started: true
        valid: true
        wifi_interrupting: true
    HTTP200AutoPlacementServicestartedsuccessfullyforlocalization:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        reason: Started localization for auto placement
        started: true
        valid: true
    AutoPlacementInfoPending:
      value:
        status: pending
    AutoOrientationUnableToReachTheOrientService:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
        estimated_runtime: 300
        reason: Unable to reach auto orient service
        started: false
        valid: true
        wifi_interrupting: true
    HTTP200AutoPlacementServicestartedafteroverrideforlocalization:
      value:
        devices:
          '00000000001':
            valid: true
          '00000000002':
            valid: true
          '00000000003':
            valid: true
          '00000000004':
            reason: Device model AP41 is not supported for auto placement
            valid: false
          '00000000005':
            reason: Device firmware 0.14.28300 does not meet the minimum requirement 0.14.28310
            valid: false
        reason: Started localization for auto placement
        started: true
        valid: false
    HTTP200AutoPlacementMapfailedtostartasithadlessthan3APsassociatedwithit:
      value:
        devices: {}
        reason: Map has less than 3 APs associated with it to perform auto placement
        started: false
        valid: false
  schemas:
    response_auto_placement_info:
      additionalProperties: false
      properties:
        end_time:
          description: Time when autoplacement completed or was manually stopped
          type: number
        est_time_left:
          description: (Only when inprogress) estimate of the time to completion
          type: number
        start_time:
          description: Time when autoplacement process was last queued for this map
          type: integer
        status:
          $ref: '#/components/schemas/auto_placement_info_status'
      type: object
    response_auto_orientation:
      additionalProperties: false
      properties:
        devices:
          $ref: '#/components/schemas/response_auto_orientation_devices'
        estimated_runtime:
          description: Estimated runtime for the process in seconds
          type: integer
        reason:
          description: Provides the reason for the status.
          type: string
        started:
          description: Indicates whether the auto orient process has started.
          type: boolean
        valid:
          description: Indicates whether the auto orient request is valid.
          type: boolean
        wifi_interrupting:
          description: Indicates whether the auto orient process will interrupt WiFi traffic.
          type: boolean
      type: object
    response_http403:
      additionalProperties: false
      properties:
        detail:
          examples:
          - You do not have permission to perform this action.
          type: string
      type: object
    response_auto_orientation_device:
      additionalProperties: false
      properties:
        reason:
          description: Provides the reason for the status if the AP is invalid.
          type: string
        valid:
          description: Indicates whether the auto orient request is valid for the device.
          type: boolean
      type: object
    response_auto_orientation_info:
      additionalProperties: false
      properties:
        est_time_left:
          description: Only when `status`==`inprogress`, estimate of the time to completion
          type: number
        start_time:
          description: time when auto orient process was last queued for this map
          type: number
        status:
          $ref: '#/components/schemas/response_auto_orientation_info_status'
        stop_time:
          description: time when auto orient completed or was manually stopped
          type: number
      type: object
    response_autoplacement_device:
      additionalProperties: false
      properties:
        reason:
          description: Provides the reason for the status if the AP is invalid.
          readOnly: true
          type: string
        valid:
          description: Indicates whether the ap is valid.
          readOnly: true
          type: boolean
      type: object
    auto_placement:
      properties:
        dryrun:
          default: false
          description: Set to `true` to perform an invalid AP check and provide an estimated run time without enqueuing the run into the auto placement service.
          type: boolean
        force_collection:
          default: false
          description: "* If `force_collection`==`false`: the API attempts to start localization with existing data. \n* If `force_collection`==`true`: maintenance the API attempts to start orchestration."
          type: boolean
        macs:
          $ref: '#/components/schemas/auto_placement_macs'
        override:
          default: false
          description: Set to `true` to run auto placement even if there are invalid APs in the selected APs.
          type: boolean
      type: object
    mac_addresses:
      properties:
        macs:
          $ref: '#/components/schemas/mac_addresses_macs'
      required:
      - macs
      type: object
    response_autoplacement_devices:
      additionalProperties:
        $ref: '#/components/schemas/response_autoplacement_device'
      description: Property key is the AP MAC Address. Contains the validation status of each device.
      readOnly: true
      type: object
    response_http404:
      additionalProperties: false
      properties:
        id:
          type: string
      type: object
    use_auto_ap_values_for:
      default: placement
      description: 'The selector to choose auto placement or auto orientation. enum: `orientation`, `placement`'
      enum:
      - orientation
      - placement
      type: string
    response_detail_string:
      additionalProperties: false
      properties:
        detail:
          type: string
      type: object
    auto_orient_macs:
      description: List of device macs
      items:
        type: string
      type: array
    response_http400:
      additionalProperties: false
      properties:
        detail:
          examples:
          - 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
          type: string
      type: object
    response_autoplacement:
      additionalProperties: false
      properties:
        devices:
          $ref: '#/components/schemas/response_autoplacement_devices'
        estimated_runtime:
          description: Estimated runtime for the process in seconds.
          readOnly: true
          type: integer
        reason:
          description: Provides the reason for the status.
          readOnly: true
          type: string
        started:
          description: Indicates whether the autoplacement process has started.
          readOnly: true
          type: boolean
        valid:
          description: Indicates whether the autoplacement request is valid.
          readOnly: true
          type: boolean
        wifi_interrupting:
          description: Indicates whether the auto placement process will interrupt WiFi traffic.
          type: boolean
      type: object
    use_auto_ap_values:
      properties:
        accept:
          default: false
          description: If accept is true, accepts placement for devices in list otherwise. If false, reject for devices in list.
          type: boolean
        for:
          $ref: '#/components/schemas/use_auto_ap_values_for'
        macs:
          $ref: '#/components/schemas/use_auto_ap_values_macs'
      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
    auto_placement_info_status:
      description: 'the status of autoplacement for a given map. enum: `done`, `error`, `inprogress`, `pending`'
      enum:
      - done
      - error
      - inprogress
      - pending
      type: string
    response_auto_orientation_devices:
      additionalProperties:
        $ref: '#/components/schemas/response_auto_orientation_device'
      description: Contains the validation status of each device. The Property Key is the device MAC Address.
      type: object
    response_auto_orientation_info_status:
      description: "The status of auto orient for a given map. enum:\n  * `pending`: Auto orient has not been requested for this map\n  * `inprogress`: Auto orient is currently processing\n  * `done`: The auto orient process has completed\n  * `error`: There was an error in the auto orient process"
      enum:
      - pending
      - inprogress
      - done
      - error
      type: string
    response_http401:
      additionalProperties: false
      properties:
        detail:
          examples:
          - Authentication credentials were not provided.
          type: string
      type: object
    auto_placement_macs:
      description: List of device macs
      items:
        type: string
      type: array
    mac_addresses_macs:
      examples:
      - - 683b679ac024
      items:
        type: string
      minItems: 1
      type: array
      uniqueItems: true
    use_auto_ap_values_macs:
      description: A list of macs to accept/reject. If a list is not provided the API will accept/reject for the full map.
      items:
        type: string
      type: array
    auto_orient:
      properties:
        dryrun:
          description: Set to `true` to perform an invalid AP check and provide an estimated run time without enqueuing the run into the auto orient service.
          type: boolean
        force_collection:
          default: false
          description: "If `force_collection`==`false`, the API attempts to start auto orientation with existing BLE data. \nIf `force_collection`==`true`, the API attempts to start BLE orchestration."
          type: boolean
        macs:
          $ref: '#/components/schemas/auto_orient_macs'
        override:
          description: Set to `true` to run auto orient even if there are invalid APs in the selected APs.
          type: boolean
      type: object
  responses:
    HTTP200AutoPlacem

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