Juniper Mist AI Sites Maps API

A Site Map is a visual representation of the layout and structure of a location, such as a building or campus. It includes accurate information about the placement, positions, heights, and orientations of Juniper Mist Access Points (APs) and other devices in the deployment. The floorplan is an essential component of location services as it enables the location engine to generate accurate location estimates for client devices, assets, and users at the site.

OpenAPI Specification

mist-ai-sites-maps-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 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: 'A Site Map is a visual representation of the layout and structure of a location, such as a building or campus.


    It includes accurate information about the placement, positions, heights, and orientations of Juniper Mist Access Points (APs) and other devices in the deployment.


    The floorplan is an essential component of location services as it enables the location engine to generate accurate location estimates for client devices, assets, and users at the site.'
  name: Sites Maps
paths:
  /api/v1/sites/{site_id}/maps:
    parameters:
    - $ref: '#/components/parameters/site_id'
    get:
      description: Get List of Site Maps
      operationId: listSiteMaps
      parameters:
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page'
      responses:
        '200':
          $ref: '#/components/responses/MapsArray'
        '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: listSiteMaps
      tags:
      - Sites Maps
    post:
      description: Create Site Map
      operationId: createSiteMap
      requestBody:
        content:
          application/json:
            examples:
              Example:
                value:
                  group_idx: 0
                  group_name: string
                  height: 0
                  height_m: 0
                  latlng_br:
                    lat: string
                    lng: string
                  latlng_tl:
                    lat: string
                    lng: string
                  locked: true
                  name: string
                  occupancy_limit: 0
                  orientation: 0
                  origin_x: 0
                  origin_y: 0
                  ppm: 0
                  sitesurvey_path:
                  - coordinate: string
                    name: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  type: image
                  view: roadmap
                  wall_path:
                    coordinate: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  wayfinding:
                    micello:
                      account_key: string
                      default_level_id: 0
                    snap_to_path: true
                  wayfinding_path:
                    coordinate: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  width: 0
                  width_m: 0
            schema:
              $ref: '#/components/schemas/map'
        description: Request Body
      responses:
        '200':
          $ref: '#/components/responses/Map'
        '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: createSiteMap
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/auto_geofences:
    parameters:
    - $ref: '#/components/parameters/site_id'
    post:
      description: The auto geofence service is a map parsing service that uses map image data to identify the exterior of buildings in the map image also known as "geofences". This API processes all maps for a given SiteId. The maps must have an image to parse for the auto geofence service. Repeated POST requests to this endpoint while the auto geofence service is processing the map will be rejected.
      operationId: startSiteMapsAutoGeofence
      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: startSiteMapsAutoGeofence
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/import:
    parameters:
    - $ref: '#/components/parameters/site_id'
    post:
      description: 'Import data from files is a multipart POST which has an file, an optional json, and an optional csv, to create floorplan, assign matching inventory to specific site, place ap if name or mac matches.


        # Note

        This endpoint (at the site level), the AP must be already assigned to the site to be placed on the floorplan. If you want to place APs from the Org inventory, it is required to use the endpoint at the Org level [importOrgMaps](#operation/importOrgMaps)


        # CSV File Format

        ```csv

        Vendor AP name,Mist AP Mac

        US Office AP-2,5c:5b:35:00:00:02

        US Office AP-3,5c5b35000002

        ```'
      operationId: importSiteMaps
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/map_site_import_file'
      responses:
        '200':
          $ref: '#/components/responses/MapImport'
        '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: importSiteMaps
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    delete:
      description: Delete Site Map
      operationId: deleteSiteMap
      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: deleteSiteMap
      tags:
      - Sites Maps
    get:
      description: Get Site Map Details
      operationId: getSiteMap
      responses:
        '200':
          $ref: '#/components/responses/Map'
        '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: getSiteMap
      tags:
      - Sites Maps
    put:
      description: Update Site Map
      operationId: updateSiteMap
      requestBody:
        content:
          application/json:
            examples:
              Example:
                value:
                  height: 0
                  height_m: 0
                  latlng_br:
                    lat: string
                    lng: string
                  latlng_tl:
                    lat: string
                    lng: string
                  locked: true
                  name: string
                  occupancy_limit: 0
                  orientation: 0
                  origin_x: 0
                  origin_y: 0
                  ppm: 0
                  sitesurvey_path:
                  - coordinate: string
                    name: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  type: image
                  view: roadmap
                  wall_path:
                    coordinate: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  wayfinding:
                    micello:
                      account_key: string
                      default_level_id: 0
                    snap_to_path: true
                  wayfinding_path:
                    coordinate: string
                    nodes:
                    - edges:
                        N2: string
                      name: string
                      position:
                        x: 0
                        y: 0
                  width: 0
                  width_m: 0
            schema:
              $ref: '#/components/schemas/map'
        description: Request Body
      responses:
        '200':
          $ref: '#/components/responses/Map'
        '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: updateSiteMap
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}/auto_geofences:
    parameters:
    - $ref: '#/components/parameters/map_id'
    - $ref: '#/components/parameters/site_id'
    post:
      description: The auto geofence service is a map parsing service that uses map image data to identify the exterior of buildings in the map image also known as "geofences". This API processes a single given MapId. This map must have an image to parse for the auto geofence service. Repeated POST requests to this endpoint while the auto geofence service is processing the map will be rejected.
      operationId: startSiteMapAutoGeofence
      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: startSiteMapAutoGeofence
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}/image:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    delete:
      description: Delete Site Map Image
      operationId: deleteSiteMapImage
      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: deleteSiteMapImage
      tags:
      - Sites Maps
    post:
      description: Add image map is a multipart POST which has an file (Image) and an optional json parameter
      operationId: addSiteMapImage
      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: addSiteMapImage
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}/replace:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: 'Replace Map Image



        This works like an PUT where the image will be replaced. If transform is provided, all the locations of the objects on the map (AP, Zone, Vbeacon, Beacon) will be transformed as well (relative to the new Map)'
      operationId: replaceSiteMapImage
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/map_site_replace_file'
      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: replaceSiteMapImage
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}/set_map:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: "This API can be used to assign a list of AP Macs associated with site_id to the specified map_id. Note that map_id must be associated with corresponding site_id. This API obeys the following rules \n1. if AP is unassigned to any Map, it gets associated with map_id \n2. Any moved APs are returned in the response \n3. If the AP is considered a locked AP, no action will be taken"
      operationId: bulkAssignSiteApsToMap
      requestBody:
        content:
          application/json:
            examples:
              Example:
                value:
                  macs:
                  - 5c5b35000001
                  - 5c5b35584a6f
            schema:
              $ref: '#/components/schemas/mac_addresses'
      responses:
        '200':
          $ref: '#/components/responses/SetDevicesMap'
        '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: bulkAssignSiteApsToMap
      tags:
      - Sites Maps
  /api/v1/sites/{site_id}/maps/{map_id}/wayfinding/import:
    parameters:
    - $ref: '#/components/parameters/site_id'
    - $ref: '#/components/parameters/map_id'
    post:
      description: This imports the vendor map meta data into the Map JSON. This is required by the SDK and App in order to access/render the vendor Map properly.
      operationId: importSiteWayfindings
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/wayfinding_import_json'
        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: importSiteWayfindings
      tags:
      - Sites Maps
components:
  schemas:
    response_set_devices_map_moved:
      items:
        examples:
        - 5c5b35000001
        type: string
      type: array
    map_import_json:
      additionalProperties: false
      properties:
        import_all_floorplans:
          default: false
          type: boolean
        import_height:
          default: true
          type: boolean
        import_orientation:
          default: true
          type: boolean
        vendor_name:
          $ref: '#/components/schemas/map_import_json_vendor_name'
      required:
      - vendor_name
      type: object
    map_site_import_file:
      additionalProperties: false
      properties:
        auto_deviceprofile_assignment:
          description: Whether to auto assign device to deviceprofile by name
          examples:
          - true
          type: boolean
        csv:
          contentMediaType: application/octet-stream
          description: CSV file for ap name mapping, optional
          type: string
        file:
          contentMediaType: application/octet-stream
          description: Ekahau or ibwave file
          type: string
        json:
          $ref: '#/components/schemas/map_import_json'
      type: object
    response_map_import_summary:
      additionalProperties: false
      properties:
        num_ap_assigned:
          type: integer
        num_inv_assigned:
          type: integer
        num_map_assigned:
          type: integer
      required:
      - num_ap_assigned
      - num_map_assigned
      - num_inv_assigned
      type: object
    map_wall_path_nodes:
      items:
        $ref: '#/components/schemas/map_node'
      minItems: 0
      type: array
    map_geofence_vertices:
      description: List of vertices defining the geofence
      items:
        $ref: '#/components/schemas/map_geofence_vertice'
      type: array
    map_geofences:
      description: List of geofences for the map
      items:
        $ref: '#/components/schemas/map_geofence'
      type: array
    map_wall_path:
      additionalProperties: false
      description: JSON blob for wall definition (same format as wayfinding_path)
      properties:
        coordinate:
          examples:
          - actual
          type: string
        nodes:
          $ref: '#/components/schemas/map_wall_path_nodes'
      type: object
    map_sitesurvey_path_items:
      additionalProperties: false
      properties:
        coordinate:
          examples:
          - actual
          type: string
        id:
          $ref: '#/components/schemas/id'
        name:
          examples:
          - Default
          type: string
        nodes:
          $ref: '#/components/schemas/map_sitesurvey_path_items_nodes'
      type: object
    latlng_br:
      additionalProperties: false
      description: When type=google, latitude / longitude of the bottom-right corner
      properties:
        lat:
          type: string
        lng:
          type: string
      type: object
    map_sitesurvey_path_items_nodes:
      items:
        $ref: '#/components/schemas/map_node'
      minItems: 0
      type: array
    map_site_replace_file_json:
      additionalProperties: false
      properties:
        transform:
          $ref: '#/components/schemas/map_site_replace_file_json_transform'
      type: object
    latlng_tl:
      additionalProperties: false
      description: When type=google, latitude / longitude of the top-left corner
      properties:
        lat:
          type: string
        lng:
          type: string
      type: object
    response_http401:
      additionalProperties: false
      properties:
        detail:
          examples:
          - Authentication credentials were not provided.
          type: string
      type: object
    map_import_json_vendor_name:
      description: 'enum: `ekahau`, `ibwave`'
      enum:
      - ekahau
      - ibwave
      examples:
      - ekahau
      type: string
    map_micello_vendor_name:
      default: micello
      description: 'The vendor ‘micello’. enum: `micello`'
      enum:
      - micello
      type: string
    map_node_position:
      additionalProperties: false
      properties:
        x:
          examples:
          - 746
          format: double
          type: number
        y:
          examples:
          - 104
          format: double
          type: number
      required:
      - x
      - y
      type: object
    response_map_import_ap_action:
      description: 'enum: `assigned-named-placed`, `assigned-placed`, `ignored`, `named-placed`, `placed`'
      enum:
      - assigned-named-placed
      - assigned-placed
      - ignored
      - named-placed
      - placed
      type: string
    map_jibestream_vendor_name:
      default: jibestream
      description: 'The vendor ‘jibestream’. enum: `jibestream`'
      enum:
      - jibestream
      type: string
    map_wayfinding_micello:
      additionalProperties: false
      properties:
        account_key:
          examples:
          - adasdf
          type: string
        default_level_id:
          examples:
          - 5
          type: integer
        map_id:
          examples:
          - c660f81dd250c
          type: string
      type: object
    map_geofence_vertice:
      additionalProperties: false
      properties:
        X:
          description: X coordinate
          examples:
          - 700
          type: number
        Y:
          description: Y coordinate
          examples:
          - 100
          type: number
      type: object
    map_view:
      description: 'if `type`==`google`. enum: `hybrid`, `roadmap`, `satellite`, `terrain`'
      enum:
      - hybrid
      - roadmap
      - satellite
      - terrain
      type:
      - string
      - 'null'
    created_time:
      description: When the object has been created, in epoch
      format: double
      readOnly: true
      type: number
    mac_addresses_macs:
      examples:
      - - 683b679ac024
      items:
        type: string
      minItems: 1
      type: array
      uniqueItems: true
    map_wayfinding:
      additionalProperties: false
      description: Properties related to wayfinding
      properties:
        micello:
          $ref: '#/components/schemas/map_wayfinding_micello'
        snap_to_path:
          type: boolean
      type: object
    image_import:
      additionalProperties: false
      properties:
        file:
          contentMediaType: application/octet-stream
          description: Binary file
          type: string
        json:
          type: string
      required:
      - file
      type: object
    map_micello:
      additionalProperties: false
      properties:
        account_key:
          description: Account key that has access to the map
          examples:
          - null
          type: string
        default_level_id:
          description: Micello floor/level id
          examples:
          - 5
          type: integer
        map_id:
          description: Micello map id
          examples:
          - 6f4bf402-45f9-2a56-6c8b-7f83d3bc98e9
          format: uuid
          type: string
        vendor_name:
          $ref: '#/components/schemas/map_micello_vendor_name'
      required:
      - vendor_name
      - account_key
      - map_id
      - default_level_id
      type: object
    map_sitesurvey_path:
      description: Sitesurvey_path
      items:
        $ref: '#/components/schemas/map_sitesurvey_path_items'
      minItems: 0
      type: array
    mac_addresses:
      properties:
        macs:
          $ref: '#/components/schemas/mac_addresses_macs'
      required:
      - macs
      type: object
    maps:
      items:
        $ref: '#/components/schemas/map'
      type: array
    response_map_import:
      additionalProperties: false
      properties:
        aps:
          $ref: '#/components/schemas/response_map_import_aps'
        floorplans:
          $ref: '#/components/schemas/response_map_import_floorplans'
        for_site:
          readOnly: true
          type: boolean
        site_id:
          $ref: '#/components/schemas/site_id'
        summary:
          $ref: '#/components/schemas/response_map_import_summary'
      required:
      - site_id
      - aps
      - floorplans
      - summary
      type: object
    map_wayfinding_path_nodes:
      items:
        $ref: '#/components/schemas/map_node'
      minItems: 0
      type: array
    response_map_import_ap:
      additionalProperties: false
      properties:
        action:
          $ref: '#/components/schemas/response_map_import_ap_action'
        floorplan_id:
          format: uuid
          type: string
        height:
          format: double
          type: number
        mac:
          type: string
        map_id:
          format: uuid
          type: string
        orientation:
          type: integer
        reason:
          type: string
      required:
      - mac
      - action
      - map_id
      - floorplan_id
      - orientation
      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
    map_geofence:
      additionalProperties: false
      properties:
        name:
          description: Name of the geofence
          examples:
          - example
          type: string
        vertices:
          $ref: '#/components/schemas/map_geofence_vertices'
      type: object
    map_node:
      additionalProperties: false
      description: Nodes on maps
      properties:
        edges:
          additionalProperties:
            type: string
          examples:
          - N1: '1'
          type: object
        name:
          examples:
          - N1
          type: string
        position:
          $ref: '#/components/schemas/map_node_position'
      required:
      - name
      type: object
    org_id:
      examples:
      - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61
      format: uuid
      readOnly: true
      type: string
    response_set_devices_map:
      additionalProperties: false
      properties:
        locked:
          $ref: '#/components/schemas/response_set_devices_map_locked'
        moved:
          $ref: '#/components/schemas/response_set_devices_map_moved'
      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
    response_set_devices_map_locked:
      items:
        examples:
        - 5c5b35584a6f
        type: string
      type: array
    map_type:
      default: image
      description: 'enum: `google`, `image`'
      enum:
      - google
      - image
      examples:
      - image
      type: string
    response_http403:
      additionalProperties: false
      properties:
        detail:
          examples:
          - You do not have permission to perform this action.
          type: string
      type: object
    wayfinding_import_json:
      oneOf:
      - $ref: '#/components/schemas/map_jibestream'
      - $ref: '#/components/schemas/map_micello'
    map_jibestream:
      additionalProperties: false
      properties:
        client_id:
          description: Client id
          examples:
          - 199d6770-0f6f-407a-9bd5-fc33c7840194
          format: uuid
          type: string
        client_secret:
          description: Client secret
          examples:
          - /9Nog3yDzcYj0bY91XJZQLCt+m9DXaIVhx+Ghk3ddd
          format: password
          type: string
        customer_id:
          description: Jibestream customer record id
          examples:
          - 123
          type: integer
        endpoint_url:
          description: Map contents endpoint host
          examples:
          - https://api.jibestream.com
          type: string
        map_id:
          description: Jibestream map id
          examples:
          - b069b358-4c97-5319-1f8c-7c5ca64d6ab1
          format: uuid
          type: string
        mmpp:
          description: Millimeter per pixel
          examples:
          - 223
          type: integer
        ppm:
          description: Pixel per meter, same as the map JSON value.
          examples:
          - 4
          type: number
        vendor_name:
          $ref: '#/components/schemas/map_jibestream_vendor_name'
        venue_id:
          description: Venue or organization id
          examples:
          - 123
          type: integer
      required:
      - vendor_name
      - venue_id
      - map_id
      - ppm
      - client_id
      - client_secret
      - customer_id
      - endpoint_url
      - mmpp
      type: object
    response_map_import_floorplans:
      items:
        $ref: '#/components/schemas/response_map_import_floorplan'
      type: array
      uniqueItems: true
    map_wayfinding_path:
      additionalProperties: false
      description: JSON blob for wayfinding (using Dijkstra’s algorithm)
      properties:
        coordinate:
          examples:
          - actual
          type: string
        nodes:
          $ref: '#/components/schemas/map_wayfinding_path_nodes'
      type: object
    site_id:
      examples:
      - 441a1214-6928-442a-8e92-e1d34b8ec6a6
      format: uuid
      readOnly: true
      type: string
    response_http404:
      additionalProperties: false
      properties:
        id:
          type: string
      type: object
    response_map_import_aps:
      items:
        $ref: '#/components/schemas/response_map_import_ap'
      type: array
      uniqueItems: true
    response_http400:
      additionalProperties: false
      properties:
        detail:
          examples:
          - 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
          type: string
      type: object
    map_site_replace_file:
      additionalProperties: false
      properties:
        file:
          contentMediaType: application/octet-stream
          type: string
        json:
          $ref: '#/components/schemas/map_site_replace_file_json'
      requ

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