Juniper Mist AI Orgs NAC Portals API
NAC Portals are for onboard Wireless and Wired client with 802.1X The NAC Portal is a web-based interface that allows users to authenticate and gain access to the network. It is typically used for guest access or for devices that do not have a pre-configured certificate for 802.1X authentication. It can also be used to provision certificates for devices that require them with the Mist Application. ### NAC-Based External Guest Portal Authorization / How to implement a External Guest Portal #### Context In the guest portal flow, context such as SSID, guest MAC, AP MAC is required to unique identify the guest, if it's already authorized (e.g. roam to another AP), and used to instruct the AP to stop redirecting/blocking the user traffic #### Redirect Guest Device (or CNA in MacOS/iOS term) will be redirected to, e.g. “?ap_mac=5c5b35001234&ssid=Guest&…” | Name | Type | Description | |------|------|-------------| | ap_mac | string | AP's MAC address | | site_id | string | Site ID | | device_mac | string | Device's MAC Address (the device that blocks the traffic) | | ssid | string | for wireless | | port_name | string | for wired (e.g. eth0, ge-0/0/13) | | client_mac | string | Client's MAC Address | #### Authorize Once the guest has gone through your portal flow, authorize them by redirect the user to ``` GET https://url_generated_by_portal_authorize_url?jwt= ``` This can be generated by ```python import jwt secret = "EIfPMOykI3lMlDdNPub2WcbqT6dNOtWwmYHAd6bY" # from portal_authorize_jwt_secret above payload = { # for wireless "ap_mac": "5c5b35001234", "wlan_id": "be22bba7-8e22-e1cf-5185-b880816fe2cf", # only for _wireless_ captive portal "client_mac": "d58f6bb4c9d8", # for wired "device_mac": "5c5b35001234", "port_name": "eth0", # only for _wired_ captive portal" "client_mac": "d58f6bb4c9d8", # common # how long should we authorize this session "minutes": 480, "expires": 1768587994, # alternatively # instead of the original URL the user is trying to go to, redirect the user to this URL "forward": "http://www.mist.com", # for testing: if authorize_only=true and authorization is successful, 200 OK will be returned instead of 302 Redirect the user to the `forward` URL "authorize_only": False } encoded_jwt = jwt.encode(payload, secret, algorithm='HS256') ```
Documentation
Specifications
Other Resources
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 Orgs NAC Portals 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: "NAC Portals are for onboard Wireless and Wired client with 802.1X\n\nThe NAC Portal is a web-based interface that allows users to authenticate and\ngain access to the network. It is typically used for guest access or for devices\nthat do not have a pre-configured certificate for 802.1X authentication.\n\nIt can also be used to provision certificates for devices that require them with the Mist Application.\n\n\n### NAC-Based External Guest Portal Authorization / How to implement a External Guest Portal\n\n#### Context\n\nIn the guest portal flow, context such as SSID, guest MAC, AP MAC is required to unique identify the guest, if it's already authorized (e.g. roam to another AP), and used to instruct the AP to stop redirecting/blocking the user traffic\n\n#### Redirect\n\nGuest Device (or CNA in MacOS/iOS term) will be redirected to, e.g. “?ap_mac=5c5b35001234&ssid=Guest&…”\n\n| Name | Type | Description |\n |------|------|-------------|\n | ap_mac | string | AP's MAC address |\n | site_id | string | Site ID |\n | device_mac | string | Device's MAC Address (the device that blocks the traffic) |\n | ssid | string | for wireless |\n | port_name | string | for wired (e.g. eth0, ge-0/0/13) |\n | client_mac | string | Client's MAC Address |\n \n\n#### Authorize\n\nOnce the guest has gone through your portal flow, authorize them by redirect the user to\n\n```\nGET https://url_generated_by_portal_authorize_url?jwt=<signature>\n```\n\nThis can be generated by\n\n```python\nimport jwt\n\nsecret = \"EIfPMOykI3lMlDdNPub2WcbqT6dNOtWwmYHAd6bY\" # from portal_authorize_jwt_secret above \npayload = {\n # for wireless\n \"ap_mac\": \"5c5b35001234\",\n \"wlan_id\": \"be22bba7-8e22-e1cf-5185-b880816fe2cf\", # only for _wireless_ captive portal\n \"client_mac\": \"d58f6bb4c9d8\",\n\n # for wired\n \"device_mac\": \"5c5b35001234\",\n \"port_name\": \"eth0\", # only for _wired_ captive portal\"\n \"client_mac\": \"d58f6bb4c9d8\",\n\n # common\n # how long should we authorize this session\n \"minutes\": 480, \n \"expires\": 1768587994, # alternatively\n # instead of the original URL the user is trying to go to, redirect the user to this URL \n \"forward\": \"http://www.mist.com\",\n # for testing: if authorize_only=true and authorization is successful, 200 OK will be returned instead of 302 Redirect the user to the `forward` URL\n \"authorize_only\": False\n}\n\nencoded_jwt = jwt.encode(payload, secret, algorithm='HS256')\n```\n"
name: Orgs NAC Portals
paths:
/api/v1/orgs/{org_id}/nacportals:
parameters:
- $ref: '#/components/parameters/org_id'
get:
description: List Org NAC Portals
operationId: listOrgNacPortals
parameters:
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/NacPortalArray'
'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: listOrgNacPortals
tags:
- Orgs NAC Portals
post:
description: Create Org NAC Portal
operationId: createOrgNacPortal
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/nac_portal'
responses:
'200':
$ref: '#/components/responses/NacPortal'
'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: createOrgNacPortal
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
delete:
description: Delete Org NAC Portal
operationId: deleteOrgNacPortal
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: deleteOrgNacPortal
tags:
- Orgs NAC Portals
get:
description: Get Org NAC Portal
operationId: getOrgNacPortal
responses:
'200':
$ref: '#/components/responses/NacPortal'
'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: getOrgNacPortal
tags:
- Orgs NAC Portals
put:
description: Update Org NAC Portal
operationId: updateOrgNacPortal
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/nac_portal'
responses:
'200':
$ref: '#/components/responses/NacPortal'
'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: updateOrgNacPortal
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}/failures:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
get:
description: Get List of Org NAC Portal SSO Latest Failures
operationId: listOrgNacPortalSsoLatestFailures
parameters:
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/end'
- $ref: '#/components/parameters/duration'
- $ref: '#/components/parameters/limit'
- $ref: '#/components/parameters/page'
responses:
'200':
$ref: '#/components/responses/SsoLatestFailures'
'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: listOrgNacPortalSsoLatestFailures
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}/portal_image:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
delete:
description: 'Delete background image for NAC Portal
If image is not uploaded or is deleted, NAC Portal will use default image.'
operationId: deleteOrgNacPortalImage
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: deleteOrgNacPortalImage
tags:
- Orgs NAC Portals
post:
description: Upload background image for NAC Portal
operationId: uploadOrgNacPortalImage
requestBody:
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/psk_portal_image'
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: uploadOrgNacPortalImage
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}/portal_template:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
put:
description: Update Org NAC Portal Template
operationId: updateOrgNacPortalTemplate
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/nac_portal_template'
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: updateOrgNacPortalTemplate
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}/saml_metadata:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
get:
description: Get Org NAC Portal SAML Metadata
operationId: getOrgNacPortalSamlMetadata
responses:
'200':
$ref: '#/components/responses/SamlMetadata'
'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: getOrgNacPortalSamlMetadata
tags:
- Orgs NAC Portals
/api/v1/orgs/{org_id}/nacportals/{nacportal_id}/saml_metadata.xml:
parameters:
- $ref: '#/components/parameters/org_id'
- $ref: '#/components/parameters/nacportal_id'
get:
description: "Download Org NAC Portal SAML Metadata\n\nExample of metadata.xml:\n```xml\n<?xml version=\"1.0\" encoding=\"UTF-8\"?><md:EntityDescriptor xmlns:md=\"urn:oasis:names:tc:SAML:2.0:metadata\" entityID=\"https://api.mist.com/api/v1/saml/5hdF5g/login\" validUntil=\"2027-10-12T21:59:01Z\" xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\">\n <md:SPSSODescriptor AuthnRequestsSigned=\"false\" WantAssertionsSigned=\"true\" protocolSupportEnumeration=\"urn:oasis:names:tc:SAML:2.0:protocol\">\n <md:SingleLogoutService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://api.mist.com/api/v1/saml/5hdF5g/logout\" />\n <md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>\n <md:AssertionConsumerService Binding=\"urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST\" Location=\"https://api.mist.com/api/v1/saml/5hdF5g/login\" index=\"0\" isDefault=\"true\"/>\n <md:AttributeConsumingService index=\"0\">\n <md:ServiceName xml:lang=\"en-US\">Mist</md:ServiceName>\n <md:RequestedAttribute Name=\"Role\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\" isRequired=\"true\"/>\n <md:RequestedAttribute Name=\"FirstName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\" isRequired=\"false\"/>\n <md:RequestedAttribute Name=\"LastName\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:basic\" isRequired=\"false\"/>\n </md:AttributeConsumingService>\n </md:SPSSODescriptor>\n</md:EntityDescriptor>\n```"
operationId: downloadOrgNacPortalSamlMetadata
responses:
'200':
$ref: '#/components/responses/File'
'400':
$ref: '#/components/responses/HTTP400'
'401':
$ref: '#/components/responses/HTTP401'
'403':
$ref: '#/components/responses/HTTP403'
'404':
$ref: '#/components/responses/HTTP404'
'429':
$ref: '#/components/responses/HTTP429'
summary: downloadOrgNacPortalSamlMetadata
tags:
- Orgs NAC Portals
components:
schemas:
response_sso_failure_search:
additionalProperties: false
properties:
results:
$ref: '#/components/schemas/response_sso_failure_search_results'
required:
- results
type: object
nac_portal_access_type:
default: wireless
description: 'if `type`==`marvis_client`. enum: `wireless`, `wireless+wired`'
enum:
- wireless
- wireless+wired
type: string
psk_portal_image:
additionalProperties: false
properties:
file:
contentMediaType: application/octet-stream
description: Binary file
type: string
json:
description: JSON string describing the upload
type: string
type: object
response_http403:
additionalProperties: false
properties:
detail:
examples:
- You do not have permission to perform this action.
type: string
type: object
portal_template_alignment:
default: center
description: 'defines alignment on portal. enum: `center`, `left`, `right`'
enum:
- center
- left
- right
type: string
nac_portal_type:
description: "enum: \n * `guest_admin`: NAC-Based Portal Admin for Pre Created Guest Authentication\n * `guest_portal`: NAC-Based Guest Portal\n * `marvis_client`\n"
enum:
- guest_admin
- guest_portal
- marvis_client
type: string
nac_portal_additional_cacerts:
description: Optional list of additional CA certificates to be used
examples:
- - '-----BEGIN CERTIFICATE-----\nMIIFZjCCA06gAwIBAgIIP61/1qm/uDowDQYJKoZIhvcNAQELBQE\n-----END CERTIFICATE-----'
items:
type: string
type: array
saml_metadata:
additionalProperties: false
properties:
acs_url:
description: If `idp_type`==`saml`
examples:
- https://api.mist.com/api/v1/saml/llDfa13f/login
readOnly: true
type: string
entity_id:
description: If `idp_type`==`saml`
examples:
- https://api.mist.com/api/v1/saml/llDfa13f/login
readOnly: true
type: string
logout_url:
description: If `idp_type`==`saml`
examples:
- https://api.mist.com/api/v1/saml/llDfa13f/logout
readOnly: true
type: string
metadata:
description: If `idp_type`==`saml`
examples:
- <?xml version="1.0" encoding="UTF-8"?><md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" entityID="https://api.mist.com/api/v1/saml/llDfa13f/login" validUntil="2027-10-12T21:59:01Z" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"><md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat><md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="https://api.mist.com/api/v1/saml/llDfa13f/login" index="0" isDefault="true"/></md:SPSSODescriptor></md:EntityDescriptor>
readOnly: true
type: string
scim_base_url:
description: If `idp_type`==`oauth` and `scim_enabled`==`true`
examples:
- https://scim.nac-staging.mistsys.com/S_41b2525a-e8b8-4809-8168-f1d8dcbe9735/azure/4d72b1dc-7503-4717-81ea-80d0125b886e
type: string
type: object
nac_portal_guest_portal_auth:
description: 'Guest portal authentication type. enum: `external`, `multi`, `none`'
enum:
- external
- multi
- none
type: string
response_sso_failure_search_results:
items:
$ref: '#/components/schemas/response_sso_failure_search_item'
type: array
uniqueItems: true
nac_portal_sso_idp_sign_algo:
default: sha256
description: 'Signing algorithm for SAML Assertion. enum: `sha1`, `sha256`, `sha384`, `sha512`.'
enum:
- sha1
- sha256
- sha384
- sha512
type: string
nac_portal_sso:
additionalProperties: false
properties:
idp_cert:
examples:
- '-----BEGIN CERTIFICATE-----\nMIIFZjCCA06gAwIBAgIIP61/1qm/uDowDQYJKoZIhvcNAQELBQE\n-----END CERTIFICATE-----'
type: string
idp_sign_algo:
$ref: '#/components/schemas/nac_portal_sso_idp_sign_algo'
idp_sso_url:
examples:
- https://yourorg.onelogin.com/trust/saml2/http-post/sso/138130
type: string
issuer:
examples:
- https://app.onelogin.com/saml/metadata/138130
type: string
nameid_format:
examples:
- email
type: string
sso_role_matching:
$ref: '#/components/schemas/nac_portal_sso_role_matchings'
use_sso_role_for_cert:
description: If it's desired to inject a role into Cert's Subject (so it can be used later on in policy)
type: boolean
type: object
nac_portal_guest_portal:
additionalProperties: false
description: "Guest portal configuration when `type`==`guest_portal`. If \n * `auth`==`none`, the user is presented with a terms of service and can click and continue.\n * `auth`==`external`, the user is redirected to an external URL for authentication.\n * `auth`==`multi`, the user is presented with a choice of authentication methods:\n - social logins: facebook / google / amazon / microsoft / azure\n - sponsor\n - sms: supported provider: twillio\n - email\n - sso\n - userpass: pre created guest list\n"
properties:
auth:
$ref: '#/components/schemas/nac_portal_guest_portal_auth'
expire:
description: If `auth`==`none` or `auth`==`multi`, whether to expire the guest after a certain time
examples:
- 1440
type: integer
external_portal_url:
description: If `auth`==`external`, the URL to redirect the user to for authentication
examples:
- https://yourorg.com/external-guest-portal
type: string
force_reconnect:
description: Disconnect client (workaround for reauth issues)
type: boolean
forward:
description: If `auth`==`none` or `auth`==`multi`, whether to forward the user to the guest portal after authentication
examples:
- true
type: boolean
forward_url:
description: If `auth`==`none` or `auth`==`multi`, URL to forward the user to after authentication
examples:
- https://yourorg.com/guest-portal-redirect
type: string
max_num_devices:
default: 0
description: Maximum number of clients allowed per guest. 0 (default, unlimited), 1-100 range
examples:
- 10
maximum: 100
minimum: 0
type: integer
privacy:
description: If `auth`==`none` or `auth`==`multi`, whether to show the privacy policy
examples:
- true
type: boolean
type: object
nac_portal_sso_role_matchings:
items:
$ref: '#/components/schemas/nac_portal_sso_role_matching'
type: array
response_http404:
additionalProperties: false
properties:
id:
type: string
type: object
timestamp:
description: Epoch (seconds)
format: double
readOnly: true
type: number
response_sso_failure_search_item:
additionalProperties: false
properties:
detail:
type: string
saml_assertion_xml:
type: string
timestamp:
$ref: '#/components/schemas/timestamp'
required:
- timestamp
- detail
- saml_assertion_xml
type: object
nac_portal_sso_role_matching:
additionalProperties: false
properties:
assigned:
examples:
- user
type: string
match:
examples:
- Student
type: string
type: object
nac_portal_eap_type:
default: wpa2
description: 'enum: `wpa2`, `wpa3`'
enum:
- wpa2
- wpa3
type: string
response_http400:
additionalProperties: false
properties:
detail:
examples:
- 'JSON parse error - Expecting value: line 5 column 8 (char 56)'
type: string
type: object
response_http429:
additionalProperties: false
properties:
detail:
examples:
- Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
type: string
type: object
nac_portal_template:
properties:
alignment:
$ref: '#/components/schemas/portal_template_alignment'
color:
default: '#1074bc'
type: string
logo:
description: Custom logo custom logo with "data:image/png;base64," format. default null, uses Juniper Mist Logo.
type: string
poweredBy:
default: false
description: Whether to hide "Powered by Juniper Mist" and email footers
type: boolean
type: object
nac_portal:
properties:
access_type:
$ref: '#/components/schemas/nac_portal_access_type'
additional_cacerts:
$ref: '#/components/schemas/nac_portal_additional_cacerts'
additional_nac_server_name:
description: Optional list of additional NAC server names
examples:
- - nac1.corp.com
- nac2.corp.com
items:
type: string
type: array
bg_image_url:
description: Background image
type: string
cert_expire_time:
description: In days
examples:
- 365
type: integer
eap_type:
$ref: '#/components/schemas/nac_portal_eap_type'
enable_telemetry:
description: Model, version, fingering, events (connecting, disconnect, roaming), which ap
type: boolean
expiry_notification_time:
description: In days
type: integer
name:
examples:
- get-wifi
type: string
notify_expiry:
description: phase 2
type: boolean
portal:
$ref: '#/components/schemas/nac_portal_guest_portal'
portal_authorize_jwt_secret:
description: If `type`==`guest_portal` and `auth`==`external`, the `portal_authorize_jwt_secret` will be generated
examples:
- 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
readOnly: true
type: string
portal_authorize_url:
description: If `type`==`guest_portal` and `auth`==`external`, the `portal_authorize_url` will be generated
examples:
- https://guest-mistnac.mist.com/callback/be22bba7-8e22-e1cf-5185-b880816fe2cf/authorize
readOnly: true
type: string
portal_sso_url:
description: If `type`==`guest_portal` or `type`==`guest_admin` and ans SSO is enabled, the `portal_sso_url` will be generated (which needs to be configured in your IDP
examples:
- https://guest-mistnac.mist.com/callback/be22bba7-8e22-e1cf-5185-b880816fe2cf/acs
readOnly: true
type: string
ssid:
examples:
- Corp
type: string
sso:
$ref: '#/components/schemas/nac_portal_sso'
template_url:
type: string
thumbnail_url:
readOnly: true
type: string
tos:
type: string
type:
$ref: '#/components/schemas/nac_portal_type'
ui_url:
description: If `auth`==`guest_admin`, the URL to the guest admin portal
examples:
- https://guest-mistnac.mist.com/admin/51908ea7-dea7-4581-a578-f7320c4d5216/login
readOnly: true
type: string
type: object
response_http401:
additionalProperties: false
properties:
detail:
examples:
- Authentication credentials were not provided.
type: string
type: object
nac_portals:
items:
$ref: '#/components/schemas/nac_portal'
type: array
parameters:
org_id:
in: path
name: org_id
required: true
schema:
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
format: uuid
type: string
start:
description: Start time (epoch timestamp in seconds, or relative string like "-1d", "-1w")
in: query
name: start
schema:
type: string
duration:
description: Duration like 7d, 2w
in: query
name: duration
schema:
default: 1d
examples:
- 10m
type: string
page:
in: query
name: page
schema:
default: 1
minimum: 1
type: integer
end:
description: End time (epoch timestamp in seconds, or relative string like "-1d", "-2h", "now")
in: query
name: end
schema:
type: string
nacportal_id:
in: path
name: nacportal_id
required: true
schema:
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
format: uuid
type: string
limit:
in: query
name: limit
schema:
default: 100
minimum: 0
type: integer
responses:
HTTP404:
content:
application/json:
schema:
$ref: '#/components/schemas/response_http404'
application/vnd.api+json:
schema:
$ref: '#/components/schemas/response_http404'
description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist
HTTP429:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP429Example'
schema:
$ref: '#/components/schemas/response_http429'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP429Example'
schema:
$ref: '#/components/schemas/response_http429'
description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold
File:
content:
application/json:
schema:
contentMediaType: application/octet-stream
description: File
type: string
application/vnd.api+json:
schema:
contentMediaType: application/octet-stream
description: File
type: string
description: OK
NacPortal:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/NacPortalExample'
schema:
$ref: '#/components/schemas/nac_portal'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/NacPortalExample'
schema:
$ref: '#/components/schemas/nac_portal'
description: OK
NacPortalArray:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/NacPortalArrayExample'
schema:
$ref: '#/components/schemas/nac_portals'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/NacPortalArrayExample'
schema:
$ref: '#/components/schemas/nac_portals'
description: OK
SamlMetadata:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/SamlMetadataExample'
schema:
$ref: '#/components/schemas/saml_metadata'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/SamlMetadataExample'
schema:
$ref: '#/components/schemas/saml_metadata'
description: OK
HTTP403:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP403Example'
schema:
$ref: '#/components/schemas/response_http403'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP403Example'
schema:
$ref: '#/components/schemas/response_http403'
description: Permission Denied
HTTP400:
content:
application/json:
examples:
Example:
$ref: '#/components/examples/HTTP400Example'
schema:
$ref: '#/components/schemas/response_http400'
application/vnd.api+json:
examples:
Example:
$ref: '#/components/examples/HTTP400Example'
schema:
$ref: '#/components/schemas/response_http400'
description: Bad Syntax
OK:
description: OK
SsoLatestFailures:
content:
application/json:
examples:
Example:
$ref: '#/components/examp
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/mist-ai/refs/heads/main/openapi/mist-ai-orgs-nac-portals-api-openapi.yml