Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/juniper:juniper-sites-devices-wired-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Mist Sites Devices - Wired 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 Devices - Wired
description: API Calls specific to the Juniper Switches managed by Mist
paths:
/api/v1/sites/{site_id}/devices/{device_id}/local_port_config:
parameters: []
delete:
tags:
- Sites Devices - Wired
summary: deleteSiteLocalSwitchPortConfig
description: 'API Calls delete all the existing port config local overrides, and reapply the configured planed at the device level
(with site / template heritance).'
operationId: deleteSiteLocalSwitchPortConfig
parameters:
- name: site_id
in: path
description: ''
required: true
schema:
type: string
contentEncoding: uuid
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
- name: device_id
in: path
description: ''
required: true
schema:
type: string
contentEncoding: uuid
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
responses:
'200':
description: OK
headers: {}
content: {}
'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
put:
tags:
- Sites Devices - Wired
summary: updateSiteLocalSwitchPortConfig
description: 'API Calls to add port config local overrides. This can be used by Switch Port Operators or Helpdesk administrators
to change a Switch Port configuration without having to change the switch configuration.
The local overrides configured for the switchports with `no_local_overwrite`==`true` won''t be applied to the switch configuration.
> NOTE:
>
> When using the API Call, it is required to put send all overrides in the PUT request Payload, even the existing once.
>
> The current overrides can be retrieved with the API Call Get Site Device. The local overrides will show up separately from the `port_config` in the `local_port_config` so it can be easily identified (and cleared)'
operationId: updateSiteLocalSwitchPortConfig
parameters:
- name: site_id
in: path
description: ''
required: true
schema:
type: string
contentEncoding: uuid
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
- name: device_id
in: path
description: ''
required: true
schema:
type: string
contentEncoding: uuid
examples:
- 000000ab-00ab-00ab-00ab-0000000000ab
requestBody:
description: ''
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/junos_local_port_config'
examples:
- ge-0/0/0-1:
poe_disabled: true
usage: iot
contentMediaType: application/json
examples:
Example:
value:
ge-0/0/0-1:
poe_disabled: true
usage: iot
required: false
responses:
'200':
description: OK
headers: {}
content: {}
'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
switch_port_local_usage_mode2:
title: switch_port_local_usage_mode2
enum:
- access
- inet
- trunk
type: string
description: 'Switching mode for this local port configuration. enum: `access`, `inet`, `trunk`.'
junos_port_config_speed3:
title: junos_port_config_speed3
enum:
- 10m
- 100m
- 1g
- 2.5g
- 5g
- 10g
- 25g
- 40g
- 100g
- auto
type: string
description: 'Link speed for this local port configuration. enum: `10m`, `100m`, `1g`, `2.5g`, `5g`, `10g`, `25g`, `40g`, `100g`, `auto`.'
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
switch_port_local_usage_storm_control:
title: switch_port_local_usage_storm_control
type: object
properties:
disable_port:
type: boolean
description: Whether to disable the port when storm control is triggered
default: false
no_broadcast:
type: boolean
description: Whether to disable storm control on broadcast traffic
default: false
no_multicast:
type: boolean
description: Whether to disable storm control on multicast traffic
default: false
no_registered_multicast:
type: boolean
description: Whether to disable storm control on registered multicast traffic
default: false
no_unknown_unicast:
type: boolean
description: Whether to disable storm control on unknown unicast traffic
default: false
percentage:
maximum: 100
minimum: 0
type: integer
description: Bandwidth-percentage, configures the storm control level as a percentage of the available bandwidth
contentEncoding: int32
default: 80
description: Storm-control settings for this local port configuration
switch_port_local_usage_duplex2:
title: switch_port_local_usage_duplex2
enum:
- auto
- full
- half
type: string
description: 'Link duplex mode for this local port configuration. enum: `auto`, `full`, `half`.'
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_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
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
junos_local_port_config:
title: junos_local_port_config
required:
- usage
type: object
properties:
all_networks:
type: boolean
description: Only if `mode`==`trunk` whether to trunk all network/vlans
default: false
allow_dhcpd:
type: boolean
description: 'Controls whether DHCP server traffic is allowed on ports using this configuration if DHCP snooping is enabled. This is a tri-state setting; `true`: ports become trusted ports allowing DHCP server traffic, `false`: ports become untrusted blocking DHCP server traffic, undefined: use system defaults (access ports default to untrusted, trunk ports default to trusted).'
allow_multiple_supplicants:
type: boolean
description: Whether multiple supplicants may authenticate on the port
default: false
bypass_auth_when_server_down:
type: boolean
description: Only if `port_auth`==`dot1x` bypass auth for known clients if set to true when RADIUS server is down
default: false
bypass_auth_when_server_down_for_unknown_client:
type: boolean
description: Only if `port_auth`=`dot1x` bypass auth for all (including unknown clients) if set to true when RADIUS server is down
default: false
description:
type: string
description: Human-readable description for this local port configuration
disable_autoneg:
type: boolean
description: Only if `mode`!=`dynamic` if speed and duplex are specified, whether to disable autonegotiation
default: false
disabled:
type: boolean
description: Whether the port is disabled
default: false
duplex:
allOf:
- $ref: '#/components/schemas/switch_port_local_usage_duplex2'
- description: 'Link duplex mode for this local port configuration. enum: `auto`, `full`, `half`.'
dynamic_vlan_networks:
type: array
items:
type: string
description: Only if `port_auth`==`dot1x`, networks or VLANs that RADIUS can return for dynamic VLAN assignment
examples:
- - corp
- user
enable_mac_auth:
type: boolean
description: Only if `port_auth`==`dot1x` whether to enable MAC Auth
default: false
enable_qos:
type: boolean
description: Whether QoS is enabled on ports using this local configuration
default: false
guest_network:
type:
- string
- 'null'
description: Only if `port_auth`==`dot1x` which network to put the device into if the device cannot do dot1x. default is null (i.e. not allowed)
inter_switch_link:
type: boolean
description: Used together with "isolation" under networks for links between Juniper devices; must be applied to both connected ports
default: false
mac_auth_only:
type: boolean
description: Only if `enable_mac_auth`==`true`, whether to use MAC authentication without 802.1X
mac_auth_preferred:
type: boolean
description: Only if `enable_mac_auth`==`true` + `mac_auth_only`==`false`, dot1x will be given priority then mac_auth. Enable this to prefer mac_auth over dot1x.
mac_auth_protocol:
allOf:
- $ref: '#/components/schemas/switch_port_local_usage_mac_auth_protocol2'
- description: 'Only if `enable_mac_auth`==`true`, MAC authentication protocol to use. enum: `eap-md5`, `eap-peap`, `pap`.'
mac_limit:
minimum: 0
type: integer
description: Max number of MAC addresses, default is 0 for unlimited, otherwise range is 1 or higher, with upper bound constrained by platform
contentEncoding: int32
default: 0
mode:
allOf:
- $ref: '#/components/schemas/switch_port_local_usage_mode2'
- description: 'Switching mode for this local port configuration. enum: `access`, `inet`, `trunk`.'
mtu:
type: integer
description: Media maximum transmission unit (MTU) is the largest data unit that can be forwarded without fragmentation. The default value is 1514.
contentEncoding: int32
networks:
type: array
items:
type: string
description: Only if `mode`==`trunk`, network or VLAN names to trunk
note:
type: string
description: Additional note for the port config override
examples:
- force 100M for camera
persist_mac:
type: boolean
description: Only if `mode`==`access` and `port_auth`!=`dot1x` whether the port should retain dynamically learned MAC addresses
default: false
poe_disabled:
type: boolean
description: Whether PoE capabilities are disabled for a port
default: false
port_auth:
allOf:
- oneOf:
- {}
- $ref: '#/components/schemas/switch_port_local_usage_dot1x2'
- description: '802.1X authentication mode for this local port configuration. enum: `dot1x`.'
port_network:
type: string
description: Native network/vlan for untagged traffic
reauth_interval:
anyOf:
- maximum: 65535
minimum: 10
type: integer
contentEncoding: int32
default: 3600
- type: string
description: Only if `port_auth`==`dot1x`, RADIUS reauthentication interval for clients on the port
server_fail_network:
type:
- string
- 'null'
description: Only if `port_auth`==`dot1x` sets server fail fallback vlan
server_reject_network:
type:
- string
- 'null'
description: Only if `port_auth`==`dot1x` when RADIUS server reject / fails
speed:
allOf:
- $ref: '#/components/schemas/junos_port_config_speed3'
- description: 'Link speed for this local port configuration. enum: `10m`, `100m`, `1g`, `2.5g`, `5g`, `10g`, `25g`, `40g`, `100g`, `auto`.'
storm_control:
allOf:
- $ref: '#/components/schemas/switch_port_local_usage_storm_control'
- description: Storm-control settings for this local port configuration
stp_edge:
type: boolean
description: When enabled, the port is not expected to receive BPDU frames
default: false
stp_no_root_port:
type: boolean
description: Whether STP should prevent this port from becoming a root port
default: false
stp_p2p:
type: boolean
description: Whether STP treats this port as a point-to-point link
default: false
usage:
type: string
description: Port usage profile name for this local port configuration
use_vstp:
type: boolean
description: If this is connected to a vstp network
default: false
voip_network:
type: string
description: Network/vlan for voip traffic, must also set port_network. to authenticate device, set port_auth
description: Per-port Switch Port Operator (SPO) override configuration used in `local_port_config` to customize settings inherited from `port_config`
switch_port_local_usage_mac_auth_protocol2:
title: switch_port_local_usage_mac_auth_protocol2
enum:
- eap-md5
- eap-peap
- pap
type: string
description: 'Only if `enable_mac_auth`==`true`, MAC authentication protocol to use. enum: `eap-md5`, `eap-peap`, `pap`.'
switch_port_local_usage_dot1x2:
title: switch_port_local_usage_dot1x2
const: dot1x
type: string
description: '802.1X authentication mode for this local port configuration. enum: `dot1x`.'
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