openapi: 3.1.0
info:
contact:
email: tmunzer@juniper.net
name: Thomas Munzer
description: '> Version: **2606.1.1**
>
> Date: **July 10, 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 Orgs Licenses API
version: 2606.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: []
- csrfToken: []
tags:
- description: 'Licenses are a type of service or access that customers can purchase for various features or services offered by a company.
Subscriptions can have different statuses, such as active, expired, exceeded, or trial, depending on their validity and usage. The status of a subscription determines whether it is currently active and valid, has expired, has exceeded the allowed usage limit, or is in a trial period.
Licenses can be activated using an activation code, and the activation process confirms the inputted code and activates the subscription.'
name: Orgs Licenses
paths:
/api/v1/orgs/{org_id}/claim:
parameters:
- $ref: '#/components/parameters/org_id'
post:
description: Synchronously claims licenses and/or inventory devices from an activation code. All inventory devices are claimed immediately during the request.
operationId: claimOrgLicense
requestBody:
content:
application/json:
examples:
Example:
value:
code: ZHT3K-H36DT-MG85D-M61AC
type: all
schema:
$ref: '#/components/schemas/claim_activation'
description: Request Body
responses:
'200':
$ref: '#/components/responses/ClaimLicense'
'400':
description: Invalid key (or already used)
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/HTTP404'
'429':
$ref: '#/components/responses/HTTP429'
summary: claimOrgLicense
tags:
- Orgs Licenses
/api/v1/orgs/{org_id}/claim/status:
parameters:
- $ref: '#/components/parameters/org_id'
get:
description: Return processing status for an asynchronous organization license claim, optionally including per-device license details.
operationId: GetOrgLicenseAsyncClaimStatus
parameters:
- description: Whether to include license details in the claim status response
in: query
name: detail
schema:
examples:
- true
type: boolean
responses:
'200':
$ref: '#/components/responses/AsyncLicense'
'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: GetOrgLicenseAsyncClaimStatus
tags:
- Orgs Licenses
/api/v1/orgs/{org_id}/claims:
parameters:
- $ref: '#/components/parameters/org_id'
get:
description: List all async inventory claim jobs for the organization, optionally including per-device details per claim.
operationId: listOrgAsyncClaims
parameters:
- description: Whether to include per-device detail in each claim record
in: query
name: detail
schema:
examples:
- true
type: boolean
responses:
'200':
$ref: '#/components/responses/AsyncClaimsList'
'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: listOrgAsyncClaims
tags:
- Orgs Licenses
post:
description: 'Schedules an async claim for inventory devices. Inventory claiming is queued and processed in the background; the response returns immediately with a `claim_id` for polling. Licenses (if `type=all`) are still claimed synchronously during the request.
Use `GET /api/v1/orgs/{org_id}/claims/{claim_id}` to poll the result.'
operationId: createOrgAsyncClaim
requestBody:
content:
application/json:
examples:
Example:
value:
code: ZHT3K-H36DT-MG85D-M61AC
type: inventory
schema:
$ref: '#/components/schemas/claim_activation_async'
description: Request Body
responses:
'200':
$ref: '#/components/responses/AsyncClaimCreate'
'400':
description: Invalid key (or already used)
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/HTTP404'
'429':
$ref: '#/components/responses/HTTP429'
summary: createOrgAsyncClaim
tags:
- Orgs Licenses
/api/v1/orgs/{org_id}/claims/{claim_id}:
parameters:
- $ref: '#/components/parameters/org_id'
- description: Unique identifier of the async claim job
in: path
name: claim_id
required: true
schema:
format: uuid
type: string
get:
description: Return the processing status for a specific async inventory claim job, optionally including per-device details.
operationId: getOrgAsyncClaimStatus
parameters:
- description: Whether to include per-device detail in the claim status response
in: query
name: detail
schema:
examples:
- true
type: boolean
responses:
'200':
$ref: '#/components/responses/AsyncClaimStatus'
'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: getOrgAsyncClaimStatus
tags:
- Orgs Licenses
/api/v1/orgs/{org_id}/licenses:
parameters:
- $ref: '#/components/parameters/org_id'
get:
description: Return the organization license entitlement, subscription, amendment, consumption, and available-license summary.
operationId: getOrgLicensesSummary
responses:
'200':
$ref: '#/components/responses/License'
'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: getOrgLicensesSummary
tags:
- Orgs Licenses
put:
description: "Move, Undo Move or Delete Org License to Another Org\nIf the admin has admin privilege against the `org_id` and `dst_org_id`, he can move some of the licenses to another Org. Given that: \n1. the specified license is currently active \n2. there’s enough licenses left in the specified license (by subscription_id) \n3. there will still be enough entitled licenses for the type of license after the amendment"
operationId: moveOrDeleteOrgLicenseToAnotherOrg
requestBody:
content:
application/json:
examples:
annotate:
value:
notes: customer notes
op: annotate
subscription_id: SUB-000144
delete:
value:
op: delete
subscription_id: SUB-0000144
move:
value:
dst_org_id: 3eff35f7-c218-894e-bca2-24e5325601cc
op: amend
quantity: 10
subscription_id: SUB-0000144
undo_move:
value:
amendment_id: 2b9116ab-cd1e-e897-6e08-31fccd88e792
op: unamend
schema:
$ref: '#/components/schemas/org_license_action'
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: moveOrDeleteOrgLicenseToAnotherOrg
tags:
- Orgs Licenses
/api/v1/orgs/{org_id}/licenses/usages:
parameters:
- $ref: '#/components/parameters/org_id'
get:
description: 'Get Licenses Usage by Sites
This shows license usage (i.e. needed) based on the features enabled for the site.'
operationId: getOrgLicensesBySite
responses:
'200':
$ref: '#/components/responses/LicenseUsageOrg'
'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: getOrgLicensesBySite
tags:
- Orgs Licenses
components:
schemas:
claim_type_async:
description: 'Claim scope for async inventory claiming. enum: `all`, `inventory`'
enum:
- all
- inventory
type: string
license:
additionalProperties: false
description: Organization license entitlement, subscription, and usage summary
properties:
amendments:
$ref: '#/components/schemas/license_amendments'
description: Read-only license amendments associated with the organization
entitled:
additionalProperties:
type: integer
description: Property key is license type (e.g. SUB-MAN) and Property value is the number of licenses entitled.
readOnly: true
type: object
fully_loaded:
$ref: '#/components/schemas/license_fully_loaded'
description: Maximum license demand by service if all organization devices use each service
licenses:
$ref: '#/components/schemas/licenses'
description: Read-only license subscriptions for the organization
summary:
$ref: '#/components/schemas/license_summary'
description: Current license consumption by license type
usages:
$ref: '#/components/schemas/license_usages'
description: Available license counts by service
type: object
device_type_default_ap:
default: ap
description: 'enum: `ap`, `gateway`, `switch`'
enum:
- ap
- gateway
- switch
type: string
response_async_license_status:
description: 'Processing state for an asynchronous license claim. enum: `prepared`, `ongoing`, `done`'
enum:
- prepared
- ongoing
- done
type: string
response_async_claims_list:
additionalProperties: false
description: List of async inventory claim jobs for the organization
properties:
claims:
description: Async claim job status records
items:
$ref: '#/components/schemas/response_async_claim_status'
type: array
type: object
license_sub:
additionalProperties: false
description: Read-only license subscription record
properties:
created_time:
$ref: '#/components/schemas/created_time'
description: Timestamp when the license subscription was created
end_time:
description: End date of the license term
readOnly: true
type: integer
id:
$ref: '#/components/schemas/id'
description: Unique identifier of the license subscription
modified_time:
$ref: '#/components/schemas/modified_time'
description: Timestamp when the license subscription was last modified
order_id:
description: Order identifier for this license subscription
readOnly: true
type: string
org_id:
$ref: '#/components/schemas/org_id'
description: Organization that owns this license subscription
quantity:
description: Number of devices entitled for this license
readOnly: true
type: integer
remaining_quantity:
description: Number of licenses left in this subscription
type: integer
start_time:
description: Start date of the license term
readOnly: true
type: integer
subscription_id:
description: Subscription identifier for this license subscription
readOnly: true
type: string
type:
$ref: '#/components/schemas/license_type'
description: License type for this subscription
readOnly: true
type: object
license_type:
description: Type of license. The list of supported license type can be retrieve with the [List License Type](/#operations/listLicenseTypes) API request.
readOnly: true
type: string
timestamp:
description: Epoch timestamp, in seconds
format: double
readOnly: true
type: number
response_async_license_completed:
description: Device MAC addresses that completed asynchronous license claim processing
items:
type: string
type: array
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_http429:
additionalProperties: false
description: Standard HTTP 429 rate limit error response
properties:
detail:
description: Human-readable explanation of the rate limit error
examples:
- Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
type: string
type: object
response_http401:
additionalProperties: false
description: Standard HTTP 401 authentication error response
properties:
detail:
description: Human-readable explanation of the authentication error
examples:
- Authentication credentials were not provided.
type: string
type: object
response_claim_license_license_error:
description: License claim errors returned by order number
items:
$ref: '#/components/schemas/response_claim_license_license_error_item'
type: array
uniqueItems: true
org_id:
description: Unique identifier of a Mist organization
examples:
- a97c1b22-a4e9-411e-9bfd-d8695a0f9e61
format: uuid
readOnly: true
type: string
response_async_license_detail:
additionalProperties: false
description: Per-device asynchronous license claim status
properties:
mac:
description: Device MAC address for this license claim detail
type: string
status:
description: Claim processing state for this device
type: string
timestamp:
$ref: '#/components/schemas/timestamp'
description: Epoch timestamp when this device claim status was reported
type: object
response_claim_license_inventory_added:
description: Inventory devices added by the claim operation
items:
$ref: '#/components/schemas/response_claim_license_inventory_item'
type: array
uniqueItems: true
created_time:
description: When the object has been created, in epoch
format: double
readOnly: true
type: number
response_claim_license_inventory_duplicated:
description: Inventory devices already present during the claim operation
items:
$ref: '#/components/schemas/response_claim_license_inventory_item'
type: array
uniqueItems: true
response_http403:
additionalProperties: false
description: Standard HTTP 403 permission error response
properties:
detail:
description: Human-readable explanation of the permission error
examples:
- You do not have permission to perform this action.
type: string
type: object
license_amendment:
additionalProperties: false
description: Read-only change applied to a license subscription
properties:
created_time:
$ref: '#/components/schemas/created_time'
description: Timestamp when the license amendment was created
end_time:
description: End time of the license amendment
readOnly: true
type: integer
id:
$ref: '#/components/schemas/id'
description: Unique identifier of the license amendment
modified_time:
$ref: '#/components/schemas/modified_time'
description: Timestamp when the license amendment was last modified
quantity:
description: License quantity associated with this amendment
readOnly: true
type: integer
start_time:
description: Start time of the license amendment
readOnly: true
type: integer
subscription_id:
description: Subscription identifier associated with this amendment
readOnly: true
type: string
type:
$ref: '#/components/schemas/license_type'
description: License type affected by this amendment
readOnly: true
type: object
response_claim_license:
additionalProperties: false
description: Result of claiming licenses or activation codes
properties:
inventory_added:
$ref: '#/components/schemas/response_claim_license_inventory_added'
description: Inventory devices added by the claim operation
inventory_duplicated:
$ref: '#/components/schemas/response_claim_license_inventory_duplicated'
description: Inventory devices already present during the claim operation
inventory_pending:
$ref: '#/components/schemas/response_claim_license_inventory_pending'
description: Inventory devices pending asynchronous claim processing
license_added:
$ref: '#/components/schemas/response_claim_license_license_added'
description: License entitlements added by the claim operation
license_duplicated:
$ref: '#/components/schemas/response_claim_license_license_duplicated'
description: License entitlements already present during the claim operation
license_error:
$ref: '#/components/schemas/response_claim_license_license_error'
description: License claim errors returned by order number
required:
- license_added
- license_duplicated
- license_error
- inventory_added
- inventory_duplicated
type: object
org_license_action:
description: Request to amend, annotate, delete, or unamend an organization license
properties:
amendment_id:
description: If `op`==`unamend`, the ID of the operation to cancel
format: uuid
type: string
dst_org_id:
description: If `op`==`amend`, the id of the org where the license is moved
format: uuid
type: string
notes:
description: If `op`==`annotate`, note text to attach to the license
type: string
op:
$ref: '#/components/schemas/org_license_action_operation'
description: License action operation to perform
quantity:
description: If `op`==`amend`, the number of licenses to move
type: integer
subscription_id:
description: If `op`==`amend` or `op`==`delete`, the ID of the subscription to use
type: string
required:
- op
type: object
claim_activation:
description: Request to claim organization licenses or activation codes
properties:
code:
description: Activation or license claim code to redeem
type: string
device_type:
$ref: '#/components/schemas/device_type_default_ap'
description: If only intended to claim a certain device type, specify it here
type:
$ref: '#/components/schemas/claim_type'
description: Claim scope, such as all, inventory, or license
required:
- code
- type
type: object
response_async_license_incompleted:
description: Device MAC addresses not yet completed in asynchronous license claim processing
items:
type: string
type: array
response_http400:
additionalProperties: false
description: Standard HTTP 400 bad request error response
properties:
detail:
description: Human-readable explanation of the bad request error
examples:
- 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
type: string
type: object
response_claim_license_license_duplicated:
description: License entitlements already present during the claim operation
items:
$ref: '#/components/schemas/response_claim_license_license_item'
type: array
uniqueItems: true
license_usages:
additionalProperties:
readOnly: true
type: integer
description: Number of available licenses. Property key is the service name (e.g. "SUB-MAN").
readOnly: true
type: object
response_async_license:
additionalProperties: false
description: Asynchronous license claim progress response
properties:
completed:
$ref: '#/components/schemas/response_async_license_completed'
description: Device MAC addresses that completed asynchronous license claim processing
details:
$ref: '#/components/schemas/response_async_license_details'
description: Per-device status details for asynchronous license claim processing
failed:
description: Number of devices that failed license claim processing
type: integer
incompleted:
$ref: '#/components/schemas/response_async_license_incompleted'
description: Device MAC addresses not yet completed in asynchronous license claim processing
processed:
description: Number of devices processed so far by asynchronous license claim
type: integer
scheduled_at:
description: Epoch timestamp when the asynchronous license claim was scheduled
type: integer
status:
$ref: '#/components/schemas/response_async_license_status'
description: Current asynchronous license claim processing state
succeed:
description: Number of devices that successfully completed license claim processing
type: integer
timestamp:
$ref: '#/components/schemas/timestamp'
description: Epoch timestamp when this asynchronous license status was reported
total:
description: Number of devices included in the license claim
type: integer
type: object
response_claim_license_inventory_pending_item:
additionalProperties: false
description: Inventory device pending asynchronous claim processing
properties:
mac:
description: Device MAC address pending asynchronous inventory claim
type: string
type: object
response_async_license_details:
description: Per-device asynchronous license claim status details
items:
$ref: '#/components/schemas/response_async_license_detail'
type: array
response_async_claim_status:
additionalProperties: false
description: Async inventory claim job status
properties:
claim_id:
description: Unique identifier of the async claim job
format: uuid
type: string
completed:
$ref: '#/components/schemas/response_async_license_completed'
description: Device MAC addresses that completed async claim processing
details:
$ref: '#/components/schemas/response_async_license_details'
description: Per-device status details for async claim processing; present when `detail=true`
failed:
description: Number of devices that failed claim processing
type: integer
incompleted:
$ref: '#/components/schemas/response_async_license_incompleted'
description: Device MAC addresses not yet completed in async claim processing
org_id:
$ref: '#/components/schemas/org_id'
description: Organization that owns the async claim job
processed:
description: Number of devices processed so far
type: integer
scheduled_at:
description: Epoch timestamp when the async claim was scheduled
type: integer
status:
$ref: '#/components/schemas/response_async_license_status'
description: Current async claim processing state
succeed:
description: Number of devices that successfully completed claim processing
type: integer
timestamp:
$ref: '#/components/schemas/timestamp'
description: Epoch timestamp of the last status report
total:
description: Total number of devices included in the claim
type: integer
type: object
license_fully_loaded:
additionalProperties:
readOnly: true
type: integer
description: Maximum number of licenses that may be required if the service is enabled on all the Organization Devices. Property key is the service name (e.g. "SUB-MAN").
readOnly: true
type: object
response_claim_license_license_item:
description: License entitlement returned by a claim operation
properties:
end:
description: Epoch timestamp when the license entitlement ends
type: integer
quantity:
description: Number of license units included in the entitlement
type: integer
start:
description: Epoch timestamp when the license entitlement starts
type: integer
type:
description: License SKU or subscription type
type: string
required:
- type
- start
- end
- quantity
response_async_claim_create:
additionalProperties: false
description: Response to an async inventory claim request
properties:
claim_id:
description: Unique identifier for the async claim job, used to poll status
format: uuid
type: string
inventory_pending:
$ref: '#/components/schemas/response_claim_license_inventory_pending'
description: Inventory devices queued for async claim processing
type: object
usage_org_licenses:
description: Organization license usage records returned by a usage response
items:
$ref: '#/components/schemas/license_usage_org'
type: array
uniqueItems: true
claim_type:
default: all
description: 'what to claim. enum: `all`, `inventory`, `license`'
enum:
- all
- inventory
- license
type: string
claim_activation_async:
description: Request to schedule an asynchronous inventory claim
properties:
code:
description: Activation code to claim
type: string
device_type:
$ref: '#/components/schemas/device_type_default_ap'
description: If only intended to claim a certain device type, specify it here
type:
$ref: '#/components/schemas/claim_type_async'
description: Claim scope; `all` claims licenses synchronously and queues inventory, `inventory` queues inventory only
required:
- code
- type
type: object
site_id:
description: Unique identifier of a Mist site
examples:
- 441a1214-6928-442a-8e92-e1d34b8ec6a6
format: uuid
readOnly: true
type: string
license_usage_org:
additionalProperties: false
description: License usage record for an organization usage scope
properties:
for_site:
description: Whether this license usage record is scoped to a site
readOnly: true
type: boolean
fully_loaded:
$ref: '#/components/schemas/license_fully_loaded'
description: Maximum license demand by service if all organization devices use each service
num_devices:
description: Number of devices counted in this license usage scope
readOnly: true
type: integer
site_id:
$ref: '#/components/schemas/site_id'
description: Site associated with this license usage record
summary:
$ref: '#/components/schemas/license_summary'
description: Current license consumption by license type for this usage scope
usages:
$ref: '#/components/schemas/license_usages'
description: Available license counts by service for this usage scope
required:
- num_devices
- site_id
- usages
type: object
org_license_action_operation:
description: 'to move a license, use the `amend` operation. enum: `amend`, `annotate`, `delete`, `unamend`'
enum:
- amend
- annotate
- delete
- unamend
type: string
license_amendments:
description: Read-only list of license amendments
items:
$ref: '#/components/schemas/license_amendment'
readOnly: true
type: array
uniqueItems: true
# --- truncated at 32 KB (51 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mist/refs/heads/main/openapi/mist-orgs-licenses-api-openapi.yml