Cisco Umbrella Network Tunnels API
Manage the network tunnels in the organization.
Manage the network tunnels in the organization.
openapi: 3.0.1
info:
title: Cisco Umbrella Network Tunnels API
description: Manage the network tunnels in the organization.
version: 2.0.0
contact:
name: Cloud Security Developer Community
x-provenance:
method: harvested
authored_by: Cisco Umbrella
harvested_by: API Evangelist
harvested_on: '2026-08-19'
first_party: true
provider_published: true
source_host: pubhub.devnetcloud.com
note: 26 first-party OpenAPI 3.0 documents (256 operations) listed by Cisco's own docs-nav config and fetched anonymously.
Byte-identity reconfirmed 2026-08-19 by SHA-256 against the live source.
x-evidence:
- type: source
url: https://pubhub.devnetcloud.com/media/cloud-security-apis-in-eft/docs/umbrella-config.json
- type: source
url: https://developer.cisco.com/docs/cloud-security/
servers:
- url: https://api.umbrella.com/{basePath}
variables:
basePath:
default: deployments/v2
security:
- oauthFlow: []
tags:
- name: Data Center
- name: Organization Tunnel
- name: Debugging
- name: Umbrella
paths:
/datacenters:
get:
summary: List Data Centers
operationId: getDatacenters
security:
- oauthFlow:
- deployments.datacenters:read
description: 'List the information about the IPsec-enabled data centers.
The data center information includes the IP address and location details.'
tags:
- Data Center
- Umbrella
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
type: object
description: The information about the IPsec-enabled data centers.
properties:
continents:
type: array
description: The list of continents.
items:
type: object
description: The properties of the continent.
properties:
cities:
type: array
description: The list of cities.
items:
type: object
description: The properties of the city.
properties:
latitude:
type: string
description: The latitude of the city.
example: '52.354662'
longitude:
type: string
description: The longitude of the city.
example: '4.955532'
name:
type: string
description: The name of the city.
example: Amsterdam
dc:
type: string
description: The domain of the data center located in the city.
example: ams1.edc
range:
type: string
description: The IP or CIDR range of the data center that is located in the city.
example: 146.112.98.2/32
fqdn:
type: string
example: eu2-b.vpn.sig.umbrella.com
description: The FQDN associated with the city. Returns the FQDN if available.
name:
type: string
description: The name of the continent.
example: Europe
example:
continents:
- cities:
- latitude: '52.354662'
longitude: '4.955532'
name: Amsterdam
dc: ams1.edc
range: 146.112.98.2/32
fqdn: eu2-b.vpn.sig.umbrella.com
name: Europe
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
/tunnels:
get:
summary: List Tunnels
operationId: listTunnels
description: List the tunnels for an organization.
security:
- oauthFlow:
- deployments.tunnels:read
tags:
- Organization Tunnel
- Umbrella
parameters:
- in: query
name: includeState
schema:
default: false
type: boolean
description: Specify whether to include the tunnel state information in the response.
required: false
- in: query
name: limit
description: The number of items to return in the collection. If not set, all tunnels are returned.
required: false
schema:
type: integer
- in: query
name: startKey
description: 'Specify where to start reading in the tunnel collection (`startKey` correlates to the first tunnel to
return).
If the `startKey` query parameter is not included in the API request, Umbrella reads the collection from the first
available tunnel.
When the API request includes the `limit` query parameter and you have more tunnels to read,
Umbrella returns the value of `startKey` for the next tunnel in the hypermedia Link header.'
required: false
schema:
type: string
- in: query
name: filters
description: "Filters the tunnel list by tunnel name, device type, service type, status, data center, or site origin\
\ ID.\nFor example:\n```\n{\n \"name\": \"test\",\n \"deviceType\": \"ISR\",\n \"serviceType\": \"SIG\",\n \"\
status\": \"UP\",\n \"dataCenter\": \"pao1.edc\",\n \"siteOriginId\": 123\n}\n```"
required: false
schema:
type: string
responses:
'200':
description: OKs
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
Total-Item-Count:
schema:
type: string
description: The total number of active, inactive, and unestablished tunnels in the organization.
example: '500'
Total-Distinct-DC-Count:
schema:
type: string
description: The number of distinct data centers in the organization.
example: '2'
Total-Active-Item-Count:
schema:
type: string
description: The total number of active tunnels in the organization.
example: '5'
Total-Inactive-Item-Count:
schema:
type: string
description: The total number of inactive tunnels in the organization.
example: '10'
Link:
schema:
type: string
description: 'The hypermedia links are formatted as a string. Use to provide parameters for pagination.
Only available if request limits the number of tunnels returned.
The link is a relative path. The `rel` value is always `next` (pagination moves forward).'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TunnelResourceObjectWithState'
example:
- id: 1122321
uri: /tunnels/1122321
name: Site01Tunnel
siteOriginId: 123456
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
transport:
protocol: IPSec
serviceType: SIG
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
meta: {}
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
post:
summary: Create Tunnel
operationId: addTunnel
description: Add a new tunnel to the organization.
security:
- oauthFlow:
- deployments.tunnels:write
tags:
- Organization Tunnel
- Umbrella
requestBody:
description: The tunnel to create.
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: The name of the tunnel.
siteOriginId:
type: integer
description: The site origin ID to associate with the tunnel.
example: 123456
deviceType:
type: string
description: The type of device where the tunnel originates. The default value is `other`.
enum:
- ASA
- FTD
- ISR
- Meraki MX
- Viptela cEdge
- Viptela vEdge
- other
serviceType:
$ref: '#/components/schemas/serviceType'
networkCIDRs:
$ref: '#/components/schemas/networkCIDRs'
transport:
type: object
properties:
protocol:
description: The tunnel transport protocol. The default tunnel transport protocol is IPSec.
type: string
enum:
- IPSec
example: IPSec
authentication:
type: object
properties:
type:
type: string
description: The authentication method. The default is pre-shared key (PSK).
enum:
- PSK
parameters:
type: object
properties:
idPrefix:
type: string
description: 'A human-readable ID for the tunnel, used to generate the ID portion of the Pre-Shared
Key.
If omitted, the ID is generated and provided in response. Tunnels with a device type of ASA
must provide an IP address string for this field. Tunnels with a device type of ''other''
may use either an IP address or a human-readable string. PSK IDs are not automatically generated
for ASA devices.'
secret:
type: string
description: 'The secret portion of a Pre-Shared Key (PSK).
If omitted, a secret is generated and provided in the response.
Secrets are a sequence of 16 to 64 characters, and contain at least one upper
and lowercase letter, one number, and no special characters.'
required:
- name
example:
name: Site01Tunnel
siteOriginId: 123456
serviceType: SIG
deviceType: ASA
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
transport:
protocol: IPSec
authentication:
type: PSK
parameters:
idPrefix: prefix-string
secret: This123Secret
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
$ref: '#/components/schemas/TunnelResourceObjectWithSecret'
example:
id: 1122321
uri: /tunnels/1122321
name: Site01Tunnel
siteOriginId: 123456
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
secret: This123Secret
transport:
protocol: IPSec
serviceType: SIG
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
meta: {}
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
/tunnels/{id}:
get:
summary: Get Tunnel
operationId: getTunnel
description: Get a specific tunnel.
security:
- oauthFlow:
- deployments.tunnels:read
parameters:
- in: path
name: id
description: The ID of the tunnel.
required: true
schema:
type: integer
tags:
- Organization Tunnel
- Umbrella
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
$ref: '#/components/schemas/TunnelResourceObject'
example:
id: 1122321
uri: /tunnels/1122321
name: Site01Tunnel
siteOriginId: 123456
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
transport:
protocol: IPSec
serviceType: SIG
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
meta: {}
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
put:
summary: Update Tunnel
operationId: updateTunnel
security:
- oauthFlow:
- deployments.tunnels:write
description: 'Update the `name`, `siteOriginId`, `networkCIDRs`, and client `deviceType` properties for a tunnel.
Updates to read-only attributes are ignored.'
tags:
- Organization Tunnel
- Umbrella
parameters:
- in: path
name: id
description: The ID of the tunnel.
required: true
schema:
type: integer
requestBody:
description: Provide a tunnel to update.
required: true
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: 'Display name for the tunnel. The tunnel name is required. The name can''t exceed 50 characters
in length and can not have any special characters other than spaces and hyphens.'
example: Site01Tunnel
siteOriginId:
type: integer
description: The site origin ID that is associated with the tunnel.
example: 123
networkCIDRs:
$ref: '#/components/schemas/networkCIDRs'
client:
type: object
description: The configuration metadata for the client.
properties:
deviceType:
type: string
description: The type of device from which the tunnel originates. The default value is `other`.
enum:
- ASA
- FTD
- ISR
- Meraki MX
- Viptela cEdge
- Viptela vEdge
- other
example: ASA
authentication:
type: object
description: The authentication context of the client.
properties:
type:
type: string
enum:
- PSK
example: PSK
readOnly: true
parameters:
type: object
properties:
id:
type: string
description: The PSK ID. If an IP address is used as the ID, the IP address is returned.
readOnly: true
example: admin@2561066-237952254-umbrella.com
modifiedAt:
$ref: '#/components/schemas/modifiedAt'
required:
- name
- client
example:
name: Site01Tunnel
siteOriginId: 123
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
$ref: '#/components/schemas/TunnelResourceObject'
example:
id: 1122321
uri: /tunnels/1122321
name: Site01Tunnel
siteOriginId: 123456
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
transport:
protocol: IPSec
serviceType: SIG
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
meta: {}
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
delete:
summary: Delete Tunnel
operationId: deleteTunnel
description: Delete a tunnel in the organization.
security:
- oauthFlow:
- deployments.tunnels:write
tags:
- Organization Tunnel
- Umbrella
parameters:
- in: path
name: id
description: The ID of the tunnel.
required: true
schema:
type: integer
requestBody:
description: Provide the tunnel to delete.
required: true
content:
application/json:
schema:
type: object
properties:
detachPolicies:
type: boolean
default: true
description: Specifies whether to detach associated policies from the tunnel.
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Tunnel deleted successfully
example:
message: Tunnel deleted successfully
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/ServerError'
/tunnels/{id}/keys:
post:
summary: Update and Rotate Tunnel Credentials
description: Update and rotate the tunnel credentials.
tags:
- Organization Tunnel
- Umbrella
operationId: updateTunnelCredentials
security:
- oauthFlow:
- deployments.tunnels:write
parameters:
- in: path
name: id
description: The ID of the tunnel.
required: true
schema:
type: integer
requestBody:
description: 'The credentials and options to update and rotate the tunnel. Umbrella stores the
previous credentials for 24 hours unless stated.'
required: true
content:
application/json:
schema:
type: object
properties:
deprecateCurrentKeys:
type: boolean
default: false
description: 'Specifies whether to deprecate any existing credentials.
The 24-hour window does not apply.
Umbrella deletes the existing keys immediately. Set either both `idPrefix` and `secret` or `autoRotate`
to true. The default value is false.'
autoRotate:
type: boolean
description: 'Specifies whether to autogenerate keys.
The 24-hour window applies. Umbrella ignores any passed in credentials.'
psk:
type: object
properties:
idPrefix:
type: string
description: 'Required if autoRotate is set to false. To be concatenated with server-side parameters
to generate the ID for the pre-shared key (PSK). If the value of `idPrefix` matches the current `idPrefix`,
then 24-hour credential storage is disabled. If the tunnel uses an IP address as the PSK ID, format
the IP address as a string;
`autoRotate` is disabled.'
secret:
type: string
description: 'The secret aspect of a Pre-Shared Key. Optional, but either idPrefix OR idPrefix
and secret must be passed OR auto-Rotate set to true.
(16-64 characters, at least one upper and lowercase letter, one number, no special characters.)'
required:
- autoRotate
example:
deprecateCurrentKeys: true
autoRotate: true
psk:
idPrefix: prefix-string
secret: Secret123
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
$ref: '#/components/schemas/TunnelResourceObjectWithSecret'
example:
id: 1122321
uri: /tunnels/1122321
name: Site01Tunnel
siteOriginId: 123456
client:
deviceType: ASA
authentication:
type: PSK
parameters:
id: admin@2561066-237952254-umbrella.com
modifiedAt: '2018-06-13T16:07:07.222Z'
secret: This123Secret
transport:
protocol: IPSec
serviceType: SIG
networkCIDRs:
- 123.111.222.25/24
- 111.222.39.1/32
meta: {}
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
/tunnels/{id}/policies:
get:
summary: List Policies for Tunnel
operationId: getTunnelPolicies
security:
- oauthFlow:
- deployments.tunnels:read
description: List the policies that include the network tunnel.
parameters:
- in: path
name: id
description: The ID of the tunnel.
required: true
schema:
type: integer
- in: query
schema:
type: string
enum:
- firewallrule
- web
name: type
description: Filter the list of policies to only include the specified type.
required: false
- in: query
schema:
type: integer
name: limit
description: The number of items to return in the collection.
required: false
- in: query
schema:
type: integer
name: page
description: The number of a page in the collection. Use with the limit parameter to implement pagination.
required: false
tags:
- Organization Tunnel
- Umbrella
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
type: array
description: Policies associated with a tunnel.
readOnly: true
items:
type: object
readOnly: true
properties:
id:
type: integer
description: The resource ID. Use the ID as reference for subsequent requests.
example: 1122321
type:
type: string
description: The type of policy.
enum:
- firewallrule
- web
name:
type: string
description: The name of the policy.
example: Test Firewall Rule (Block Application)
organizationId:
type: integer
description: The organization ID.
example: 33451234
priority:
type: integer
description: An integer that represents the position of the policy in the policy list.
example: 4
isDefault:
type: boolean
description: Indicates whether the policy is the default policy.
isAppliedDirectly:
type: boolean
description: 'True if the tunnel is applied directly to this policy, false if the policy
is configured to use all tunnels.'
createdAt:
type: string
description: The date and time (timestamp) when the tunnel was created.
format: date-time
example: '2018-06-13T16:07:07.222Z'
modifiedAt:
$ref: '#/components/schemas/modifiedAt'
uri:
type: string
description: Resource URI
example: /v2/tunnels/8765432/policies
example:
- id: 1122321
type: web
name: Test Firewall Rule (Block Application)
organizationId: 33451234
priority: 4
isDefault: true
isAppliedDirectly: true
createdAt: '2018-06-13T16:07:07.222Z'
modifiedAt: '2018-06-13T16:07:07.222Z'
uri: /v2/tunnels/8765432/policies
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/ServerError'
/tunnelsState:
get:
tags:
- Debugging
- Umbrella
summary: List Tunnel State Information
operationId: getOrgTunnelState
security:
- oauthFlow:
- deployments.tunnels:read
description: List the tunnel state information.
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
Date:
$ref: '#/components/headers/Date'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/TunnelStateInformation'
example:
- tunnelId: '163367136'
status: UP
dc: chi1.edc
dcName: Equinix Chicago
dcDesc: Chicago, Illinois - US
ikeState: ESTABLISHED
ipsecState: INSTALLED
peerId: unique-value@1234567-234567812-umbrella.com
peerIp: 198.18.195.1
localIp: 198.25.43.19
peerPort: '4500'
ike:
age: '6194'
dhGroup: MODP_2048
prfAlgo: PRF_HMAC_SHA1
encAlgo: AES_CBC
# --- truncated at 32 KB (84 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cisco-umbrella/refs/heads/main/openapi/cisco-umbrella-deployments-network-tunnels-openapi.yml