Atmos Cloud API: Tunnels

The Atmos Cloud API allows administrators to have programmatic control over tunnels. Click here to learn more about generating an API token.

📘

NOTE

This is a limited release feature. For more information contact Axis Security Support: [email protected]​.

Create a Tunnel

The management API allows administrators to create a tunnel.

Request Details

  • Request URL: “admin-api.axissecurity.com/api/v1/tunnels”
  • Request Method: POST
  • Request Headers: Authorization: “Bearer {API Token}”
  • Request Body (JSON):
FieldTypeDescription
NameMandatoryThe tunnel name
AuthenticationIDMandatoryAuthentication ID. Value must be a valid email or IP address.
AuthenticationPSKMandatoryAuthentication PSK. Value must be at least 8 characters.
LocationIDMandatoryThe ID of the associated location
📘

NOTE

The ID parameter is NOT required when adding a new tunnel via the API

Request Format:

{
"name":"Chicago IPSec1",
"authenticationID":"<email>",
"authenticationPSK":"<secret>",
"locationID":"d88fc23a-59a1-476a-a62e-a51ff3543fe7"
}

Successful Response Format:

{
"id":"6ee0bd21-4f50-454a-9f75-82f6933d54b0",
"name":"Chicago IPSec1",
"authenticationID":"<email>",
"locationID":"d88fc23a-59a1-476a-a62e-a51ff3543fe7"
}

Response Codes:

CodeDescription
201Tunnel created successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. Click here for more information.
409Conflict - Tunnel already exists with the same name or AuthenticatedID is already in use
500Internal server error

Get the Details of an Existing Tunnel

To get the details of an existing tunnel, the tunnel ID should be added to the request URL.

Request Details

  • Request URL: “admin-api.axissecurity.com/api/v1/tunnels/<tunnel ID>”
  • Request Method: GET
  • Request Headers: Authorization: “Bearer {API Token}”
  • Request Body: empty

Successful Response Format:

{
"id":"6ee0bd21-4f50-454a-9f75-82f6933d54b0",
"name":"Chicago IPSec1",
"authenticationID":"<email>",
"locationID":"d88fc23a-59a1-476a-a62e-a51ff3543fe7"
}

Response Codes:

CodeDescription
200Tunnel information retrieved successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. Click here for more information.
404Tunnel not found
500Internal server error

Get a List of Existing Tunnels

Request Details

  • Request URL: “admin-api.axissecurity.com/api/v1/tunnels?pageSize=100&pageNumber=1”
  • Request Method: GET
  • Request Headers: Authorization: “Bearer {API Token}”
  • Query params:
Query ParamDescription
PageSizeSpecify the maximum number of tunnels to retrieve.
PageNumberPage number 1 will retrieve the first tunnels.

Successful Response Format:

{
"pageNumber":1,
"pageSize":100,
"firstPage":"<URL to retrieve first page>",
"lastPage":"<URL to retrieve last page>",
"totalPages":1,
"totalRecords":50,
"nextPage":"<URL to retrieve next page>",
"previousPage":"<URL to retrieve previous page>",
"data":[
    {
      "id":"6ee0bd21-4f50-454a-9f75-82f6933d54b0",
      "name":"Chicago IPSec1",
      "authenticationID":"<email>",
      "locationID":"d88fc23a-59a1-476a-a62e-a51ff3543fe7"
    }
  ]
}

Response Codes:

CodeDescription
200Tunnel retrieved successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. Click here for more information.
500Internal server error

Update an Existing Tunnel

To update an existing tunnel, the tunnel's ID should be added to the request URL.
A successful response will return a 204 response with the tunnel details.

Request Details:
Request URL: “admin-api.axissecurity.com/api/v1/tunnels/<tunnel ID>”
Request Method: PUT
Request Headers: Authorization: “Bearer {API Token}”

Request Format:

{
"name":"<new name>",
"authenticationID":"<new email>",
"AuthenticationPSK":"<new secret>",
"locationID":"<new location id>"
}

Successful Response Format:

{
"id":"6ee0bd21-4f50-454a-9f75-82f6933d54b0",
"name":"<new tunnel name>",
"authenticationID":"<new email>",
"AuthenticationPSK":"<new secret>",
"locationID":"<new location id>"
}

Response Codes:

CodeDescription
204Tunnel updated successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. Click here for more information.
404Tunnel not found
500Internal server error

Delete a Tunnel

To delete an existing tunnel, the tunnel's ID should be added to the request URL.
A successful response will return a 204 response with an empty body.

Request Details

  • Request URL: “admin-api.axissecurity.com/api/v1/tunnels/<tunnel ID>”
  • Request Method: Delete
  • Request Headers: Authorization: “Bearer {API Token}”
  • Request Body: empty

Response Codes:

CodeDescription
204Tunnel deleted successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. Click here for more information.
404Tunnel not found
500Internal server error

Get the Status of an Existing Tunnel

To get a tunnel's status, the tunnel's ID should be added to the request URL.

Request Details

  • Request URL: “admin-api.axissecurity.com/api/v1/tunnels/<tunnel ID>/status”
  • Request Method: GET
  • Request Headers: Authorization: “Bearer {API Token}”
  • Request Body: empty

Tunnel Statuses

ConnectedTunnel is forwarding traffic
DisconnectedTunnel isn't forwarding traffic

Get a List of IPsec PoP Locations

The management API allows administrators and SD-WAN orchestrators to retrieve the full list of IPsec termination Points of Presence (PoPs), including per-PoP FQDNs, geographic coordinates, and cloud provider metadata.

This endpoint enables SD-WAN solutions to make informed decisions about PoP selection for tunnel termination, instead of relying only on the global geo-DNS records (ipsec-proxy-geo.axisapps.io and ipsec-proxy-secondary-geo.axisapps.io).

📘

Note:

The list of PoP locations is dynamic and reflects the current set of available PoPs. The response will change as new PoPs are added to the infrastructure.

Request Details:

  • Request URL – “admin-api.axissecurity.com/api/v1/tunnels/<tunnel ID>/status”
  • Request Method – GET
  • Request Headers – Authorization: “Bearer {API Token}”
  • Required Token Scope – tunnels
  • Request Body – empty

cURL example:

curl -X GET https://admin-api.axissecurity.com/api/v1/pops/ipsec \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your api token>"

Response fields:

FieldTypeDescription
ipSecLocationsArrayTop-level array of country objects
countryStringCountry code (for example, US, DE, IL, and so on)
locationsArrayList of PoP locations within the country
locations.cityStringCity name and region (for example, San Francisco, California, Frankfurt, and so on)
locations.latitudeStringLatitude coordinate of the PoP location
locations.longitudeStringLongitude coordinate of the PoP location
locations.providerStringThe cloud provider hosting this PoP (for example, AWS, Azure, or GCP)
locations.fqdnArrayList of IPsec termination FQDNs available at this PoP
locations.fqdn.nameStringThe fully qualified domain name of the IPsec termination point
locations.fqdn.ipArrayThe IP address(es) associated with this FQDN

Successful response format:

📘

Note

The following response is a truncated sample. The full response includes all available PoP locations across all regions.

"ipSecLocations": [
    {
      "country": "UAE",
      "locations": [
        {
          "city": "Dubai",
          "latitude": "25.26",
          "longitude": "55.31",
          "provider": "Azure",
          "fqdn": [
            {
              "name": "<tunnel-name>.axisapps.io",
              "ip": [
                "20.233.16.163"
              ]
            },
            {
              "name": "<tunnel-name>.axisapps.io",
              "ip": [
                "20.216.62.25"
              ]
            }
          ]
        }
      ]
    },
    {
      "country": "CL",
      "locations": [
        {
          "city": "Santiago",
          "latitude": "-33.45",
          "longitude": "-70.64",
          "provider": "GCP",
          "fqdn": [
            {
              "name": "<tunnel-name>.axisapps.io",
              "ip": [
                "34.176.69.23"
              ]
            },
            {
              "name": "<tunnel-name>.axisapps.io",
              "ip": [
                "34.176.247.253"
              ]
            }
          ]
        }
      ]
    }
	}
}

Response Codes:

CodeDescription
200PoP location list retrieved successfully
400Bad request
401Unauthorized access. Make sure the API token includes writing permissions. For more information, see Atmos Cloud API: Generate Token.
500Internal server error