openapi: 3.2.0 info: title: Mist Sites EVPN Topologies 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 EVPN Topologies description: 'EVPN allows an alternative but more efficient LAN architecture utilizing VxLAN / MP-BGP - separating control plane (MAC / IP Learning) from forwarding plane. In our implementation, following the steps to deploy EVPN topologies in a Site' paths: /api/v1/sites/{site_id}/evpn_topologies: parameters: [] get: tags: - Sites EVPN Topologies summary: listSiteEvpnTopologies description: Get the existing EVPN topology operationId: listSiteEvpnTopologies parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - 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: page in: query description: Select the page number to return when using page-based pagination; starts at `1` style: form explode: true schema: minimum: 1 type: integer contentEncoding: int32 default: 1 responses: '200': description: OK headers: {} content: application/json: schema: type: array items: $ref: '#/components/schemas/evpn_topology_response' description: EVPN topology records returned by list APIs examples: - - created_time: 1736421230 evpn_options: auto_loopback_subnet: 172.16.192.0/24 auto_loopback_subnet6: fd33:ab00:2::/64 auto_router_id_subnet: 172.16.254.0/23 core_as_border: true overlay: as: 65000 per_vlan_vga_v4_mac: false routed_at: core underlay: as_base: 65001 subnet: 10.255.240.0/20 use_ipv6: false for_site: false id: 764fb173-94f9-447c-8454-def62e5a999f modified_time: 1736421230 name: tert org_id: 3a2627d7-bfbc-45af-b85d-8841581c6d63 pod_names: '1': Pod 1 site_id: 00000000-0000-0000-0000-000000000000 contentMediaType: application/json examples: Example: value: - created_time: 1736421230 evpn_options: auto_loopback_subnet: 172.16.192.0/24 auto_loopback_subnet6: fd33:ab00:2::/64 auto_router_id_subnet: 172.16.254.0/23 core_as_border: true overlay: as: 65000 per_vlan_vga_v4_mac: false routed_at: core underlay: as_base: 65001 subnet: 10.255.240.0/20 use_ipv6: false for_site: false id: 764fb173-94f9-447c-8454-def62e5a999f modified_time: 1736421230 name: tert org_id: 3a2627d7-bfbc-45af-b85d-8841581c6d63 pod_names: '1': Pod 1 site_id: 00000000-0000-0000-0000-000000000000 application/vnd.api+json: schema: type: array items: $ref: '#/components/schemas/evpn_topology_response' description: EVPN topology records returned by list APIs examples: - - created_time: 1736421230 evpn_options: auto_loopback_subnet: 172.16.192.0/24 auto_loopback_subnet6: fd33:ab00:2::/64 auto_router_id_subnet: 172.16.254.0/23 core_as_border: true overlay: as: 65000 per_vlan_vga_v4_mac: false routed_at: core underlay: as_base: 65001 subnet: 10.255.240.0/20 use_ipv6: false for_site: false id: 764fb173-94f9-447c-8454-def62e5a999f modified_time: 1736421230 name: tert org_id: 3a2627d7-bfbc-45af-b85d-8841581c6d63 pod_names: '1': Pod 1 site_id: 00000000-0000-0000-0000-000000000000 contentMediaType: application/vnd.api+json examples: Example: value: - created_time: 1736421230 evpn_options: auto_loopback_subnet: 172.16.192.0/24 auto_loopback_subnet6: fd33:ab00:2::/64 auto_router_id_subnet: 172.16.254.0/23 core_as_border: true overlay: as: 65000 per_vlan_vga_v4_mac: false routed_at: core underlay: as_base: 65001 subnet: 10.255.240.0/20 use_ipv6: false for_site: false id: 764fb173-94f9-447c-8454-def62e5a999f modified_time: 1736421230 name: tert org_id: 3a2627d7-bfbc-45af-b85d-8841581c6d63 pod_names: '1': Pod 1 site_id: 00000000-0000-0000-0000-000000000000 '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 post: tags: - Sites EVPN Topologies summary: createSiteEvpnTopology description: 'While all the `evpn_id` / `downlink_ips` can be specified by hand, the easiest way is to call the `build_vpn_topology` API, allowing you to examine the diff, and update it yourself. You can also simply call it with `overwrite=true` which will apply the updates for you. **Notes:** 1. You can use `core` / `distribution` / `access` to create a CLOS topology 2. You can also use `core` / `distribution` to form a 2-tier EVPN topology where ESI-Lag is configured distribution to connect to access switches 3. In a small/medium campus, `collapsed-core` can be used where core switches are the inter-connected to do EVPN' operationId: createSiteEvpnTopology parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab requestBody: description: '' content: application/json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - examples: - name: CC overwrite: true pod_names: '1': default '2': default switches: - mac: 5c5b35000003 role: collapsed-core - mac: 5c5b35000004 role: collapsed-core contentMediaType: application/json examples: Example: value: name: CC overwrite: true pod_names: '1': default '2': default switches: - mac: 5c5b35000003 role: collapsed-core - mac: 5c5b35000004 role: collapsed-core required: false responses: '200': description: Example response headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/vnd.api+json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 '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}/evpn_topologies/{evpn_topology_id}: parameters: [] delete: tags: - Sites EVPN Topologies summary: deleteSiteEvpnTopology description: Delete the site EVPN Topology operationId: deleteSiteEvpnTopology parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: evpn_topology_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 get: tags: - Sites EVPN Topologies summary: getSiteEvpnTopology description: Get One EVPN Topology Detail operationId: getSiteEvpnTopology parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: evpn_topology_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab responses: '200': description: Example response headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/vnd.api+json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 '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 EVPN Topologies summary: updateSiteEvpnTopology description: Update the EVPN Topology operationId: updateSiteEvpnTopology parameters: - name: site_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab - name: evpn_topology_id in: path description: '' required: true schema: type: string contentEncoding: uuid examples: - 000000ab-00ab-00ab-00ab-0000000000ab requestBody: description: '' content: application/json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - examples: - overwrite: false switches: - mac: 5c5b35000003 role: collapsed-core - mac: 5c5b35000004 role: none contentMediaType: application/json examples: Example: value: overwrite: false switches: - mac: 5c5b35000003 role: collapsed-core - mac: 5c5b35000004 role: none required: false responses: '200': description: Example response headers: {} content: application/json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 application/vnd.api+json: schema: allOf: - $ref: '#/components/schemas/evpn_topology' - description: EVPN topology create or update payload examples: - id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 contentMediaType: application/vnd.api+json examples: Example: value: id: 9197ec96-4c8d-529f-c595-035895e688b2 name: CC overwrite: true pod_names: '1': default '2': default switches: - deviceprofile_id: 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: - 10.255.240.6 - 10.255.240.8 downlinks: - 5c5b35000007 - 5c5b35000008 esilaglinks: - 5c5b3500000f evpn_id: 1 mac: 5c5b35000003 model: QFX10002-36Q role: collapsed-core site_id: 1916d52a-4a90-11e5-8b45-1258369c38a9 uplinks: - 5c5b35000005 - 5c5b35000006 '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_usage_speed2: title: switch_port_usage_speed2 enum: - 10m - 100m - 1g - 2.5g - 5g - 10g - 25g - 40g - 100g - auto type: string description: 'Only if `mode`!=`dynamic`. Link speed for this port usage. 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 junos_other_ip_config: title: junos_other_ip_config type: object properties: evpn_anycast: type: boolean description: For EVPN, whether anycast is desired default: false ip: type: string description: Required if `type`==`static`; IPv4 address for the additional Junos L3 presence examples: - 10.3.3.1 ip6: type: string description: Required if `type6`==`static`; IPv6 address for the additional Junos L3 presence examples: - fdad:b0bc:f29e::3d16 netmask: type: string description: Optional IPv4 netmask; `subnet` from `network` definition will be used if defined examples: - 255.255.255.0 netmask6: type: string description: Optional IPv6 prefix length; `subnet` from `network` definition will be used if defined examples: - /64 type: allOf: - $ref: '#/components/schemas/ip_type3' - description: 'IPv4 assignment mode for the additional Junos L3 presence. enum: `dhcp`, `static`.' examples: - static type6: allOf: - $ref: '#/components/schemas/ip_type61' - description: 'IPv6 assignment mode for the additional Junos L3 presence. enum: `autoconf`, `dhcp`, `disabled`, `static`.' examples: - static description: Optional switch L3 presence on an additional network or VLAN evpn_options1: title: evpn_options1 type: object properties: auto_loopback_subnet: type: string description: Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides default: 172.16.192.0/24 auto_loopback_subnet6: type: string description: Optional, for dhcp_relay, unique loopback IPs are required for ERB or IPClos where we can set option-82 server_id-overrides default: fd33:ab00:2::/64 auto_router_id_subnet: type: string description: Optional, this generates router_id automatically, if specified, `router_id_prefix` is ignored default: 172.16.254.0/23 auto_router_id_subnet6: type: string description: Optional, this generates router_id automatically, if specified, `router_id_prefix` is ignored examples: - fd31:5700:1::/64 core_as_border: type: boolean description: Optional, for ERB or CLOS, you can either use esilag to upstream routers or to also be the virtual-gateway. When `routed_at` != `core`, whether to do virtual-gateway at core as well default: false enable_inband_mgmt: type: boolean description: Whether to route management traffic inband; routes will be propagated to downstream switches default: false enable_inband_ztp: type: boolean description: if the mangement traffic goes inbnd, during installation, only the border/core switches are connected to the Internet to allow initial configuration to be pushed down and leave the downstream access switches stay in the Factory Default state enabling inband-ztp allows upstream switches to use LLDP to assign IP and gives Internet to downstream switches in that state default: false overlay: allOf: - $ref: '#/components/schemas/evpn_options_overlay2' - description: EVPN overlay BGP settings for the topology per_vlan_vga_v4_mac: type: boolean description: Only for by Core-Distribution architecture when `evpn_options.routed_at`==`core`. By default, JUNOS uses 00-00-5e-00-01-01 as the virtual-gateway-address's v4_mac. If enabled, 00-00-5e-00-0X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256) default: false per_vlan_vga_v6_mac: type: boolean description: Only for by Core-Distribution architecture when `evpn_options.routed_at`==`core`. By default, JUNOS uses 00-00-5e-00-02-01 as the virtual-gateway-address's v6_mac. If enabled, 00-00-5e-00-1X-YY will be used (where XX=vlan_id/256, YY=vlan_id%256) default: false routed_at: allOf: - $ref: '#/components/schemas/evpn_options_routed_at2' - description: 'Topology tier where EVPN virtual gateway routing is placed. enum: `core`, `distribution`, `edge`.' underlay: allOf: - $ref: '#/components/schemas/evpn_options_underlay2' - description: EVPN underlay BGP and subnet settings for the topology vs_instances: type: object additionalProperties: $ref: '#/components/schemas/evpn_options_vs_instance' description: Virtual-switch instance mappings used to segregate EVPN networks examples: - guest: networks: - guest iot: networks: - iot-wifi - iot-lan description: Generation options applied to the EVPN topology evpn_topology_switch_config_dhcpd_config2: title: evpn_topology_switch_config_dhcpd_config2 type: object properties: enabled: type: boolean description: If DHCPD is enabled on the switch description: Switch DHCP server configuration for the topology member evpn_options_underlay2: title: evpn_options_underlay2 type: object properties: as_base: maximum: 65535 minimum: 1 type: integer description: Underlay BGP Base AS Number contentEncoding: int32 default: 65001 examples: - 65001 routed_id_prefix: type: string description: Prefix length used for automatically derived underlay router identifiers examples: - /24 subnet: type: string description: Underlay subnet, by default, `10.255.240.0/20`, or `fd31:5700::/64` for ipv6 examples: - 10.255.240.0/20 use_ipv6: type: boolean description: If v6 is desired for underlay default: false description: EVPN underlay BGP and subnet settings for the topology 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 switch_port_usage_dynamic_reset_default_when2: title: switch_port_usage_dynamic_reset_default_when2 enum: - link_down - none type: string description: 'Only if `mode`==`dynamic`. Condition that resets a dynamic port to the default port usage. enum: `link_down`, `none`.' examples: - link_down switch_network: title: switch_network required: - vlan_id type: object properties: gateway: type: string description: Only required for EVPN-VXLAN networks, IPv4 Virtual Gateway gateway6: type: string description: Only required for EVPN-VXLAN networks, IPv6 Virtual Gateway isolation: type: boolean description: 'whether to stop clients to talk to each other, default is false (when enabled, a unique isolation_vlan_id is required). NOTE: this features requires uplink device to also a be Juniper device and `inter_switch_link` to be set. See also `inter_isolation_network_link` and `community_vlan_id` in port_usage' default: false isolation_vlan_id: type: string description: Required when `isolation`==`true`. Unique VLAN ID used for client isolation examples: - '3070' multicast: allOf: - $ref: '#/components/schemas/switch_network_multicast2' - description: Multicast (IGMP snooping) settings for this VLAN subnet: type: string description: Optional for pure switching, required when L3 / routing features are used subnet6: type: string description: Optional for pure switching, required when L3 / routing features are used vlan_id: oneOf: - type: string - maximum: 4094 minimum: 1 type: integer contentEncoding: int32 description: VLAN identifier for this switch network description: A network represents a network segment. It can either represent a VLAN (then usually ties to a L3 subnet), optionally associate it with a subnet which can later be used to create addition routes. Used for ports doing `family ethernet-switching`. It can also be a pure L3-subnet that can then be used against a port that with `family inet`. evpn_topology_switch_config_vrf_config2: title: evpn_topology_switch_config_vrf_config2 type: object properties: enabled: type: boolean description: Whether to enable VRF (when supported on the device) description: Routing instance and VRF settings for the topology member switch_port_usage_mode2: title: switch_port_usage_mode2 enum: - access - dynamic - inet - trunk type: string description: 'Switching mode for this port usage. enum: `access`, `dynamic`, `inet`, `trunk`.' switch_port_usage_mac_auth_protocol2: title: switch_port_usage_mac_auth_protocol2 enum: - eap-md5 - eap-peap - pap type: string description: 'Only if `mode`!=`dynamic` and `enable_mac_auth`==`true`. MAC authentication protocol to use; ignored if Mist NAC is enabled. enum: `eap-md5`, `eap-peap`, `pap`.' switch_port_usage_dynamic_rule: title: switch_port_usage_dynamic_rule required: - src type: object properties: description: type: string description: Optional description of the rule equals: type: string description: Exact value that the selected source attribute must match equals_any: type: array items: type: string description: List of values where any match satisfies this dynamic rule expression: type: string description: '"[0:3]":"abcdef" -> "abc" "split(.)[1]": "a.b.c" -> "b" "split(-)[1][0:3]: "a1234-b5678-c90" -> "b56"' src: allOf: - $ref: '#/components/schemas/switch_port_usage_dynamic_rule_src2' - description: 'Source attribute evaluated by this dynamic rule. enum: `link_peermac`, `lldp_chassis_id`, `lldp_hardware_revision`, `lldp_manufacturer_name`, `lldp_oui`, `lldp_serial_number`, `lldp_system_description`, `lldp_system_name`, `radius_dynamicfilter`, `radius_usermac`, `radius_username`.' usage: type: string description: Port usage name to apply when this dynamic rule matches description: Dynamic port usage rule evaluated against LLDP, RADIUS, or peer MAC attributes switch_port_usage: title: switch_port_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: 'Only applies when `mode`!=`dynamic`. 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: Only if `mode`!=`dynamic` default: false bypass_auth_when_server_down: type: boolean description: Only if `mode`!=`dynamic` and `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 `mode`!=`dynamic` and `port_auth`=`dot1x`. Bypass auth for all (including unknown clients) if set to true when RADIUS server is down default: false bypass_auth_when_server_down_for_voip: type: boolean description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. Bypass auth for VOIP if set to true when RADIUS server is down default: false community_vlan_id: type: integer description: Only if `mode`!=`dynamic`. To be used together with `isolation` under networks. Signaling that this port connects to the networks isolated but wired clients belong to the same community can talk to each other contentEncoding: int32 description: type: string description: Only if `mode`!=`dynamic` 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: Only if `mode`!=`dynamic`. Whether the port is disabled default: false duplex: allOf: - $ref: '#/components/schemas/switch_port_usage_duplex2' - description: 'Only if `mode`!=`dynamic`. Link duplex mode for this port usage. enum: `auto`, `full`, `half`.' dynamic_vlan_networks: type: array items: type: string description: Only if `mode`!=`dynamic` and `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 `mode`!=`dynamic` and `port_auth`==`dot1x`. Whether to enable MAC Auth default: false enable_qos: type: boolean description: Only if `mode`!=`dynamic` default: false guest_network: type: - string - 'null' description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. Which network to put the device into if the device cannot do dot1x. default is null (i.e. not allowed) inter_isolation_network_link: type: boolean description: Only if `mode`!=`dynamic`. `inter_isolation_network_link` is used together with `isolation` under networks, signaling that this port connects to isolated networks default: false inter_switch_link: type: boolean description: 'Only if `mode`!=`dynamic`. `inter_switch_link` is used together with `isolation` under networks. NOTE: `inter_switch_link` works only between Juniper devices. This has to be applied to both ports connected together' default: false mac_auth_only: type: boolean description: Only if `mode`!=`dynamic` and `enable_mac_auth`==`true` mac_auth_preferred: type: boolean description: Only if `mode`!=`dynamic` + `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_usage_mac_auth_protocol2' - description: 'Only if `mode`!=`dynamic` and `enable_mac_auth`==`true`. MAC authentication protocol to use; ignored if Mist NAC is enabled. enum: `eap-md5`, `eap-peap`, `pap`.' mac_limit: anyOf: - maximum: 16383 minimum: 0 type: integer contentEncoding: int32 default: 0 - type: string description: Only if `mode`!=`dynamic`. Maximum number of MAC addresses allowed on the port; 0 means unlimited mode: allOf: - $ref: '#/components/schemas/switch_port_usage_mode2' - description: 'Switching mode for this port usage. enum: `access`, `dynamic`, `inet`, `trunk`.' mtu: anyOf: - maximum: 9216 minimum: 256 type: integer contentEncoding: int32 - type: string description: Only if `mode`!=`dynamic`. MTU for ports using this port usage networks: type: array items: type: string description: Only if `mode`==`trunk`. Network or VLAN names to trunk 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: Only if `mode`!=`dynamic`. Whether PoE capabilities are disabled for a port default: false poe_keep_state_when_reboot: type: boolean description: Only if `mode`!=`dynamic`. Whether Perpetual PoE is enabled; keeps PoE state across reboots default: false poe_priority: allOf: - $ref: '#/components/schemas/poe_priority3' - description: 'Only if `mode`!=`dynamic`. PoE priority for ports using this port usage. enum: `low`, `high`.' port_auth: allOf: - oneOf: - {} - $ref: '#/components/schemas/switch_port_usage_dot1x2' - description: 'Only if `mode`!=`dynamic`. 802.1X authentication mode for this port usage. enum: `dot1x`.' port_network: type: string description: Only if `mode`!=`dynamic`. Native network/vlan for untagged traffic reauth_interval: anyOf: - maximum: 65535 minimum: 10 type: integer contentEncoding: int32 default: 3600 - type: string description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. RADIUS reauthentication interval for clients on the port reset_default_when: allOf: - $ref: '#/components/schemas/switch_port_usage_dynamic_reset_default_when2' - description: 'Only if `mode`==`dynamic`. Condition that resets a dynamic port to the default port usage. enum: `link_down`, `none`.' examples: - link_down rules: type: array items: $ref: '#/components/schemas/switch_port_usage_dynamic_rule' description: Only if `mode`==`dynamic`. Dynamic matching rules that select the port usage to apply server_fail_network: type: - string - 'null' description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. Sets server fail fallback vlan server_fail_retry_interval: maximum: 65535 minimum: 120 type: integer description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. Interval, in seconds. Sets the wait time before retrying authentication after RADIUS failure to reduce client flapping. Range 120-65535 contentEncoding: int32 default: 120 server_reject_network: type: - string - 'null' description: Only if `mode`!=`dynamic` and `port_auth`==`dot1x`. When RADIUS server reject / fails speed: allOf: - $ref: '#/components/schemas/switch_port_usage_speed2' - description: 'Only if `mode`!=`dynamic`. Link speed for this port usage. enum: `10m`, `100m`, `1g`, `2.5g`, `5g`, `10g`, `25g`, `40g`, `100g`, `auto`.' storm_control: allOf: - $ref: '#/components/schemas/switch_port_usage_storm_control2' - description: Only if `mode`!=`dynamic`. Storm-control settings for this port usage stp_disable: type: boolean description: Only if `mode`!=`dynamic` and `stp_required`==`false`. Drop bridge protocol data units (BPDUs ) that enter any interface or a specified interface default: false stp_edge: type: boolean description: Only if `mode`!=`dynamic`. When enabled, the port is not expected to receive BPDU frames default: false stp_no_root_port: type: boolean description: Only if `mode`!=`dynamic` default: false stp_p2p: type: boolean description: Only if `mode`!=`dynamic` default: false stp_required: type: boolean description: Only if `mode`!=`dynamic`. Whether to remain in block state if no BPDU is received default: false ui_evpntopo_id: type: string description: Optional for Campus Fabric Core-Distribution ESI-LAG profile. Helper used by the UI to select this port profile as the ESI-Lag between Distribution and Access switches contentEncoding: uuid use_vstp: type: boolean description: If this is connected to a vstp network default: false voip_network: type: - string - 'null' description: Only if `mode`!=`dynamic`. Network/vlan for voip traffic, must also set port_network. to authenticate device, set port_auth description: Junos switch port usage template and authentication settings switch_port_usage_dynamic_rule_src2: title: switch_port_usage_dynamic_rule_src2 enum: - link_peermac - lldp_chassis_id - lldp_hardware_revision - lldp_manufacturer_name - lldp_oui - lldp_serial_number - lldp_system_description - lldp_system_name - radius_dynamicfilter - radius_usermac - radius_username type: string description: 'Source attribute evaluated by this dynamic rule. enum: `link_peermac`, `lldp_chassis_id`, `lldp_hardware_revision`, `lldp_manufacturer_name`, `lldp_oui`, `lldp_serial_number`, `lldp_system_description`, `lldp_system_name`, `radius_dynamicfilter`, `radius_usermac`, `radius_username`.' evpn_topology_response: title: evpn_topology_response type: object properties: created_time: type: number description: Timestamp when the EVPN topology was created readOnly: true evpn_options: allOf: - $ref: '#/components/schemas/evpn_options1' - description: Generation options applied to the EVPN topology for_site: type: boolean description: Whether the EVPN topology is scoped to a site rather than the organization id: type: string description: Unique identifier of the EVPN topology contentEncoding: uuid readOnly: true examples: - 53f10664-3ce8-4c27-b382-0ef66432349f modified_time: type: number description: Timestamp when the EVPN topology was last modified readOnly: true name: type: string description: Display name for the EVPN topology examples: - CC org_id: type: string description: Organization that owns the EVPN topology contentEncoding: uuid readOnly: true examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 overwrite: type: boolean description: Whether generated EVPN configuration changes are applied automatically pod_names: type: object additionalProperties: type: string description: Property key is the pod number site_id: type: string description: Site associated with the EVPN topology contentEncoding: uuid readOnly: true examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 description: EVPN topology metadata returned by EVPN topology APIs evpn_topology_switch: title: evpn_topology_switch required: - mac - role type: object properties: config: allOf: - $ref: '#/components/schemas/evpn_topology_switch_config1' - description: Per-switch configuration supplied for this topology member. Use the [Update Site Device]($e/Sites%20Devices/updateSiteDevice) endpoint to update the switch configuration. deviceprofile_id: type: string description: Associated device profile identifier for the switch. Use the [Assign Org Device Profile]($e/Orgs%20Device%20Profiles/assignOrgDeviceProfile) endpoint to assign a Device Profile to the switch. contentEncoding: uuid readOnly: true examples: - 6a1deab1-96df-4fa2-8455-d5253f943d06 downlink_ips: type: array items: type: string description: IP addresses used by this switch for EVPN downlinks readOnly: true downlinks: type: array items: type: string description: Switch MAC addresses connected as downlinks from this topology member examples: - - 5c5b35000005 - 5c5b35000006 esilaglinks: type: array items: type: string description: Switch MAC addresses connected through ESI-LAG from this topology member examples: - - 5c5b35000005 - 5c5b35000006 evpn_id: minimum: 1 type: integer description: Topology identifier number for this EVPN switch member contentEncoding: int32 readOnly: true mac: minLength: 1 type: string description: Switch MAC address used to identify the topology member examples: - 5c5b35000003 model: type: string description: Switch model for this topology member readOnly: true examples: - QFX10002-36Q pod: maximum: 255 minimum: 1 type: integer description: "Optionally, for distribution / access / esilag-access, they can be placed into different pods. e.g. \n * for CLOS, to group dist / access switches into pods\n * for ERB/CRB, to group dist / esilag-access into pods" contentEncoding: int32 default: 1 pods: type: array items: type: integer contentEncoding: int32 description: List of pod numbers this switch participates in role: allOf: - $ref: '#/components/schemas/evpn_topology_switch_role2' - minLength: 1 description: 'EVPN topology role for this switch. enum: `access`, `border`, `collapsed-core`, `core`, `distribution`, `esilag-access`, `none`.' router_id: type: string description: Routing identifier used by this switch for EVPN routing readOnly: true examples: - 172.16.254.4 site_id: type: string description: Associated site for this EVPN topology switch contentEncoding: uuid readOnly: true examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 suggested_downlinks: type: array items: type: string description: Builder-suggested downlink switch MAC addresses readOnly: true examples: - - 5c5b35000005 - 5c5b35000006 suggested_esilaglinks: type: array items: type: string description: Builder-suggested ESI-LAG switch MAC addresses readOnly: true examples: - - 5c5b35000005 - 5c5b35000006 suggested_uplinks: type: array items: type: string description: Builder-suggested uplink switch MAC addresses readOnly: true examples: - - 5c5b35000005 - 5c5b35000006 uplinks: type: array items: type: string description: Switch MAC addresses connected as uplinks from this topology member examples: - - 5c5b35000005 - 5c5b35000006 description: Switch member of an EVPN topology, including role and link relationships switch_port_usage_storm_control2: title: switch_port_usage_storm_control2 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: Only if `mode`!=`dynamic`. Storm-control settings for this port usage ip_type3: title: ip_type3 enum: - dhcp - static type: string description: 'IPv4 assignment mode for the additional Junos L3 presence. enum: `dhcp`, `static`.' examples: - static ip_type61: title: ip_type61 enum: - autoconf - dhcp - disabled - static type: string description: 'IPv6 assignment mode for the additional Junos L3 presence. enum: `autoconf`, `dhcp`, `disabled`, `static`.' examples: - static evpn_options_routed_at2: title: evpn_options_routed_at2 enum: - core - distribution - edge type: string description: 'Topology tier where EVPN virtual gateway routing is placed. enum: `core`, `distribution`, `edge`.' evpn_topology_switch_config1: title: evpn_topology_switch_config1 type: object properties: dhcpd_config: allOf: - $ref: '#/components/schemas/evpn_topology_switch_config_dhcpd_config2' - description: Switch DHCP server configuration for the topology member networks: type: object additionalProperties: $ref: '#/components/schemas/switch_network' description: EVPN network definitions for the topology member other_ip_configs: type: object additionalProperties: $ref: '#/components/schemas/junos_other_ip_config' description: Additional interface IP configurations for the topology member port_config: type: object additionalProperties: $ref: '#/components/schemas/junos_port_config' description: Switch port configuration for the topology member port_usages: type: object additionalProperties: $ref: '#/components/schemas/switch_port_usage' description: Switch port usage definitions for the topology member router_id: type: string description: Used for OSPF / BGP / EVPN examples: - 10.2.1.10 vrf_config: allOf: - $ref: '#/components/schemas/evpn_topology_switch_config_vrf_config2' - description: Routing instance and VRF settings for the topology member description: Per-switch configuration supplied for this topology member. Use the [Update Site Device]($e/Sites%20Devices/updateSiteDevice) endpoint to update the switch configuration. switch_network_multicast2: title: switch_network_multicast2 type: object properties: enabled: type: boolean description: Whether to enable IGMP snooping on this VLAN default: false igmp_version: allOf: - $ref: '#/components/schemas/switch_network_multicast_igmp_version' - description: IGMP version. '2' (default, ASM/IGMPv2) / '3' (SSM/IGMPv3) description: Multicast (IGMP snooping) settings for this VLAN junos_port_config_duplex2: title: junos_port_config_duplex2 enum: - auto - full - half type: string description: 'Link duplex mode for this Junos port. enum: `auto`, `full`, `half`.' evpn_options_overlay2: title: evpn_options_overlay2 type: object properties: as: maximum: 65535 minimum: 1 type: integer description: Overlay BGP Local AS Number contentEncoding: int32 default: 65000 examples: - 65000 description: EVPN overlay BGP settings for the topology evpn_topology_switch_config: title: evpn_topology_switch_config type: object properties: dhcpd_config: allOf: - $ref: '#/components/schemas/evpn_topology_switch_config_dhcpd_config2' - description: Switch DHCP server configuration for the topology member networks: type: object additionalProperties: $ref: '#/components/schemas/switch_network' description: EVPN network definitions for the topology member other_ip_configs: type: object additionalProperties: $ref: '#/components/schemas/junos_other_ip_config' description: Additional interface IP configurations for the topology member port_config: type: object additionalProperties: $ref: '#/components/schemas/junos_port_config' description: Switch port configuration for the topology member port_usages: type: object additionalProperties: $ref: '#/components/schemas/switch_port_usage' description: Switch port usage definitions for the topology member router_id: type: string description: Used for OSPF / BGP / EVPN examples: - 10.2.1.10 vrf_config: allOf: - $ref: '#/components/schemas/evpn_topology_switch_config_vrf_config2' - description: Routing instance and VRF settings for the topology member description: Per-switch configuration used by an EVPN topology member junos_port_config_speed1: title: junos_port_config_speed1 enum: - 10m - 100m - 1g - 2.5g - 5g - 10g - 25g - 40g - 100g - auto type: string description: 'Link speed for this Junos port. enum: `10m`, `100m`, `1g`, `2.5g`, `5g`, `10g`, `25g`, `40g`, `100g`, `auto`.' poe_priority3: title: poe_priority3 enum: - low - high type: string description: 'Only if `mode`!=`dynamic`. PoE priority for ports using this port usage. enum: `low`, `high`.' switch_network_multicast_igmp_version: title: switch_network_multicast_igmp_version enum: - '2' - '3' type: string description: IGMP version. '2' (default, ASM/IGMPv2) / '3' (SSM/IGMPv3) evpn_topology: title: evpn_topology required: - switches type: object properties: created_time: type: number description: Timestamp when the EVPN topology was created readOnly: true evpn_options: allOf: - $ref: '#/components/schemas/evpn_options1' - description: Generation options applied to the EVPN topology id: type: string description: Unique identifier of the EVPN topology contentEncoding: uuid readOnly: true examples: - 53f10664-3ce8-4c27-b382-0ef66432349f modified_time: type: number description: Timestamp when the EVPN topology was last modified readOnly: true name: type: string description: Display name for the EVPN topology examples: - CC org_id: type: string description: Organization that owns the EVPN topology contentEncoding: uuid readOnly: true examples: - a97c1b22-a4e9-411e-9bfd-d8695a0f9e61 overwrite: type: boolean description: Whether to apply generated EVPN configuration changes automatically pod_names: type: object additionalProperties: type: string description: Property key is the pod number site_id: type: string description: Site associated with the EVPN topology contentEncoding: uuid readOnly: true examples: - 441a1214-6928-442a-8e92-e1d34b8ec6a6 switch_configs: type: object additionalProperties: $ref: '#/components/schemas/evpn_topology_switch_config' description: Per-switch configuration overrides included in the EVPN topology switches: uniqueItems: true type: array items: $ref: '#/components/schemas/evpn_topology_switch' description: Topology member switches, roles, and links description: EVPN topology create or update payload switch_port_usage_duplex2: title: switch_port_usage_duplex2 enum: - auto - full - half type: string description: 'Only if `mode`!=`dynamic`. Link duplex mode for this port usage. enum: `auto`, `full`, `half`.' junos_port_config: title: junos_port_config required: - usage type: object properties: ae_disable_lacp: type: boolean description: To disable LACP support for the AE interface ae_idx: type: integer description: Users could force to use the designated AE name contentEncoding: int32 ae_lacp_force_up: type: boolean description: 'If `aggregated`==`true`, sets the state of the interface as UP when the peer has limited LACP capability. Use case: When a device connected to this AE port is ZTPing for the first time, it will not have LACP configured on the other end. **Note:** Turning this on will enable force-up on one of the interfaces in the bundle only' default: false ae_lacp_passive: type: boolean description: If `aggregated`==`true`, sets LACP to passive mode on this AE interface; by default, active (fast) mode is used default: false ae_lacp_slow: type: boolean description: To use slow timeout aggregated: type: boolean description: Whether this port is configured as an aggregated Ethernet member default: false critical: type: boolean description: To generate port up/down alarm default: false description: type: string description: Human-readable description for this Junos port disable_autoneg: type: boolean description: If `speed` and `duplex` are specified, whether to disable autonegotiation default: false duplex: allOf: - $ref: '#/components/schemas/junos_port_config_duplex2' - description: 'Link duplex mode for this Junos port. enum: `auto`, `full`, `half`.' dynamic_usage: type: - string - 'null' description: Enable dynamic usage for this port. Set to `dynamic` to enable. esilag: type: boolean description: Whether this Junos port participates in an ESI-LAG mtu: type: integer description: Media maximum transmission unit (MTU) is the largest data unit that can be forwarded without fragmentation contentEncoding: int32 default: 1514 networks: type: array items: type: string description: List of network names. Required if `usage`==`inet` no_local_overwrite: type: boolean description: Prevent helpdesk to override the port config default: true poe_disabled: type: boolean description: Whether PoE capabilities are disabled for this Junos port default: false port_network: type: string description: Required if `usage`==`vlan_tunnel`. Q-in-Q tunneling using All-in-one bundling. This also enables standard L2PT for interfaces that are not encapsulation tunnel interfaces and uses MAC rewrite operation. [View more information](https://www.juniper.net/documentation/us/en/software/junos/multicast-l2/topics/topic-map/q-in-q.html#id-understanding-qinq-tunneling-and-vlan-translation) speed: allOf: - $ref: '#/components/schemas/junos_port_config_speed1' - description: 'Link speed for this Junos port. enum: `10m`, `100m`, `1g`, `2.5g`, `5g`, `10g`, `25g`, `40g`, `100g`, `auto`.' usage: type: string description: Port usage name. For Q-in-Q, use `vlan_tunnel`. If EVPN is used, use `evpn_uplink`or `evpn_downlink` description: Junos switch port configuration evpn_topology_switch_role2: title: evpn_topology_switch_role2 enum: - access - border - collapsed-core - core - distribution - esilag-access - none type: string description: 'EVPN topology role for this switch. enum: `access`, `border`, `collapsed-core`, `core`, `distribution`, `esilag-access`, `none`.' evpn_options_vs_instance: title: evpn_options_vs_instance type: object properties: networks: uniqueItems: true type: array items: type: string description: List of network names included in this virtual-switch instance description: EVPN virtual-switch instance network mapping switch_port_usage_dot1x2: title: switch_port_usage_dot1x2 const: dot1x type: string description: 'Only if `mode`!=`dynamic`. 802.1X authentication mode for this port usage. enum: `dot1x`.' 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_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 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