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