openapi: 3.2.0 info: title: Mist Sites NAC Fingerprints API description: '> Version: **2607.1.1** > > Date: **August 17, 2026** NOTE: Some important API changes will be introduced.' contact: name: Thomas Munzer email: tmunzer@juniper.net version: 2607.1.1 servers: - url: https://api.mist.com variables: {} - url: https://api.gc1.mist.com variables: {} - url: https://api.ac2.mist.com variables: {} - url: https://api.gc2.mist.com variables: {} - url: https://api.gc4.mist.com variables: {} - url: https://api.eu.mist.com variables: {} - url: https://api.gc3.mist.com variables: {} - url: https://api.ac6.mist.com variables: {} - url: https://api.gc6.mist.com variables: {} - url: https://api.ac5.mist.com variables: {} - url: https://api.gc5.mist.com variables: {} - url: https://api.gc7.mist.com variables: {} security: - apiToken: [] - csrfToken: [] tags: - name: Sites NAC Fingerprints description: The NAC IDP allows users to integrate with various Identity Providers (IDPs) to enhance authentication and access control. Admins can configure identity providers such as microsoft EntraID, okta workforce identity cloud, and google workspace idp. paths: /api/v1/sites/{site_id}/insights/fingerprints/count: parameters: [] get: tags: - Sites NAC Fingerprints summary: countSiteClientFingerprints description: Count Client Fingerprints operationId: countSiteClientFingerprints parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: distinct in: query description: 'Field used to group this count response. enum: `family`, `model`, `os`, `os_type`' style: form explode: true schema: allOf: - $ref: '#/components/schemas/fingerprints_count_distinct' - description: 'Field used to group this count response. enum: `family`, `model`, `os`, `os_type`' - name: start in: query description: Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` style: form explode: true schema: type: string - name: end in: query description: Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` style: form explode: true schema: type: string - name: duration in: query description: Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` style: form explode: true schema: type: string default: 1d examples: - 10m - name: limit in: query description: Maximum number of results to return per page style: form explode: true schema: minimum: 0 type: integer contentEncoding: int32 default: 100 responses: '200': description: Result of Count headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_count' - description: Distinct count response for time-bounded search results examples: - distinct: string end: 0 limit: 0 results: - count: 0 property: string start: 0 total: 0 contentMediaType: application/json examples: Example: value: distinct: string end: 0 limit: 0 results: - count: 0 property: string start: 0 total: 0 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_count' - description: Distinct count response for time-bounded search results examples: - distinct: string end: 0 limit: 0 results: - count: 0 property: string start: 0 total: 0 contentMediaType: application/vnd.api+json examples: Example: value: distinct: string end: 0 limit: 0 results: - count: 0 property: string start: 0 total: 0 '400': description: Bad Syntax headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/vnd.api+json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' '401': description: Unauthorized headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/json examples: Example: value: detail: Authentication credentials were not provided. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/vnd.api+json examples: Example: value: detail: Authentication credentials were not provided. '403': description: Permission Denied headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/json examples: Example: value: detail: You do not have permission to perform this action. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/vnd.api+json examples: Example: value: detail: You do not have permission to perform this action. '404': description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/vnd.api+json '429': description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/vnd.api+json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold deprecated: false /api/v1/sites/{site_id}/insights/fingerprints/search: parameters: [] get: tags: - Sites NAC Fingerprints summary: searchSiteClientFingerprints description: Search Client Fingerprints operationId: searchSiteClientFingerprints parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: family in: query description: Device Category of the client device style: form explode: true schema: type: string examples: - EX Series Switch - name: client_type in: query description: 'Filter results by client type. enum: `wireless`, `wired`, `vty`' style: form explode: true schema: allOf: - $ref: '#/components/schemas/nac_access_type' - description: 'Filter results by client type. enum: `wireless`, `wired`, `vty`' examples: - wired - name: model in: query description: Filter results by device model style: form explode: true schema: type: string examples: - ex4100-f-12p - name: mfg in: query description: Manufacturer name of the client device style: form explode: true schema: type: string examples: - Juniper Networks, Inc. - name: os in: query description: Operating System name and version of the client device style: form explode: true schema: type: string examples: - JUNOS 22.3R1.12 - name: os_type in: query description: Operating system name of the client device style: form explode: true schema: type: string examples: - JUNOS - name: mac in: query description: Filter results by MAC address style: form explode: true schema: type: string examples: - d420b080516d - name: limit in: query description: Maximum number of results to return per page style: form explode: true schema: minimum: 0 type: integer contentEncoding: int32 default: 100 - name: start in: query description: Lower bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d` or `-1w` style: form explode: true schema: type: string - name: end in: query description: Upper bound of the time range, as an epoch timestamp in seconds or a relative value such as `-1d`, `-2h`, or `now` style: form explode: true schema: type: string - name: duration in: query description: Time range duration for the query, using relative units such as `10m`, `7d`, or `2w` style: form explode: true schema: type: string default: 1d examples: - 10m - name: interval in: query description: Aggregation works by giving a time range plus interval (e.g. 1d, 1h, 10m) where aggregation function would be applied to. style: form explode: true schema: type: string examples: - 10m - name: sort in: query description: On which field the list should be sorted, -prefix represents DESC order. style: form explode: true schema: type: string default: wxid examples: - -site_id - name: search_after in: query description: Pagination cursor for retrieving subsequent pages of results. This value is automatically populated by Mist in the `next` URL from the previous response and should not be manually constructed. style: form explode: true schema: type: string responses: '200': description: OK headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/fingerprint_search_result' - description: Search response for client device fingerprint records examples: - end: 1735678700 limit: 10 results: - family: Apple mac: d420b080516e mfg: Apple, Inc. model: Unknown org_id: bb2fb165-0931-49c7-a1b8-9b5814326b7d os: iOS 18.1.1 os_type: iOS random_mac: true site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735678662.58 - family: EX Series Switch mac: d420b080516d mfg: Juniper Networks, Inc. model: ex4100-f-12p org_id: b6bc08f3-60a3-402b-8f0d-caf9132a1e9a os: JUNOS 22.3R1.12 os_type: JUNOS random_mac: false site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735669092.932 start: 1735678650 total: 2 contentMediaType: application/json examples: Example: value: end: 1735678700 limit: 10 results: - family: Apple mac: d420b080516e mfg: Apple, Inc. model: Unknown org_id: bb2fb165-0931-49c7-a1b8-9b5814326b7d os: iOS 18.1.1 os_type: iOS random_mac: true site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735678662.58 - family: EX Series Switch mac: d420b080516d mfg: Juniper Networks, Inc. model: ex4100-f-12p org_id: b6bc08f3-60a3-402b-8f0d-caf9132a1e9a os: JUNOS 22.3R1.12 os_type: JUNOS random_mac: false site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735669092.932 start: 1735678650 total: 2 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/fingerprint_search_result' - description: Search response for client device fingerprint records examples: - end: 1735678700 limit: 10 results: - family: Apple mac: d420b080516e mfg: Apple, Inc. model: Unknown org_id: bb2fb165-0931-49c7-a1b8-9b5814326b7d os: iOS 18.1.1 os_type: iOS random_mac: true site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735678662.58 - family: EX Series Switch mac: d420b080516d mfg: Juniper Networks, Inc. model: ex4100-f-12p org_id: b6bc08f3-60a3-402b-8f0d-caf9132a1e9a os: JUNOS 22.3R1.12 os_type: JUNOS random_mac: false site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735669092.932 start: 1735678650 total: 2 contentMediaType: application/vnd.api+json examples: Example: value: end: 1735678700 limit: 10 results: - family: Apple mac: d420b080516e mfg: Apple, Inc. model: Unknown org_id: bb2fb165-0931-49c7-a1b8-9b5814326b7d os: iOS 18.1.1 os_type: iOS random_mac: true site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735678662.58 - family: EX Series Switch mac: d420b080516d mfg: Juniper Networks, Inc. model: ex4100-f-12p org_id: b6bc08f3-60a3-402b-8f0d-caf9132a1e9a os: JUNOS 22.3R1.12 os_type: JUNOS random_mac: false site_id: 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: 1735669092.932 start: 1735678650 total: 2 '400': description: Bad Syntax headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http400' - description: Standard HTTP 400 bad request error response examples: - detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' contentMediaType: application/vnd.api+json examples: Example: value: detail: 'JSON parse error - Expecting value: line 5 column 8 (char 56)' '401': description: Unauthorized headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/json examples: Example: value: detail: Authentication credentials were not provided. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http401' - description: Standard HTTP 401 authentication error response examples: - detail: Authentication credentials were not provided. contentMediaType: application/vnd.api+json examples: Example: value: detail: Authentication credentials were not provided. '403': description: Permission Denied headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/json examples: Example: value: detail: You do not have permission to perform this action. application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http403' - description: Standard HTTP 403 permission error response examples: - detail: You do not have permission to perform this action. contentMediaType: application/vnd.api+json examples: Example: value: detail: You do not have permission to perform this action. '404': description: Not found. The API endpoint doesn’t exist or resource doesn’ t exist headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/json application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http404' - description: Standard HTTP 404 not found error response contentMediaType: application/vnd.api+json '429': description: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/response_http429' - description: Standard HTTP 429 rate limit error response examples: - detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold contentMediaType: application/vnd.api+json examples: Example: value: detail: Too Many Request. The API Token used for the request reached the 5000 API Calls per hour threshold deprecated: false components: schemas: response_http403: title: response_http403 type: object properties: detail: type: string description: Human-readable explanation of the permission error examples: - You do not have permission to perform this action. description: Standard HTTP 403 permission error response count_result: title: count_result required: - count type: object properties: count: type: integer description: Number of matching items for the distinct value or values in this result contentEncoding: int32 additionalProperties: type: string description: Count result row with the matching distinct field values nac_access_type: title: nac_access_type enum: - wireless - wired - vty type: string description: 'Type of network access. enum: `wireless`, `wired`, `vty`' examples: - wireless response_http400: title: response_http400 type: object properties: detail: type: string description: Human-readable explanation of the bad request error examples: - 'JSON parse error - Expecting value: line 5 column 8 (char 56)' description: Standard HTTP 400 bad request error response fingerprints_count_distinct: title: fingerprints_count_distinct enum: - family - model - os - os_type type: string description: 'enum: `family`, `model`, `os`, `os_type`' response_http404: title: response_http404 type: object properties: id: type: string description: Missing resource identifier, when the API includes one description: Standard HTTP 404 not found error response response_count: title: response_count required: - distinct - end - limit - results - start - total type: object properties: distinct: type: string description: Field used to group the count results end: type: integer description: Search window end timestamp for the count request, in epoch seconds contentEncoding: int32 limit: type: integer description: Maximum number of distinct count results requested contentEncoding: int32 results: uniqueItems: true type: array items: $ref: '#/components/schemas/count_result' description: Count results grouped by the distinct field start: type: integer description: Search window start timestamp for the count request, in epoch seconds contentEncoding: int32 total: type: integer description: Number of distinct result buckets returned contentEncoding: int32 description: Distinct count response for time-bounded search results fingerprint: title: fingerprint type: object properties: family: type: string description: Device family or category inferred from client fingerprinting readOnly: true mac: type: string description: Client device MAC address for the fingerprint record readOnly: true mfg: type: string description: Manufacturer name inferred from client fingerprinting readOnly: true model: type: string description: Device model inferred from client fingerprinting readOnly: true org_id: type: string description: Organization that contains the fingerprint record contentEncoding: uuid readOnly: true examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 os: type: string description: Operating system name and version inferred from client fingerprinting readOnly: true os_type: type: string description: Operating system family inferred from client fingerprinting readOnly: true random_mac: type: boolean description: Whether the client device uses a randomized MAC address readOnly: true site_id: type: string description: Site associated with the fingerprint record contentEncoding: uuid readOnly: true examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 timestamp: type: number description: Time when the fingerprint record was observed readOnly: true description: Client device fingerprint record returned by NAC fingerprint insights response_http429: title: response_http429 type: object properties: detail: type: string 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 description: Standard HTTP 429 rate limit error response response_http401: title: response_http401 type: object properties: detail: type: string description: Human-readable explanation of the authentication error examples: - Authentication credentials were not provided. description: Standard HTTP 401 authentication error response fingerprint_search_result: title: fingerprint_search_result required: - end - limit - results - start - total type: object properties: end: type: integer description: Upper bound of the time range for the fingerprint search contentEncoding: int32 examples: - 1711035686 limit: type: integer description: Maximum number of fingerprint records returned in the response contentEncoding: int32 examples: - 10 next: type: string description: Pagination URL for the next page of fingerprint search results results: type: array items: $ref: '#/components/schemas/fingerprint' description: Fingerprint records returned for the search start: type: integer description: Lower bound of the time range for the fingerprint search contentEncoding: int32 examples: - 1710949286 total: type: integer description: Number of fingerprint records matching the search contentEncoding: int32 examples: - 232 description: Search response for client device fingerprint records securitySchemes: apiToken: type: apiKey description: "Preferred authentication method for automation and integrations. Send the API token in the HTTP `Authorization` header.\n\n**Format**:\n `Authorization: Token {apitoken}`\n\n**Notes**:\n* An API token generated for a specific admin has the same privileges as that admin\n* An API token is automatically removed if it is not used for more than 90 days\n* SSO admins cannot generate admin API tokens. Use organization API tokens when scoped Org/Site privileges are needed." name: Authorization in: header csrfToken: type: apiKey description: 'Session-based authentication for browser or login/password flows. After a successful [Login]($e/Admins%20Login/login) request, Mist returns a `csrftoken` cookie. Send that value in the `X-CSRFToken` header on later API requests that use the login session. **Format**: ``` X-CSRFToken: vwvBuq9qkqaKh7lu8tNc0gkvBfEaLAmx ``` For automation, API Token authentication is preferred.' name: X-CSRFToken in: header