Introduction

This is the main NetFoundry public API

For non-interactive access to this REST API you need credentials enabled for non-interactive logins. The Console provids a feature that enables authorized users to create such non-interactive credentials (Manage Organization → API Accounts). Using this feature you can generate an API client ID and client secret pair.

These credentials are used to obtain a JSON Web Token (JWT). The JWT must be included in all subsequent requests to the API. If you don’t have access to the NetFoundry console, please create an account.

Overview

NetFoundry’s web console and APIs are used to define networks by designing and instantly deploying AppWANs. AppWANs are software defined encrypted overlays capable of dynamically adjusting to meet performance requirements, that define how endpoints are permitted to access services (such as applications) across the Internet and/or existing private networks such as MPLS or SD-WAN deployments. One major benefit of AppWANs is that since they are abstracted above network infrastructure, they are completely service provider and network agnostic.

HTTP verbs

NetFoundry adheres closely to standard HTTP and REST conventions in its use of HTTP verbs.

Verb Usage

GET

Used to retrieve a resource

POST

Used to create a new resource

PUT

Used to update an existing resource, full updates only

DELETE

Used to delete an existing resource

The PATCH method is not used (yet).

HTTP status codes

NetFoundry adheres closely to standard HTTP and REST conventions in its use of HTTP status codes.

Status code Usage

200 OK

The actual response will depend on the request method used. In a GET request, the response will contain an entity corresponding to the requested resource. In a POST request, the response will contain an entity describing or containing the result of the action.

201 Created

The request has been fulfilled and resulted in a new resource being created.

202 Accepted

The request has been accepted and is being processed asynchronously Standard response for successful HTTP requests which invoke back-end services.

204 No Content

The server successfully processed the request, but is not returning any content.

400 Bad Request

The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).

401 Unauthorized

The request lacks valid authentication credentials for the target resource.

403 Forbidden

The request is authenticated with valid credentials however that set of credentials is not authorized to access this resource.

404 Not Found

The requested resource could not be found but may be available again in the future. Subsequent requests by the client are permissible.

Authentication

Authentication is delegated to Auth0. In order to use the API you will need to

  • perform an authentication request to Auth0

  • present the received access token in the Authorization header in every API request

Authentication request

Execute an http request per the example below to present your credentials and receive an access token that will enable you to interact with the API

BEARER=$( \(1)
  curl \(2)
    --request POST \
    --silent \
    --show-error \
    --header 'content-type: application/json' \
    --data '{
        "client_id":"---redacted----",       (3)
        "client_secret": "---redacted----",  (4)
        "audience":"https://gateway.production.netfoundry.io/",
        "grant_type":"client_credentials"
    }' \
    https://netfoundry-staging.auth0.com/oauth/token |\
    jq -r .access_token \(5)
) && echo $BEARER (6)
1 creates an environment variable BEARER to hold the token after successful request. The contents of this variable will be used in all subsequent requests
2 this example uses the cURL command to perform the request
3 you will need to insert your actual client ID
4 you will need to insert your actual secret
5 this example uses jq to parse the response from Auth0 and extract the token
6 this line prints the extracted token; it is included for convenience / debugging purposes only

API request using access token

Execute an http request per the example below (e.g. fetch networks). The access token is presented to the API via the Authorization header, which in turn leverages the BEARER variable used in the previous example to store the extracted access token.

# get networks
curl -iX GET \
  https://gateway.production.netfoundry.io/rest/v1/networks \(1)
  -H "Authorization: Bearer $BEARER" \(2)
  -H 'Cache-Control: no-cache' \
  -H 'Content-Type: application/json' \
  --max-time 5
1 the URL used to fetch networks (see also Listing networks)
2 the Authorization header transmits the Bearer token

Resources

Organization

The Organization resource contains networks for a given entity.


Fetching a organization

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/organizations/4c58e70f-6749-48e1-b9b7-aede3a8fd138' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The organization’s name

organizationShortName

String

The organization’s key name

mfaRequired

Boolean

Does the organization require mfa for login

zitiEnabled

Boolean

Is Ziti functionality enabled on this organization

defaultAzureVirtualWanId

Null

Default Azure Virtual Wan to use for O365 service overlap checking

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: fa182205c5af3067
Content-Type: application/json;charset=UTF-8
Content-Length: 505

{
  "createdAt" : "2019-05-21T04:46:21.103+0000",
  "updatedAt" : "2019-05-21T14:46:21.103+0000",
  "name" : "Test Org 01",
  "organizationShortName" : "TORG01",
  "mfaRequired" : false,
  "zitiEnabled" : false,
  "defaultAzureVirtualWanId" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/organizations/4c58e70f-6749-48e1-b9b7-aede3a8fd138"
    },
    "networks" : {
      "href" : "http://localhost:8088/organizations/4c58e70f-6749-48e1-b9b7-aede3a8fd138/networks"
    }
  }
}


Azure Subscription

The Azure Subscription resource contains credential sets and Azure Virtual Wan Sites


Listing Azure Subscriptions

A GET request lists all of the organizations Azure Subscriptions.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions' -i -H 'NF-OrganizationId: 08534c65-d5e1-47d5-9757-f167aba4c7c6' -H 'Accept: application/json'

Example response

Path Type Description

_embedded.azureSubscriptions

Array

An array of Azure Subsription resources

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: a96a5e0995ce3879
Content-Type: application/json;charset=UTF-8
Content-Length: 1361

{
  "_embedded" : {
    "azureSubscriptions" : [ {
      "name" : "AZ Sub 01",
      "subscriptionId" : "97199243-6214-4f35-b365-6c8c40839411",
      "tenantId" : "916aea73-595c-4e73-800b-57efe75be2e0",
      "applicationId" : "3c812f95-33e5-48d2-b8d7-9cff8854dbaf",
      "applicationKey" : "b51e62aa-d57e-460f-b4c2-76df3645f771",
      "organizationId" : "5ecdc771-1c47-47a2-9001-cf098bb4a910",
      "createdAt" : "2019-05-21T04:45:44.678+0000",
      "updatedAt" : "2019-05-21T14:45:44.678+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/azureSubscriptions/77df6d20-a1fd-4443-b742-081d408aaaf6"
        }
      }
    }, {
      "name" : "AZ Sub 02",
      "subscriptionId" : "c8efc56a-b5bb-409c-ba7c-344b0a8552c5",
      "tenantId" : "54c0efe3-9e76-4b37-b8a9-09a6ce483442",
      "applicationId" : "a5381055-b3c7-436b-af7f-21f3a8811391",
      "applicationKey" : "658255bd-02a7-4eb4-b5cf-181477d07193",
      "organizationId" : "e69dfc05-81f7-47d6-b7ed-5ed23802fdd0",
      "createdAt" : "2019-05-21T04:45:44.679+0000",
      "updatedAt" : "2019-05-21T14:45:44.679+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/azureSubscriptions/da41e0d1-cada-4ad5-9598-fe0bdeb6f504"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "/azureSubscriptions"
    }
  }
}


Fetching an Azure Subscription

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/dc88e9cf-bc0f-4e96-9640-7e3765c847bc' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The Azure Subscription name

subscriptionId

String

The Subscription ID for the Azure Service Principal

tenantId

String

The Tenant ID (Directory ID) for your Azure AD Tenant

applicationId

String

The Application ID for your Azure App Registration

applicationKey

String

The Application Key for your Azure App Registration

organizationId

String

The id of the organization that this subscription is associated to.

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: d8d1fe3701abfc59
Content-Type: application/json;charset=UTF-8
Content-Length: 570

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "7f521c02-3acb-4334-b475-b806b3d5ec48",
  "tenantId" : "c613291c-8fcb-4884-a46c-7b579fdb56cf",
  "applicationId" : "d9914100-53c3-42a6-bee0-d2ace62eef82",
  "applicationKey" : "32f26ab9-3f49-44bf-b680-13f0bb7f4c85",
  "organizationId" : "6a7e9931-6b27-46ca-9c6c-f7ca3cbda46f",
  "createdAt" : "2019-05-21T04:45:45.209+0000",
  "updatedAt" : "2019-05-21T14:45:45.209+0000",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/azureSubscriptions/dc88e9cf-bc0f-4e96-9640-7e3765c847bc"
    }
  }
}


Creating an Azure Subscription

A POST request creates an Azure Subscription.

Request Fields

Path Type Description

name

String

The Azure Subscription name

subscriptionId

String

The Subscription ID for the Azure Service Principal

tenantId

String

The Tenant ID (Directory ID) for your Azure AD Tenant

applicationId

String

The Application ID for your Azure App Registration

applicationKey

String

The Application Key for your Azure App Registration

Example CURL request

$ curl 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/' -i -X POST -H 'Content-Type: application/json' -H 'NF-OrganizationId: 101c49f8-4c9f-4716-b5b7-3cb7375bdf95' -d '{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "e3249d1f-4b07-4b9b-99d3-c7a9ab39fdef",
  "tenantId" : "2162ec4f-6d91-4c32-9da1-6ab035647685",
  "applicationId" : "ec0d977b-188f-407b-b4bc-636dbade3adb",
  "applicationKey" : "f525af4d-f34b-4d55-b97c-5e7c43ca4ee9"
}'

Example HTTP request

POST /rest/v1/azureSubscriptions/ HTTP/1.1
Content-Type: application/json
NF-OrganizationId: 101c49f8-4c9f-4716-b5b7-3cb7375bdf95
Host: gateway.netfoundry.io
Content-Length: 277

{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "e3249d1f-4b07-4b9b-99d3-c7a9ab39fdef",
  "tenantId" : "2162ec4f-6d91-4c32-9da1-6ab035647685",
  "applicationId" : "ec0d977b-188f-407b-b4bc-636dbade3adb",
  "applicationKey" : "f525af4d-f34b-4d55-b97c-5e7c43ca4ee9"
}

Example HTTPie request

$ echo '{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "e3249d1f-4b07-4b9b-99d3-c7a9ab39fdef",
  "tenantId" : "2162ec4f-6d91-4c32-9da1-6ab035647685",
  "applicationId" : "ec0d977b-188f-407b-b4bc-636dbade3adb",
  "applicationKey" : "f525af4d-f34b-4d55-b97c-5e7c43ca4ee9"
}' | http POST 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/' 'Content-Type:application/json' 'NF-OrganizationId:101c49f8-4c9f-4716-b5b7-3cb7375bdf95'

Example response

Response Fields

Path Type Description

name

String

The Azure Subscription name

subscriptionId

String

The Subscription ID for the Azure Service Principal

tenantId

String

The Tenant ID (Directory ID) for your Azure AD Tenant

applicationId

String

The Application ID for your Azure App Registration

applicationKey

String

The Application Key for your Azure App Registration

organizationId

String

The id of the organization that this subscription is associated to.

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 4f2232eb878a600f
Content-Type: application/json;charset=UTF-8
Content-Length: 570

{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "b1b54a49-add2-41c6-bb04-c1b33da85247",
  "tenantId" : "095d3c2f-edde-4cc4-bfbb-fba77d6549b6",
  "applicationId" : "019f10ab-ad45-4872-bf1b-bdd7d2171e68",
  "applicationKey" : "bceb4199-1a08-48f5-807c-9676ccaab21f",
  "organizationId" : "3185fa76-4301-4bc8-b5a5-9304a3fbc9b6",
  "createdAt" : "2019-05-21T04:45:44.987+0000",
  "updatedAt" : "2019-05-21T14:45:44.987+0000",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/azureSubscriptions/3979368a-8fd3-482f-93cd-c99e018bc153"
    }
  }
}


Updating an Auzre Subscription

A PUT request updates a specific Azure Subscription.

Example CURL request

$ curl 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/510ac689-9a6a-406a-8c36-cbb50a685832' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "cc09b8b5-dad1-43e5-a36c-d0d8ebea4d6d",
  "tenantId" : "7e365dff-0ee1-47e9-b676-503b5bb765cc",
  "applicationId" : "f808a7b6-8cd0-423f-a8bc-cd76ca78df5d",
  "applicationKey" : "f9ce6eb5-d09f-49a8-b957-86d3ce5d900d",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}'

Example HTTP request

PUT /rest/v1/azureSubscriptions/510ac689-9a6a-406a-8c36-cbb50a685832 HTTP/1.1
Content-Type: application/json
Host: gateway.netfoundry.io
Content-Length: 348

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "cc09b8b5-dad1-43e5-a36c-d0d8ebea4d6d",
  "tenantId" : "7e365dff-0ee1-47e9-b676-503b5bb765cc",
  "applicationId" : "f808a7b6-8cd0-423f-a8bc-cd76ca78df5d",
  "applicationKey" : "f9ce6eb5-d09f-49a8-b957-86d3ce5d900d",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}

Example HTTPie request

$ echo '{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "cc09b8b5-dad1-43e5-a36c-d0d8ebea4d6d",
  "tenantId" : "7e365dff-0ee1-47e9-b676-503b5bb765cc",
  "applicationId" : "f808a7b6-8cd0-423f-a8bc-cd76ca78df5d",
  "applicationKey" : "f9ce6eb5-d09f-49a8-b957-86d3ce5d900d",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}' | http PUT 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/510ac689-9a6a-406a-8c36-cbb50a685832' 'Content-Type:application/json'

Example response

Path Type Description

name

String

The Azure Subscription name

subscriptionId

String

The Subscription ID for the Azure Service Principal

tenantId

String

The Tenant ID (Directory ID) for your Azure AD Tenant

applicationId

String

The Application ID for your Azure App Registration

applicationKey

String

The Application Key for your Azure App Registration

organizationId

String

The id of the organization that this subscription is associated to.

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: d932281f36d305a6
Content-Type: application/json;charset=UTF-8
Content-Length: 570

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "8917c452-2615-40e3-be55-f963d2b92886",
  "tenantId" : "c08699aa-5835-4c6e-89c9-d72cefe65e6e",
  "applicationId" : "62ede810-bf57-4120-af9f-54be20864228",
  "applicationKey" : "f175e7b2-9b3b-45c1-8b1e-f5af315d06df",
  "organizationId" : "35210156-98c0-43cf-8493-3b31efa09da8",
  "createdAt" : "2019-05-21T04:45:45.151+0000",
  "updatedAt" : "2019-05-21T14:45:45.151+0000",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/azureSubscriptions/510ac689-9a6a-406a-8c36-cbb50a685832"
    }
  }
}


Deleting an Azure Subscription

A DELETE request deletes an Azure Subscription.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/azureSubscriptions/27e4cffa-c882-4367-910b-0a3667f1fb05' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 465cbe6e0e457575


Network

The Network resource is used to create, modify and list networks for an Organization.


Listing Networks Paged

A GET request returns a paginated list all of the organizations networks.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks?page=0&size=10&sort=name,asc' -i -H 'NF-OrganizationId: 2e744fc1-b28d-42bc-9bf9-86434cc935fe' -H 'Accept: application/json'

Example response

Path Type Description

_embedded.networks

Array

An array of Network resources

_links

Object

Links to other resources and pages

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: 220a7cc1ba135f74
Content-Type: application/json;charset=UTF-8
Content-Length: 1632

{
  "_embedded" : {
    "networks" : [ {
      "createdAt" : "2019-05-21T04:46:23.778+0000",
      "updatedAt" : "2019-05-21T14:46:23.778+0000",
      "name" : "Test Network 01",
      "caName" : "CA_11450e8c-a584-4144-9757-be614029e57a",
      "productFamily" : "dvn",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/0f253f3f-8798-4333-925b-13e94ddc360d"
        },
        "organization" : {
          "href" : "http://localhost:8088/networks/0f253f3f-8798-4333-925b-13e94ddc360d/organization"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:46:23.778+0000",
      "updatedAt" : "2019-05-21T14:46:23.778+0000",
      "name" : "Test Network 02",
      "caName" : "CA_cc44d358-b5d9-4c08-b0e6-417357aae9a9",
      "productFamily" : "dvn",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/27da0549-82ee-4002-8736-9a7ff07596f7"
        },
        "organization" : {
          "href" : "http://localhost:8088/networks/27da0549-82ee-4002-8736-9a7ff07596f7/organization"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/networks?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing networks

A GET request lists all of the organizations networks.

Example request

Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-networks/curl-request.adoc[]

Example response

Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-networks/response-fields.adoc[] Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-networks/http-response.adoc[]


Fetching a network

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks/6dcf146d-2d0e-4fe5-beab-4d6ee96f0a43' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The network’s name

caName

String

The network’s ca name

productFamily

String

The network’s product family

productVersion

String

The version of the network core software

o365BreakoutCategory

String

Optional O365 Category for checking conflicts between network services in O365 routes. Options: NONE, ALLOW, OPTIMIZE

status

Number

Provisioning status of the network

organizationId

Null

The id of the organization that this network belongs to.

createdAt

String

Record creation time

updatedAt

String

Record last modification time

provisionedAt

Null

The provisioned status of the Network

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: d7fe57bf47a3937a
Content-Type: application/json;charset=UTF-8
Content-Length: 607

{
  "createdAt" : "2019-05-21T04:46:23.603+0000",
  "updatedAt" : "2019-05-21T14:46:23.603+0000",
  "name" : "Test Network 01",
  "caName" : "CA_33252ebc-9337-4a66-a81a-ea881b025209",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/6dcf146d-2d0e-4fe5-beab-4d6ee96f0a43"
    },
    "organization" : {
      "href" : "http://localhost:8088/networks/6dcf146d-2d0e-4fe5-beab-4d6ee96f0a43/organization"
    }
  }
}


Fetching a list of network controllers

A GET request fetches a Network Controllers specific network.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks/41ee0e19-93ea-4c5f-9dbe-15b21e8bb9b6/networkControllerHosts' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.networkControllerHosts

Array

An array of Network Controller resources

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: ddf833bb4c91ee9e
Content-Type: application/json;charset=UTF-8
Content-Length: 382

{
  "_embedded" : {
    "networkControllerHosts" : [ {
      "ipAddress" : "143.2.19.7",
      "status" : 300
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/41ee0e19-93ea-4c5f-9dbe-15b21e8bb9b6/networkControllerHosts"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/41ee0e19-93ea-4c5f-9dbe-15b21e8bb9b6"
    }
  }
}


Creating a network

A POST request creates a network.

Request Fields

Path Type Description

name

String

The network’s name

networkConfigName

String

The configuration name for sizing. Default is medium

productFamily

String

The network’s product family

productVersion

String

The network’s product version

locationCode

String

locationCode (from LocationMetadata) of where to instantiate the NC. Partial match (startsWith())

o365BreakoutCategory

String

Optional O365 Category for checking conflicts between network services in O365 routes. Options: NONE, ALLOW, OPTIMIZE

Example CURL request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks' -i -X POST -H 'Content-Type: application/json' -H 'NF-OrganizationId: dd1e95d4-cac5-4a0c-8637-823cffeb59de' -d '{
  "name" : "Test Network 01",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "networkConfigName" : "medium",
  "locationCode" : null,
  "o365BreakoutCategory" : "NONE"
}'

Example HTTP request

POST /rest/v1/networks HTTP/1.1
Content-Type: application/json
NF-OrganizationId: dd1e95d4-cac5-4a0c-8637-823cffeb59de
Host: gateway.netfoundry.io
Content-Length: 189

{
  "name" : "Test Network 01",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "networkConfigName" : "medium",
  "locationCode" : null,
  "o365BreakoutCategory" : "NONE"
}

Example HTTPie request

$ echo '{
  "name" : "Test Network 01",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "networkConfigName" : "medium",
  "locationCode" : null,
  "o365BreakoutCategory" : "NONE"
}' | http POST 'https://gateway.netfoundry.io/rest/v1/networks' 'Content-Type:application/json' 'NF-OrganizationId:dd1e95d4-cac5-4a0c-8637-823cffeb59de'

Example response

Response Fields

Path Type Description

name

String

The network’s name

caName

String

The network’s ca name

productFamily

String

The network’s product family

productVersion

String

The version of the network core software

o365BreakoutCategory

String

Optional O365 Category for checking conflicts between network services in O365 routes

status

Number

Provisioning status of the network

organizationId

Null

The id of the organization that this network belongs to.

createdAt

Timestamp

Record creation time

updatedAt

String

Record last modification time

provisionedAt

Timestamp

The provisioned status of the Network

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: e2f9b0b18dea682c
Content-Type: application/json;charset=UTF-8
Content-Length: 607

{
  "createdAt" : "2019-05-21T04:46:23.654+0000",
  "updatedAt" : "2019-05-21T14:46:23.654+0000",
  "name" : "Test Network 01",
  "caName" : "CA_f5b0b515-9289-414d-9892-62c1d5a5385f",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/0f91b860-35b8-48c3-856d-efbd9e1c6056"
    },
    "organization" : {
      "href" : "http://localhost:8088/networks/0f91b860-35b8-48c3-856d-efbd9e1c6056/organization"
    }
  }
}


Updating a Network

A PUT request updates a specific network. The request should contain a the network name.

Example CURL request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks/5b9cf072-d65c-4415-819b-a5bcf5910fe3' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test Network 01 Updated",
  "o365BreakoutCategory" : "NONE"
}'

Example HTTP request

PUT /rest/v1/networks/5b9cf072-d65c-4415-819b-a5bcf5910fe3 HTTP/1.1
Content-Type: application/json
Host: gateway.netfoundry.io
Content-Length: 75

{
  "name" : "Test Network 01 Updated",
  "o365BreakoutCategory" : "NONE"
}

Example HTTPie request

$ echo '{
  "name" : "Test Network 01 Updated",
  "o365BreakoutCategory" : "NONE"
}' | http PUT 'https://gateway.netfoundry.io/rest/v1/networks/5b9cf072-d65c-4415-819b-a5bcf5910fe3' 'Content-Type:application/json'

Example response

Path Type Description

name

String

The network’s name

caName

String

The network’s ca name

productFamily

String

The network’s product family

productVersion

String

The version of the network core software

o365BreakoutCategory

String

Optional O365 Category for checking conflicts between network services in O365 routes. Options: NONE, ALLOW, OPTIMIZE

status

Number

Provisioning status of the network

organizationId

Null

The id of the organization that this network belongs to.

createdAt

String

Record creation time

updatedAt

String

Record last modification time

provisionedAt

Null

The provisioned status of the Network

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: b79683abbed31a2f
Content-Type: application/json;charset=UTF-8
Content-Length: 615

{
  "createdAt" : "2019-05-21T04:46:23.747+0000",
  "updatedAt" : "2019-05-21T14:46:23.747+0000",
  "name" : "Test Network 01 Updated",
  "caName" : "CA_38dbf1fa-4e86-44b8-8f66-348be4ab6e93",
  "productFamily" : "dvn",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/5b9cf072-d65c-4415-819b-a5bcf5910fe3"
    },
    "organization" : {
      "href" : "http://localhost:8088/networks/5b9cf072-d65c-4415-819b-a5bcf5910fe3/organization"
    }
  }
}


Deleting a Network

A DELETE request deletes a network.

Example request

$ curl 'https://gateway.netfoundry.io/rest/v1/networks/63e641d1-de56-4b34-a666-da7a9e1bf532' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 8e156a07bfd8a15f


GeoRegion

The GeoRegion resource is used to list GeoRegions.


Listing GeoRegions

A GET request lists all of the GeoRegions.

Example request

$ curl 'http://localhost:8080/geoRegions/' -i -H 'Accept: application/json'

Example response

Response Fields

Path Type Description

_embedded.geoRegions

Array

An array of GeoRegion resources

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 0e4e120a3fc8c9a5
Content-Type: application/json;charset=UTF-8
Content-Length: 1002

{
  "_embedded" : {
    "geoRegions" : [ {
      "createdAt" : "2019-05-21T04:46:18.564+0000",
      "updatedAt" : "2019-05-21T14:46:18.565+0000",
      "name" : "Geo Region 01",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/geoRegions/abc48084-7d23-443d-a804-5461ca8e4a92"
        },
        "dataCenters" : {
          "href" : "http://localhost:8088/geoRegions/abc48084-7d23-443d-a804-5461ca8e4a92/dataCenters"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:46:18.565+0000",
      "updatedAt" : "2019-05-21T14:46:18.565+0000",
      "name" : "Geo Region 02",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/geoRegions/5abb5601-1c74-44ad-8bb4-44be0e40bdb6"
        },
        "dataCenters" : {
          "href" : "http://localhost:8088/geoRegions/5abb5601-1c74-44ad-8bb4-44be0e40bdb6/dataCenters"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/geoRegions"
    }
  }
}


Fetching a GeoRegion

A GET request fetches a specific GeoRegion.

Example request

$ curl 'http://localhost:8080/geoRegions/84ebeeed-a460-4e90-91f9-2a5ab4ca1959' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The GeoRegion name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 7b899ff2eebfc3a6
Content-Type: application/json;charset=UTF-8
Content-Length: 382

{
  "createdAt" : "2019-05-21T04:46:18.533+0000",
  "updatedAt" : "2019-05-21T14:46:18.533+0000",
  "name" : "Geo Region 01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/geoRegions/84ebeeed-a460-4e90-91f9-2a5ab4ca1959"
    },
    "dataCenters" : {
      "href" : "http://localhost:8088/geoRegions/84ebeeed-a460-4e90-91f9-2a5ab4ca1959/dataCenters"
    }
  }
}


Data Center

The Data Center resource is used to list Data Centers.


Listing Data Centers

A GET request lists all of the Data Centers. ==== Example request

$ curl 'http://localhost:8080/dataCenters/' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.dataCenters

Array

An array of DataCenter resources

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 033d6ecf46e99b69
Content-Type: application/json;charset=UTF-8
Content-Length: 1832

{
  "_embedded" : {
    "dataCenters" : [ {
      "createdAt" : "2019-05-21T04:46:02.585+0000",
      "updatedAt" : "2019-05-21T14:46:02.585+0000",
      "name" : "dc01",
      "address" : "123 That Street",
      "city" : "Nashville",
      "stateCode" : "TN",
      "stateName" : "Great State",
      "continentName" : "North America",
      "continentCode" : "NA",
      "countryName" : "United States",
      "countryCode" : "US",
      "isp" : "aws",
      "lat" : 1.0,
      "lng" : 2.0,
      "locationCode" : "us-east-1b",
      "locationName" : "us-east-1",
      "provider" : "aws",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/dataCenters/70b92014-bf38-4d7c-8ba9-b0d43f1ba3d2"
        },
        "geoRegions" : {
          "href" : "http://localhost:8080:/dataCenters/70b92014-bf38-4d7c-8ba9-b0d43f1ba3d2/geoRegions"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:46:02.586+0000",
      "updatedAt" : "2019-05-21T14:46:02.586+0000",
      "name" : "dc01",
      "address" : "123 That Street",
      "city" : "Nashville",
      "stateCode" : "TN",
      "stateName" : "Great State",
      "continentName" : "North America",
      "continentCode" : "NA",
      "countryName" : "United States",
      "countryCode" : "US",
      "isp" : "aws",
      "lat" : 1.0,
      "lng" : 2.0,
      "locationCode" : "us-east-2c",
      "locationName" : "us-east-2",
      "provider" : "aws",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/dataCenters/b93c629e-9736-4f62-a475-62aac754415c"
        },
        "geoRegions" : {
          "href" : "http://localhost:8080:/dataCenters/b93c629e-9736-4f62-a475-62aac754415c/geoRegions"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/dataCenters"
    }
  }
}


Fetching a Data Center by ID

A GET request fetches a specific Data Center. ==== Example request

$ curl 'http://localhost:8080/dataCenters/9e5071ef-3215-4263-8328-5ca35cf96136' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

DataCenter friendly name

address

String

The DC address

city

String

The DC city

stateCode

String

The DC state code

stateName

String

The DC state name

continentName

String

The continent name

continentCode

String

The continent code

countryName

String

The country name

countryCode

String

The country code

isp

String

The ISP for the DC

lat

Number

The DC latitude

lng

Number

The DC longitude

locationCode

String

The location code

locationName

String

The location name

provider

String

The DC provider

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: f9f746f42d68f6a5
Content-Type: application/json;charset=UTF-8
Content-Length: 740

{
  "createdAt" : "2019-05-21T04:46:02.624+0000",
  "updatedAt" : "2019-05-21T14:46:02.624+0000",
  "name" : "dc01",
  "address" : "123 That Street",
  "city" : "Nashville",
  "stateCode" : "TN",
  "stateName" : "Great State",
  "continentName" : "North America",
  "continentCode" : "NA",
  "countryName" : "United States",
  "countryCode" : "US",
  "isp" : "aws",
  "lat" : 1.0,
  "lng" : 2.0,
  "locationCode" : "us-east-1a",
  "locationName" : "us-east-1",
  "provider" : "aws",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/dataCenters/9e5071ef-3215-4263-8328-5ca35cf96136"
    },
    "geoRegions" : {
      "href" : "http://localhost:8080:/dataCenters/9e5071ef-3215-4263-8328-5ca35cf96136/geoRegions"
    }
  }
}


Fetching a Data Center by Location Code

A GET request that fetches a specific Data Center by Location Code. ==== Example request

$ curl 'http://localhost:8080/dataCenters/?locationCode=us-east-2a' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

DataCenter friendly name

address

String

The DC address

city

String

The DC city

stateCode

String

The DC state code

stateName

String

The DC state name

continentName

String

The continent name

continentCode

String

The continent code

countryName

String

The country name

countryCode

String

The country code

isp

String

The ISP for the DC

lat

Number

The DC latitude

lng

Number

The DC longitude

locationCode

String

The location code

locationName

String

The location name

provider

String

The DC provider

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: e061be266d849ae7
Content-Type: application/json;charset=UTF-8
Content-Length: 740

{
  "createdAt" : "2019-05-21T04:46:02.642+0000",
  "updatedAt" : "2019-05-21T14:46:02.642+0000",
  "name" : "dc01",
  "address" : "123 That Street",
  "city" : "Nashville",
  "stateCode" : "TN",
  "stateName" : "Great State",
  "continentName" : "North America",
  "continentCode" : "NA",
  "countryName" : "United States",
  "countryCode" : "US",
  "isp" : "aws",
  "lat" : 1.0,
  "lng" : 2.0,
  "locationCode" : "us-east-2a",
  "locationName" : "us-east-2",
  "provider" : "aws",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/dataCenters/0807be52-9b7b-41b4-b53a-8538819ce005"
    },
    "geoRegions" : {
      "href" : "http://localhost:8080:/dataCenters/0807be52-9b7b-41b4-b53a-8538819ce005/geoRegions"
    }
  }
}


Endpoint

The Endpoint resource is used to create, modify and list endpoints for a Network.


Listing endpoints paginated

A GET request returns a paged representation all of the endpoints for a network. ==== Example request

$ curl 'http://localhost:8080/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d/endpoints?page=0&size=10&sort=name,asc' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.endpoints

Array

An array of Endpoint resources

_links

Object

Links to other resources and pages

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: c02eac93aaa152ac
Content-Type: application/json;charset=UTF-8
Content-Length: 1972

{
  "_embedded" : {
    "endpoints" : [ {
      "createdAt" : "2019-05-21T04:46:13.280+0000",
      "updatedAt" : "2019-05-21T14:46:13.280+0000",
      "name" : "Endpoint01",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "registrationKey" : "regKey",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d/endpoints/b5cd2fbe-f7b9-4837-a0a7-d93a214078d8"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:46:13.280+0000",
      "updatedAt" : "2019-05-21T14:46:13.280+0000",
      "name" : "Endpoint01",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "registrationKey" : "regKey",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d/endpoints/a423f97c-6b16-4f3d-9188-4643bc17f09e"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/networks/ee278217-b3d9-4a8d-90c1-8cd29baf163d/endpoints?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing endpoints

A GET request lists all of the endpoints for a network. ==== Example request Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-endpoints-for-network/curl-request.adoc[] ==== Example response Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-endpoints-for-network/response-fields.adoc[] Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-endpoints-for-network/http-response.adoc[]


Fetching an endpoint

A GET request fetches a specific network. ==== Example request

$ curl 'http://localhost:8080/networks/6e0213e2-1c08-429c-b400-8753ef1a2eca/endpoints/149ac24d-0a49-4d37-b200-2e20e82bcb05' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The endpoint’s name

endpointType

String

The endpoint’s type

clientType

String

The endpoint’s client type

clientVersion

String

The endpoint’s client version

componentId

String

The Component ID of the endpoint resource

registrationKey

String

The one-time use registration key

registrationAttemptsLeft

Number

Remaining registration attempts

status

Number

Provisioning status of the endpoint

currentState

Number

Current state of the endpoint

stateLastUpdated

Null

Last time state of the endpoint was updated

haEndpointType

String

HAGW Endpoint that is part of High Availability Cluster

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

status

Number

Provisioning status of the endpoint

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: b44ef74b33f3baeb
Content-Type: application/json;charset=UTF-8
Content-Length: 733

{
  "createdAt" : "2019-05-21T04:46:13.424+0000",
  "updatedAt" : "2019-05-21T14:46:13.424+0000",
  "name" : "Endpoint01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "registrationKey" : "regKey",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/6e0213e2-1c08-429c-b400-8753ef1a2eca/endpoints/149ac24d-0a49-4d37-b200-2e20e82bcb05"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/6e0213e2-1c08-429c-b400-8753ef1a2eca"
    }
  }
}


Creating an endpoint

A POST request creates an endpoint on a specific network.

When creating an endpoint, either a GeoRegion Id or a DataCenter Id needs to be supplied. If you are creating a public hosted gateway (endpointType: GW) then a dataCenterId must be specified otherwise you will specify a geoRegionId.

Example request

$ curl 'http://localhost:8080/networks/b0a9dec4-ec6a-4034-ad41-34c078530998/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint 01",
  "endpointType" : "GW",
  "geoRegionId" : null,
  "dataCenterId" : "c3b5c388-1535-1e01-11c3-a7e2809ae280",
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null
}'

Example response

Path Type Description

name

String

The endpoint’s name

endpointType

String

The endpoint’s type

clientType

String

The endpoint’s client type

clientVersion

String

The endpoint’s client version

componentId

String

The Component ID of the endpoint resource

registrationKey

String

The one-time use registration key

registrationAttemptsLeft

Number

Remaining registration attempts

status

Number

Provisioning status of the endpoint

currentState

Number

Current state of the endpoint

stateLastUpdated

Null

Last time state of the endpoint was updated

haEndpointType

String

HAGW Endpoint that is part of High Availability Cluster

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 21890d3b715fd883
Content-Type: application/json;charset=UTF-8
Content-Length: 733

{
  "createdAt" : "2019-05-21T04:46:13.342+0000",
  "updatedAt" : "2019-05-21T14:46:13.342+0000",
  "name" : "Endpoint01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "registrationKey" : "regKey",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/b0a9dec4-ec6a-4034-ad41-34c078530998/endpoints/51e28786-4ebf-4dbc-a179-50755b2181f3"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/b0a9dec4-ec6a-4034-ad41-34c078530998"
    }
  }
}


Updating an endpoint

A PUT request updates an endpoint on a specific network. ==== Example request

$ curl 'http://localhost:8080/networks/2e4c3f40-e261-4dde-9609-564aa562ec47/endpoints/503b8911-5b61-4aa2-b3cd-22d1dc9fd627' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint 01 New Name",
  "o365BreakoutNextHopIp" : null
}'

Example response

Path Type Description

name

String

The endpoint’s name

endpointType

String

The endpoint’s type

clientType

String

The endpoint’s client type

clientVersion

String

The endpoint’s client version

componentId

String

The Component ID of the endpoint resource

registrationKey

String

The one-time use registration key

registrationAttemptsLeft

Number

Remaining registration attempts

status

Number

Provisioning status of the endpoint

currentState

Number

Current state of the endpoint

stateLastUpdated

Null

Last time state of the endpoint was updated

haEndpointType

String

HAGW Endpoint that is part of High Availability Cluster

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 28926f92bdd2a786
Content-Type: application/json;charset=UTF-8
Content-Length: 733

{
  "createdAt" : "2019-05-21T04:46:13.317+0000",
  "updatedAt" : "2019-05-21T14:46:13.317+0000",
  "name" : "Endpoint01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "registrationKey" : "regKey",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/2e4c3f40-e261-4dde-9609-564aa562ec47/endpoints/503b8911-5b61-4aa2-b3cd-22d1dc9fd627"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/2e4c3f40-e261-4dde-9609-564aa562ec47"
    }
  }
}


Deleting an endpoint

A DELETE request deletes an endpoint on a specific network.

Example request

$ curl 'http://localhost:8080/networks/0c011a9d-d531-4878-b2ba-de63761ea5d8/endpoints/1fd8a4a8-86cc-4e5c-92f8-b9109bd5f091' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: cb11c7253559b61b


Gateway Cluster

The gatewayCluster resource is used to create, modify and list gateway Clusters for a Network. Gateway Clusters represent High Availability (HA) gateways and allow services to be created on these Gateway Clusters. A Gateway Cluster can be created with a ProtectionType of Active/Standby (1:1). This is a configuration in which two Endpoints are created. One Endpoint is the active host for a service or services, the other is in standby and will take over if the active Endpoint goes offline. The Gateway Cluster create requires the EndpointType parameter similar to Endpoints and will create endpoints of that type.


Listing Gateway Clusters

A GET request lists all of the Gateway Clusters for a network. ==== Example request

$ curl 'http://localhost:8080/networks/4dd185b2-0219-4848-9ad7-813cb370498f/gatewayClusters' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.gatewayClusters

Array

An array of GatewayCluster resources

_links

Object

Links to other resources

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: 1760187a98f9d87f
Content-Type: application/json;charset=UTF-8
Content-Length: 1517

{
  "_embedded" : {
    "gatewayClusters" : [ {
      "status" : 0,
      "protectionType" : "1:1",
      "protectionGroupId" : "GatewayCluster01",
      "endpointType" : "GW",
      "createdAt" : "2019-05-21T04:46:10.865+0000",
      "updatedAt" : "2019-05-21T14:46:10.865+0000",
      "name" : "GatewayCluster01",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/4dd185b2-0219-4848-9ad7-813cb370498f/gatewayClusters/6d57edfa-db58-427c-8ccc-42d9786f4a55"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/4dd185b2-0219-4848-9ad7-813cb370498f"
        }
      }
    }, {
      "status" : 0,
      "protectionType" : "1:1",
      "protectionGroupId" : "GatewayCluster01",
      "endpointType" : "GW",
      "createdAt" : "2019-05-21T04:46:10.865+0000",
      "updatedAt" : "2019-05-21T14:46:10.865+0000",
      "name" : "GatewayCluster01",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/4dd185b2-0219-4848-9ad7-813cb370498f/gatewayClusters/483224ce-115b-4e68-a76d-6692449c2009"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/4dd185b2-0219-4848-9ad7-813cb370498f"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "http://localhost:8080/networks/4dd185b2-0219-4848-9ad7-813cb370498f/gatewayClusters?page=1,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching a Gateway Cluster

A GET request fetches a specific Gateway Cluster. ==== Example request

$ curl 'http://localhost:8080/networks/84a1fd7a-8ff4-43ee-9a8c-af1a1cf44bd9/gatewayClusters/1666dfa0-c9d1-4fde-b04e-88b82e640416' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The gatewayCluster’s name

endpointType

String

The gatewayCluster’s endpoint’s types

protectionType

String

The gatewayCluster’s protection type((1:1(active-standby),round-robin

protectionGroupId

String

The assigned protection group Id for the gatewayCluster

status

Number

Provisioning status of the gatewayCluster

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 07d235b097f3c5ca
Content-Type: application/json;charset=UTF-8
Content-Length: 531

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "createdAt" : "2019-05-21T04:46:10.815+0000",
  "updatedAt" : "2019-05-21T14:46:10.815+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/84a1fd7a-8ff4-43ee-9a8c-af1a1cf44bd9/gatewayClusters/1666dfa0-c9d1-4fde-b04e-88b82e640416"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/84a1fd7a-8ff4-43ee-9a8c-af1a1cf44bd9"
    }
  }
}


Creating a Gateway Cluster

A POST request creates a Gateway Cluster on a specific network.

When creating aGateway Cluster, either a GeoRegion Id or a DataCenter Id needs to be supplied. If you are creating public hosted endpoints in a Gateway Cluster (endpointType: GW) then a dataCenterId must be specified otherwise you will specify a geoRegionId. ==== Example request

$ curl 'http://localhost:8080/networks/79f5b086-c171-4859-b72e-1e580bff5780/gatewayClusters' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test GatewayCluster 01",
  "protectionType" : "1:1",
  "endpointId" : null,
  "endpointType" : "VCPEGW",
  "geoRegionId" : "15095af7-689e-46c5-95bf-2772116a65c0",
  "dataCenterId" : null,
  "protectionGroupId" : "HAGWCluster"
}'
Path Type Description

name

String

The network’s name

endpointId

Null

The id of a non-ha endpoint to consume as a member of the GatewayCluster being created. Either endpointId or endpoint creation information (endpointType, geoRegionId, datacenterId) are required, but not both.

endpointType

String

The type of endpoints to create for the GatewayCluster. One of 'CL (Client)', 'GW (Hosted Public Gateway)', 'AWSCPEGW (AWS Private Gateway)', 'VCPEGW (V-CPE Gateway)'. Required if endpointId is not specified.

geoRegionId

String

GeoRegion ID for clients and non-hosted gateways

dataCenterId

Null

DataCenter ID for 'GW' type hosted endpoints

protectionGroupId

String

ProtectionGroupId same as gatewayCluster Name.

protectionType

String

Protection Type. One of '1:1', 'round-robin' (not supported yet).

Example response

Path Type Description

name

String

The GatewayCluster’s name

endpointType

String

The gatewayCluster’s endpoint’s types

protectionType

String

The gatewayCluster’s protection type((1:1(active-standby),round-robin

protectionGroupId

String

The assigned protection group Id for the gatewayCluster

status

Number

Provisioning status of the gatewayCluster

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 8e61cc938eebf710
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 531

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "createdAt" : "2019-05-21T04:46:10.778+0000",
  "updatedAt" : "2019-05-21T14:46:10.778+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/79f5b086-c171-4859-b72e-1e580bff5780/gatewayClusters/4cd1a815-0fa8-42b9-87cf-8d8a5749bdc6"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/79f5b086-c171-4859-b72e-1e580bff5780"
    }
  }
}


Updating a Gateway Cluster

A PUT request updates a Gateway Cluster on a specific network. ==== Example request

$ curl 'http://localhost:8080/networks/b3c86c92-bd6e-46cc-ae33-7b0c440fc9ad/gatewayClusters/9d406715-214f-456b-b1cd-350cfb7de854' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test GatewayCluster 01 New Name"
}'

Example response

Path Type Description

name

String

The GatewayCluster’s name

endpointType

String

The gatewayCluster’s endpoint’s types

protectionType

String

The gatewayCluster’s protection type((1:1(active-standby),round-robin

protectionGroupId

String

The assigned protection group Id for the gatewayCluster

status

Number

Provisioning status of the gatewayCluster

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 1a77d1a2c46c339d
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 531

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "createdAt" : "2019-05-21T04:46:10.740+0000",
  "updatedAt" : "2019-05-21T14:46:10.740+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/b3c86c92-bd6e-46cc-ae33-7b0c440fc9ad/gatewayClusters/9d406715-214f-456b-b1cd-350cfb7de854"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/b3c86c92-bd6e-46cc-ae33-7b0c440fc9ad"
    }
  }
}


Deleting a Gateway Cluster

A DELETE request deletes a Gateway Cluster on a specific network.

Example request

$ curl 'http://localhost:8080/networks/2111fbe6-2ca2-431d-9382-7155ca1ba366/gatewayClusters/d9634fe6-aec7-43cd-9a57-44fbca19c9d2' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 7f57f51408e474cd


Azure Virtual Wan Site

The Azure Virtual Wan Site resource


Listing Azure Virtual Wan Sites

A GET request lists all of the Azure Virtual Wan Sites.

Example request

$ curl 'http://localhost:8080/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' -i -H 'NF-OrganizationId: 6f8b1a57-8324-4650-b321-7e712692e11e' -H 'Accept: application/json'

Example response

Path Type Description

_embedded.azureSubscriptions

Array

An array of Azure Subsription resources

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: a96a5e0995ce3879
Content-Type: application/json;charset=UTF-8
Content-Length: 1361

{
  "_embedded" : {
    "azureSubscriptions" : [ {
      "name" : "AZ Sub 01",
      "subscriptionId" : "97199243-6214-4f35-b365-6c8c40839411",
      "tenantId" : "916aea73-595c-4e73-800b-57efe75be2e0",
      "applicationId" : "3c812f95-33e5-48d2-b8d7-9cff8854dbaf",
      "applicationKey" : "b51e62aa-d57e-460f-b4c2-76df3645f771",
      "organizationId" : "5ecdc771-1c47-47a2-9001-cf098bb4a910",
      "createdAt" : "2019-05-21T04:45:44.678+0000",
      "updatedAt" : "2019-05-21T14:45:44.678+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/azureSubscriptions/77df6d20-a1fd-4443-b742-081d408aaaf6"
        }
      }
    }, {
      "name" : "AZ Sub 02",
      "subscriptionId" : "c8efc56a-b5bb-409c-ba7c-344b0a8552c5",
      "tenantId" : "54c0efe3-9e76-4b37-b8a9-09a6ce483442",
      "applicationId" : "a5381055-b3c7-436b-af7f-21f3a8811391",
      "applicationKey" : "658255bd-02a7-4eb4-b5cf-181477d07193",
      "organizationId" : "e69dfc05-81f7-47d6-b7ed-5ed23802fdd0",
      "createdAt" : "2019-05-21T04:45:44.679+0000",
      "updatedAt" : "2019-05-21T14:45:44.679+0000",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/azureSubscriptions/da41e0d1-cada-4ad5-9598-fe0bdeb6f504"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "/azureSubscriptions"
    }
  }
}


Creating an Azure Virtual Wan Site

A POST request creates an Azure Subscription.

Request Fields

Path Type Description

name

String

The Virtual Wan Site’s name

endpointId

String

The ID of the endpoint gateway the site is on

dataCenterId

String

The NetFoundry ID of the azure datacenter where the Virtual Wan Site will connect

azureSubscriptionId

Null

The azure subscription id

azureResourceGroupName

String

The resource group for the Virtual Wan Site

azureVirtualWanId

String

The name of the Virtual WAN this site will be on

publicIpAddress

String

The public IP Address for the Virtual Wan Site

bgp

Object

Optional configuration. Present if BGP is enabled for the Virtual Wan Site

bgp.localPeeringAddress.ipAddress

String

Local peering ip address.

bgp.localPeeringAddress.asn

Number

Local peering ASN.

bgp.bgpPeerWeight

Null

Peer weight for BGP

bgp.deviceLinkSpeed

Null

Speed of device link

bgp.deviceVendor

Null

Vendor of device

bgp.deviceModel

Null

Model of device

bgp.neighborPeers[].ipAddress

String

BGP LAN neighbor ip address.

bgp.neighborPeers[].asn

Number

BGP LAN neighbor ASN.

bgp.advertiseLocal

Boolean

true to advertise local.

bgp.advertisedPrefixes

Array

The private IP Address spaces.

Example CURL request

$ curl 'http://localhost:8080/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' -i -X POST -H 'Content-Type: application/json' -H 'NF-OrganizationId: fbd20964-86e3-4e9f-8dff-fcd9b305b050' -d '{
  "name" : "azsite01",
  "endpointId" : "da0308bc-d522-464e-b00a-5de243ec7a36",
  "dataCenterId" : "c9c7b46f-c28d-4eb2-ba10-33673cadd989",
  "azureSubscriptionId" : null,
  "azureResourceGroupName" : "resourceGroup01",
  "azureVirtualWanId" : "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualWANs/wan1",
  "publicIpAddress" : "8.8.8.8",
  "bgp" : {
    "localPeeringAddress" : {
      "ipAddress" : "192.168.0.1",
      "asn" : 64515
    },
    "bgpPeerWeight" : null,
    "deviceLinkSpeed" : null,
    "deviceVendor" : null,
    "deviceModel" : null,
    "neighborPeers" : [ {
      "ipAddress" : "192.168.0.2",
      "asn" : 64513
    }, {
      "ipAddress" : "192.168.0.3",
      "asn" : 64514
    } ],
    "advertiseLocal" : true,
    "advertisedPrefixes" : [ "10.0.0.0/24" ]
  }
}'

Example HTTP request

POST /azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites HTTP/1.1
Content-Type: application/json
NF-OrganizationId: fbd20964-86e3-4e9f-8dff-fcd9b305b050
Host: localhost:8080
Content-Length: 814

{
  "name" : "azsite01",
  "endpointId" : "da0308bc-d522-464e-b00a-5de243ec7a36",
  "dataCenterId" : "c9c7b46f-c28d-4eb2-ba10-33673cadd989",
  "azureSubscriptionId" : null,
  "azureResourceGroupName" : "resourceGroup01",
  "azureVirtualWanId" : "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualWANs/wan1",
  "publicIpAddress" : "8.8.8.8",
  "bgp" : {
    "localPeeringAddress" : {
      "ipAddress" : "192.168.0.1",
      "asn" : 64515
    },
    "bgpPeerWeight" : null,
    "deviceLinkSpeed" : null,
    "deviceVendor" : null,
    "deviceModel" : null,
    "neighborPeers" : [ {
      "ipAddress" : "192.168.0.2",
      "asn" : 64513
    }, {
      "ipAddress" : "192.168.0.3",
      "asn" : 64514
    } ],
    "advertiseLocal" : true,
    "advertisedPrefixes" : [ "10.0.0.0/24" ]
  }
}

Example HTTPie request

$ echo '{
  "name" : "azsite01",
  "endpointId" : "da0308bc-d522-464e-b00a-5de243ec7a36",
  "dataCenterId" : "c9c7b46f-c28d-4eb2-ba10-33673cadd989",
  "azureSubscriptionId" : null,
  "azureResourceGroupName" : "resourceGroup01",
  "azureVirtualWanId" : "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualWANs/wan1",
  "publicIpAddress" : "8.8.8.8",
  "bgp" : {
    "localPeeringAddress" : {
      "ipAddress" : "192.168.0.1",
      "asn" : 64515
    },
    "bgpPeerWeight" : null,
    "deviceLinkSpeed" : null,
    "deviceVendor" : null,
    "deviceModel" : null,
    "neighborPeers" : [ {
      "ipAddress" : "192.168.0.2",
      "asn" : 64513
    }, {
      "ipAddress" : "192.168.0.3",
      "asn" : 64514
    } ],
    "advertiseLocal" : true,
    "advertisedPrefixes" : [ "10.0.0.0/24" ]
  }
}' | http POST 'http://localhost:8080/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' 'Content-Type:application/json' 'NF-OrganizationId:fbd20964-86e3-4e9f-8dff-fcd9b305b050'

Example response

Response Fields

Path Type Description

name

String

The Virtual Wan Site’s name

azureResourceGroupName

String

The resource group for the Virtual Wan Site

azureId

String

The Resource URL in Azure for the Virtual Wan Site

azureSubscriptionId

Null

The id of the azure subscription that the AVW Site is linked to.

azureVirtualWanId

String

The Resource URL for the Virtual Wan for the Virtual Wan Site

azureVirtualWanName

String

The name of the Virtual Wan for the Virtual Wan Site

preSharedKey

Null

The NetFoundry internal Pre-shared key for IP Sec registration

ipSecResponder01

Null

The first IP address for the Azure Virtual Wan Site

ipSecResponder02

Null

The second IP address for the Azure Virtual Wan Site

publicIpAddress

String

The public IP Address for the Virtual Wan Site

advertisedPrefixes

Null

The private IP Address space

bgp

Boolean

Is BGP enabled for the Virtual Wan Site

bgpPeeringAddress

Null

Peering address for BGP if enabled

bgpASN

Null

ASN for BGP if enabled

bgpPeerWeight

Null

Peer weight for BGP if enabled

deviceLinkSpeed

Number

Speed of device link

deviceVendor

Null

Vendor of device

deviceModel

Null

Model of device

neighborPeers

Null

BGP LAN neighbors ip address and ASN.

advertiseLocal

Boolean

true to advertise local.

status

Number

Current status of the Virtual Wan Site

deployable

Boolean

Boolean flag, true if this avw site can be deployed

createdAt

Null

Record creation time

updatedAt

Null

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: ba3f58d037a6a6c3
Content-Type: application/json;charset=UTF-8
Content-Length: 1516

{
  "azureId" : "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/vpnSites/azsite01?api-version=2018-04-01",
  "azureSubscriptionId" : null,
  "azureResourceGroupName" : "resourceGroup01",
  "azureVirtualWanId" : "/subscriptions/subid/resourceGroups/rg1/providers/Microsoft.Network/virtualWANs/wan1",
  "publicIpAddress" : "8.8.8.8",
  "bgp" : false,
  "bgpPeeringAddress" : null,
  "bgpASN" : null,
  "bgpPeerWeight" : null,
  "deviceLinkSpeed" : 0,
  "deviceVendor" : null,
  "deviceModel" : null,
  "neighborPeers" : null,
  "advertiseLocal" : true,
  "advertisedPrefixes" : null,
  "preSharedKey" : null,
  "ipSecResponder01" : null,
  "ipSecResponder02" : null,
  "status" : 0,
  "createdAt" : null,
  "updatedAt" : null,
  "name" : "azsite01",
  "deployable" : false,
  "azureVirtualWanName" : "wan1",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/aa58212b-7f6f-407f-811b-be1d85c67a3a"
    },
    "dataCenter" : {
      "href" : "http://localhost:8088/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/aa58212b-7f6f-407f-811b-be1d85c67a3a/dataCenter"
    },
    "endpoint" : {
      "href" : "http://localhost:8088/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/aa58212b-7f6f-407f-811b-be1d85c67a3a/endpoint"
    },
    "azureSubscription" : {
      "href" : "http://localhost:8088/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59"
    }
  }
}


Deleting an Azure Virtual Wan Site

A DELETE request deletes an Azure Virtual Wan Site.

Example request

$ curl 'http://localhost:8080/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/59d56d69-1de0-4906-a160-456e3575d47f' -i -X DELETE -H 'Content-Type: application/json' -H 'NF-OrganizationId: ad26b4b1-04ef-4a0b-860d-c71e56d838bb'

Example response

HTTP/1.1 202 Accepted


Endpoint Group

The Endpoint Group resource is used to create, modify and list endpoint groups for a Network.


Listing endpoint groups

A GET request lists all of the endpoint groups for a network. ==== Example request

$ curl 'http://localhost:8080/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/endpointGroups' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.endpointGroups

Array

An array of Endpoint Group resources

_links

Object

Links to other resources

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: fa9594a1a5099b51
Content-Type: application/json;charset=UTF-8
Content-Length: 1622

{
  "_embedded" : {
    "endpointGroups" : [ {
      "createdAt" : "2019-05-21T04:46:16.099+0000",
      "updatedAt" : "2019-05-21T14:46:16.099+0000",
      "name" : "Endpoint Group 01",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/endpointGroups/a328d716-5bcd-4e4c-be80-fa5336563499"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d"
        },
        "endpoints" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/endpointGroups/a328d716-5bcd-4e4c-be80-fa5336563499/endpoints"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:46:16.099+0000",
      "updatedAt" : "2019-05-21T14:46:16.099+0000",
      "name" : "Endpoint Group 02",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/endpointGroups/fb1083e6-8e23-46ee-a20b-66a863a9a231"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d"
        },
        "endpoints" : {
          "href" : "http://localhost:8088/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/endpointGroups/fb1083e6-8e23-46ee-a20b-66a863a9a231/endpoints"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "http://localhost:8080/networks/72bc57f1-b54c-4d23-a4f2-8b671dd6d69d/appWans?page=1,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching an endpoint group

A GET request fetches a specific network. ==== Example request

$ curl 'http://localhost:8080/networks/a4c421d7-0103-489d-ae15-713a5f3ee0d8/endpointGroups/0d34ac18-639f-419f-a6ee-d82b22309e3c' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The endpoint’s name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 7fd06abc913eb5c4
Content-Type: application/json;charset=UTF-8
Content-Length: 597

{
  "createdAt" : "2019-05-21T04:46:16.011+0000",
  "updatedAt" : "2019-05-21T14:46:16.011+0000",
  "name" : "Test Endpoint Group 01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/a4c421d7-0103-489d-ae15-713a5f3ee0d8/endpointGroups/0d34ac18-639f-419f-a6ee-d82b22309e3c"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/a4c421d7-0103-489d-ae15-713a5f3ee0d8"
    },
    "endpoints" : {
      "href" : "http://localhost:8088/networks/a4c421d7-0103-489d-ae15-713a5f3ee0d8/endpointGroups/0d34ac18-639f-419f-a6ee-d82b22309e3c/endpoints"
    }
  }
}


Creating an endpoint group

A POST request creates an endpoint group on a specific network.

Example request

$ curl 'http://localhost:8080/networks/15a805fd-9497-4edf-8309-699c57130641/endpointGroups' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint Group 01"
}'

Example response

Path Type Description

name

String

The Endpoint Group name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 201 Created
X-B3-TraceId: add97bd851a80a61
Content-Type: application/json;charset=UTF-8
Content-Length: 597

{
  "createdAt" : "2019-05-21T04:46:16.080+0000",
  "updatedAt" : "2019-05-21T14:46:16.080+0000",
  "name" : "Test Endpoint Group 01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/15a805fd-9497-4edf-8309-699c57130641/endpointGroups/60d75886-2847-456d-8cf7-887f99cdc86a"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/15a805fd-9497-4edf-8309-699c57130641"
    },
    "endpoints" : {
      "href" : "http://localhost:8088/networks/15a805fd-9497-4edf-8309-699c57130641/endpointGroups/60d75886-2847-456d-8cf7-887f99cdc86a/endpoints"
    }
  }
}


Updating an endpoint group

A PUT request updates an endpoint group on a specific network.

Example request

$ curl 'http://localhost:8080/networks/b49c8be3-96ff-4400-9c06-a3f8f9cbba8e/endpointGroups/226bbc4d-fdd1-41a0-9965-81de1e539d76' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint Group 01 - Updated"
}'

Example response

Path Type Description

name

String

The Endpoint Group name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 3fdc4c3063e1fb77
Content-Type: application/json;charset=UTF-8
Content-Length: 607

{
  "createdAt" : "2019-05-21T04:46:16.041+0000",
  "updatedAt" : "2019-05-21T14:46:16.041+0000",
  "name" : "Test Endpoint Group 01 - Updated",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/b49c8be3-96ff-4400-9c06-a3f8f9cbba8e/endpointGroups/226bbc4d-fdd1-41a0-9965-81de1e539d76"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/b49c8be3-96ff-4400-9c06-a3f8f9cbba8e"
    },
    "endpoints" : {
      "href" : "http://localhost:8088/networks/b49c8be3-96ff-4400-9c06-a3f8f9cbba8e/endpointGroups/226bbc4d-fdd1-41a0-9965-81de1e539d76/endpoints"
    }
  }
}

Deleting an endpoint group

A DELETE request deletes an endpoint group on a specific network.

Example request

$ curl 'http://localhost:8080/networks/f2d91f63-054a-4414-a924-0c0e750b249b/endpointGroups/0acf68cf-375d-4a30-9ec7-75005c7abe8a' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: c862ba8d85dfc261

Adding endpoints to an endpoint group

A POST request adds the list of endpoints to an endpoint group on a specific network.

Example request

$ curl 'http://localhost:8080/networks/8472671d-730f-4132-972d-6e1c083f59e2/endpointGroups/8cdd9e7c-73a3-4d9e-a0b6-461400f5b6c7/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "758b53be-3261-4f48-9a0f-b8c75c6e65f5", "d03ebaa2-0a0d-49ad-83ea-7f49b048dd1f" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 49a1dbdd5744ab9f
Content-Type: application/json;charset=UTF-8
Content-Length: 597

{
  "createdAt" : "2019-05-21T04:46:15.977+0000",
  "updatedAt" : "2019-05-21T14:46:15.977+0000",
  "name" : "Test Endpoint Group 01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/8472671d-730f-4132-972d-6e1c083f59e2/endpointGroups/8cdd9e7c-73a3-4d9e-a0b6-461400f5b6c7"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/8472671d-730f-4132-972d-6e1c083f59e2"
    },
    "endpoints" : {
      "href" : "http://localhost:8088/networks/8472671d-730f-4132-972d-6e1c083f59e2/endpointGroups/8cdd9e7c-73a3-4d9e-a0b6-461400f5b6c7/endpoints"
    }
  }
}

Removing endpoints from an endpoint group

A DELETE request removes the list of endpoints from an endpoint group on a specific network.

Example request

$ curl 'http://localhost:8080/networks/01c14bfe-2506-408f-94ba-05af6da93017/endpointGroups/32623510-6c85-4845-830c-764df438369b/endpoints' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "96d4e422-6bab-4c69-a69e-de4799b8dbdd" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: df53a42021a3dcf0
Content-Type: application/json;charset=UTF-8
Content-Length: 597

{
  "createdAt" : "2019-05-21T04:46:16.064+0000",
  "updatedAt" : "2019-05-21T14:46:16.064+0000",
  "name" : "Test Endpoint Group 01",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/01c14bfe-2506-408f-94ba-05af6da93017/endpointGroups/32623510-6c85-4845-830c-764df438369b"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/01c14bfe-2506-408f-94ba-05af6da93017"
    },
    "endpoints" : {
      "href" : "http://localhost:8088/networks/01c14bfe-2506-408f-94ba-05af6da93017/endpointGroups/32623510-6c85-4845-830c-764df438369b/endpoints"
    }
  }
}


Service

The Service resource is used to create, modify and list services for a Network. Service types have differing POST signatures for their required fields but are persisted in the same general type. Responses for all Service types will be the full service object.


Listing Services paginated

A GET request returns a paged representation all of the Services for a network. ==== Example request

$ curl 'http://localhost:8080/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/services?page=0&size=10&sort=name,asc' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.services

Array

An array of Service resources

_links

Object

Links to other resources and pages

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: d02e5e378f0243f1
Content-Type: application/json;charset=UTF-8
Content-Length: 4232

{
  "_embedded" : {
    "services" : [ {
      "serviceClass" : "CS",
      "serviceInterceptType" : "IP",
      "serviceType" : "ALL",
      "lowLatency" : "YES",
      "dataInterleaving" : "NO",
      "transparency" : "NO",
      "localNetworkGateway" : null,
      "multicast" : "OFF",
      "dnsOptions" : "NONE",
      "icmpTunnel" : "YES",
      "cryptoLevel" : "STRONG",
      "permanentConnection" : "NO",
      "collectionLocation" : "BOTH",
      "pbrType" : "WAN",
      "rateSmoothing" : "YES",
      "networkIp" : "10.10.20.145",
      "networkNetmask" : null,
      "networkFirstPort" : 443,
      "networkLastPort" : 443,
      "interceptIp" : "1.1.1.1",
      "interceptDnsHostname" : null,
      "interceptDnsPort" : 0,
      "interceptFirstPort" : 443,
      "interceptLastPort" : 443,
      "gatewayIp" : null,
      "gatewayCidrBlock" : 0,
      "netflowIndex" : 0,
      "profileIndex" : 0,
      "o365Conflict" : false,
      "status" : 0,
      "protectionGroupId" : null,
      "portInterceptMode" : null,
      "interceptIncludePorts" : null,
      "interceptExcludePorts" : null,
      "createdAt" : "2019-05-21T04:45:50.043+0000",
      "updatedAt" : "2019-05-21T14:45:50.043+0000",
      "name" : "Service 01",
      "interceptPorts" : {
        "include" : [ ],
        "exclude" : [ ]
      },
      "gatewayNetmask" : "",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/services/1614f35f-e81f-413a-bcb1-d3314d8eac00"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b"
        },
        "endpoint" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/endpoints/45449419-d381-4c54-bae3-9c950d84c73c"
        },
        "appWans" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/endpoints/45449419-d381-4c54-bae3-9c950d84c73c/appWans"
        }
      }
    }, {
      "serviceClass" : "GW",
      "serviceInterceptType" : "IP",
      "serviceType" : "ALL",
      "lowLatency" : "YES",
      "dataInterleaving" : "NO",
      "transparency" : "NO",
      "localNetworkGateway" : "YES",
      "multicast" : "OFF",
      "dnsOptions" : "NONE",
      "icmpTunnel" : "YES",
      "cryptoLevel" : "STRONG",
      "permanentConnection" : "NO",
      "collectionLocation" : "BOTH",
      "pbrType" : "WAN",
      "rateSmoothing" : "YES",
      "networkIp" : null,
      "networkNetmask" : null,
      "networkFirstPort" : 0,
      "networkLastPort" : 0,
      "interceptIp" : "1.2.3.4",
      "interceptDnsHostname" : null,
      "interceptDnsPort" : 0,
      "interceptFirstPort" : 0,
      "interceptLastPort" : 0,
      "gatewayIp" : "10.11.12.13",
      "gatewayCidrBlock" : 24,
      "netflowIndex" : 0,
      "profileIndex" : 0,
      "o365Conflict" : false,
      "status" : 0,
      "protectionGroupId" : null,
      "portInterceptMode" : "INTERCEPT_ALL",
      "interceptIncludePorts" : "22-22",
      "interceptExcludePorts" : "80-80",
      "createdAt" : "2019-05-21T04:45:50.044+0000",
      "updatedAt" : "2019-05-21T14:45:50.044+0000",
      "name" : "Service 02",
      "interceptPorts" : {
        "include" : [ {
          "first" : 22,
          "last" : 22
        } ],
        "exclude" : [ {
          "first" : 80,
          "last" : 80
        } ]
      },
      "gatewayNetmask" : "255.255.255.0",
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/services/5effdfed-2a73-400f-85c5-eaae6d02f08c"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b"
        },
        "endpoint" : {
          "href" : "http://localhost:8088/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/endpoints/45449419-d381-4c54-bae3-9c950d84c73c"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/networks/9aa9d3c7-a19e-4bca-a885-2ddc4f36542b/services?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing services

A GET request lists all of the services for a network. ==== Example request Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-services-for-network/curl-request.adoc[] ==== Example response Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-services-for-network/response-fields.adoc[] Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-services-for-network/http-response.adoc[]


Fetching a Service

A GET request fetches a specific network.

Example request

$ curl 'http://localhost:8080/networks/05202d35-04bc-495c-ac8b-1db2ff9320b4/services/df6b001b-bb81-418d-b554-66d15a2fb3a5' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The service’s name

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

lowLatency

String

Low latency service setting

dataInterleaving

String

Data interleaving service setting

transparency

String

Transparency setting

localNetworkGateway

Null

Boolean for local network gateway activation

multicast

String

Multicast setting

dnsOptions

String

DNS Service Options

icmpTunnel

String

Allow ICMP tunneling

cryptoLevel

String

Cryptographic level

permanentConnection

String

Is this a permanent connection

collectionLocation

String

Location to send collection data to

pbrType

String

PBR Type

rateSmoothing

String

Rate smoothing active

networkIp

String

Network IP

networkNetmask

Null

Network Netmask

networkFirstPort

Number

First network port in range

networkLastPort

Number

Last network port in range

interceptIp

String

Intercept IP

interceptDnsHostname

Null

Ziti Fabric DNS Intercept hostname

interceptDnsPort

Number

Ziti Fabric DNS Intercept port

interceptFirstPort

Number

First intercept port in range

interceptLastPort

Number

Last intercept port in range

gatewayIp

Null

Gateway IP

gatewayNetmask

String

Gateway Netmask

gatewayCidrBlock

Number

Gateway CIDR Block

netflowIndex

Number

Netwflow index

profileIndex

Number

Profile index

protectionGroupId

Null

Protection Group Id

portInterceptMode

Null

Intercept Mode of intercept_all or specific_ports

interceptPorts

Object

Applicable to IP network service map containingsets for include[] and exclude[] keys of first and last for sets of ports ex. first 22 last 25

interceptIncludePorts

Null

Intercept these ports

interceptExcludePorts

Null

Do not intercept these ports

o365Conflict

Boolean

For Azure customers, is this service address space in conflict

status

Number

Provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: eeed80fdc7711166
Content-Type: application/json;charset=UTF-8
Content-Length: 1756

{
  "serviceClass" : "CS",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "lowLatency" : "YES",
  "dataInterleaving" : "NO",
  "transparency" : "NO",
  "localNetworkGateway" : null,
  "multicast" : "OFF",
  "dnsOptions" : "NONE",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "WAN",
  "rateSmoothing" : "YES",
  "networkIp" : "10.10.20.145",
  "networkNetmask" : null,
  "networkFirstPort" : 443,
  "networkLastPort" : 443,
  "interceptIp" : "1.1.1.1",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 443,
  "interceptLastPort" : 443,
  "gatewayIp" : null,
  "gatewayCidrBlock" : 0,
  "netflowIndex" : 0,
  "profileIndex" : 0,
  "o365Conflict" : false,
  "status" : 0,
  "protectionGroupId" : null,
  "portInterceptMode" : null,
  "interceptIncludePorts" : null,
  "interceptExcludePorts" : null,
  "createdAt" : "2019-05-21T04:45:49.791+0000",
  "updatedAt" : "2019-05-21T14:45:49.791+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ ],
    "exclude" : [ ]
  },
  "gatewayNetmask" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/05202d35-04bc-495c-ac8b-1db2ff9320b4/services/df6b001b-bb81-418d-b554-66d15a2fb3a5"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/05202d35-04bc-495c-ac8b-1db2ff9320b4"
    },
    "endpoint" : {
      "href" : "http://localhost:8088/networks/05202d35-04bc-495c-ac8b-1db2ff9320b4/endpoints/91662b9d-c139-4ecf-ac46-924ade6d8140"
    },
    "appWans" : {
      "href" : "http://localhost:8088/networks/05202d35-04bc-495c-ac8b-1db2ff9320b4/endpoints/91662b9d-c139-4ecf-ac46-924ade6d8140/appWans"
    }
  }
}


Creating an IP Host Service

A POST request creates an IP Host Service on a specific network.

When creating an IP Host Service, either an endpointId or a gatewayClusterId (for High Availability) needs to be supplied.

Example request

Path Type Description

name

String

The Service’s name

endpointId

String

Optional.(either endpointId or gatewayClusterId) UUID of endpoint to register Service on

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

networkIp

String

Network IP

networkFirstPort

Number

First network port in range

networkLastPort

Number

Last network port in range

interceptIp

String

Intercept IP

interceptFirstPort

Number

First intercept port in range

interceptLastPort

Number

Last intercept port in range

interceptDnsHostname

Null

Ziti Fabric DNS Intercept hostname

interceptDnsPort

Number

Ziti Fabric DNS Intercept port

lowLatency

String

Optional. Low latency service setting

dataInterleaving

String

Optional. Data interleaving service setting

transparency

String

Optional. Transparency setting

multicast

String

Optional. Multicast setting

dnsOptions

String

Optional. DNS Service Options

icmpTunnel

String

Optional. Allow ICMP tunneling

cryptoLevel

String

Optional. Cryptographic level

permanentConnection

String

Optional. Is this a permanent connection

collectionLocation

String

Optional. Location to send collection data to

pbrType

String

Optional. PBR Type

rateSmoothing

String

Optional. Rate smoothing active

netflowIndex

Number

Optional. Netwflow index

profileIndex

Number

Optional. Profile index

gatewayClusterId

Null

Optional.(either endpointId or gatewayClusterId) HA GW Cluster Id

$ curl 'http://localhost:8080/networks/2e2d254a-b3c1-4d91-aad5-1e4d79a85785/services' -i -X POST -H 'Content-Type: application/json' -d '{
  "serviceClass" : "GW",
  "name" : "Test Client Service 01",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "endpointId" : "958e7849-53cd-4173-894a-d6e168fd741d",
  "lowLatency" : "YES",
  "dataInterleaving" : "YES",
  "transparency" : "NO",
  "multicast" : "ON",
  "dnsOptions" : "TUNNELING",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "ALL",
  "rateSmoothing" : "NO",
  "netflowIndex" : -1,
  "profileIndex" : -1,
  "gatewayClusterId" : null,
  "networkIp" : "1.2.3.4",
  "networkFirstPort" : 443,
  "networkLastPort" : 445,
  "interceptIp" : "1.1.1.1",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 443,
  "interceptLastPort" : 445
}'

Example response

Path Type Description

name

String

The service’s name

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

lowLatency

String

Low latency service setting

dataInterleaving

String

Data interleaving service setting

transparency

String

Transparency setting

localNetworkGateway

Null

Boolean for local network gateway activation

multicast

String

Multicast setting

dnsOptions

String

DNS Service Options

icmpTunnel

String

Allow ICMP tunneling

cryptoLevel

String

Cryptographic level

permanentConnection

String

Is this a permanent connection

collectionLocation

String

Location to send collection data to

pbrType

String

PBR Type

rateSmoothing

String

Rate smoothing active

networkIp

String

Network IP

networkNetmask

Null

Network Netmask

networkFirstPort

Number

First network port in range

networkLastPort

Number

Last network port in range

interceptIp

String

Intercept IP

interceptFirstPort

Number

First intercept port in range

interceptLastPort

Number

Last intercept port in range

interceptDnsHostname

Null

Ziti Fabric DNS Intercept hostname

interceptDnsPort

Number

Ziti Fabric DNS Intercept port

gatewayIp

Null

Gateway IP

gatewayNetmask

String

Gateway Netmask

gatewayCidrBlock

Number

Gateway CIDR Block

netflowIndex

Number

Netwflow index

profileIndex

Number

Profile index

protectionGroupId

Null

Protection Group Id

portInterceptMode

Null

Intercept Mode of intercept_all or specific_ports

interceptPorts

Object

Applicable to IP network service map containingsets for include[] and exclude[] keys of first and last for sets of ports ex. first 22 last 25

interceptIncludePorts

Null

Intercept these ports

interceptExcludePorts

Null

Do not intercept these ports

status

Number

Provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 87a3f4f01d59b514
Content-Type: application/json;charset=UTF-8
Content-Length: 1756

{
  "serviceClass" : "CS",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "lowLatency" : "YES",
  "dataInterleaving" : "NO",
  "transparency" : "NO",
  "localNetworkGateway" : null,
  "multicast" : "OFF",
  "dnsOptions" : "NONE",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "WAN",
  "rateSmoothing" : "YES",
  "networkIp" : "10.10.20.145",
  "networkNetmask" : null,
  "networkFirstPort" : 443,
  "networkLastPort" : 443,
  "interceptIp" : "1.1.1.1",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 443,
  "interceptLastPort" : 443,
  "gatewayIp" : null,
  "gatewayCidrBlock" : 0,
  "netflowIndex" : 0,
  "profileIndex" : 0,
  "o365Conflict" : false,
  "status" : 0,
  "protectionGroupId" : null,
  "portInterceptMode" : null,
  "interceptIncludePorts" : null,
  "interceptExcludePorts" : null,
  "createdAt" : "2019-05-21T04:45:49.885+0000",
  "updatedAt" : "2019-05-21T14:45:49.885+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ ],
    "exclude" : [ ]
  },
  "gatewayNetmask" : "",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/2e2d254a-b3c1-4d91-aad5-1e4d79a85785/services/525a1eb6-2f24-4715-b3df-3e7ca133b20b"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/2e2d254a-b3c1-4d91-aad5-1e4d79a85785"
    },
    "endpoint" : {
      "href" : "http://localhost:8088/networks/2e2d254a-b3c1-4d91-aad5-1e4d79a85785/endpoints/d3ff6297-d9d0-4ea7-807e-3fdfaf72f51f"
    },
    "appWans" : {
      "href" : "http://localhost:8088/networks/2e2d254a-b3c1-4d91-aad5-1e4d79a85785/endpoints/d3ff6297-d9d0-4ea7-807e-3fdfaf72f51f/appWans"
    }
  }
}


Creating an IP Network Service

A POST request creates an IP Network Service on a specific network.

When creating an IP Network Service, either an endpointId or a gatewayClusterId (for High Availability) needs to be supplied.

Example request

Path Type Description

name

String

The Service’s name

endpointId

String

Optional.(either endpointId or gatewayClusterId) UUID of endpoint to register Service on

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

gatewayIp

String

Gateway IP

gatewayCidrBlock

Number

CIDR block of the Gateway

interceptIp

String

Intercept IP

lowLatency

String

Optional. Low latency service setting

dataInterleaving

String

Optional. Data interleaving service setting

transparency

String

Optional. Transparency setting

localNetworkGateway

String

Optional. Boolean for local network gateway activation

multicast

String

Optional. Multicast setting

dnsOptions

String

Optional. DNS Service Options

icmpTunnel

String

Optional. Allow ICMP tunneling

cryptoLevel

String

Optional. Cryptographic level

permanentConnection

String

Optional. Is this a permanent connection

collectionLocation

String

Optional. Location to send collection data to

pbrType

String

Optional. PBR Type

rateSmoothing

String

Optional. Rate smoothing active

netflowIndex

Number

Optional. Netflow index

profileIndex

Number

Optional. Profile index

portInterceptMode

String

Optional. Intercept Mode of intercept_all or specific_ports

interceptIncludePorts

String

Optional. If intercept_mode is set to specific_ports,intecept this list of ports made up of collection as described in mappinginterceptPorts which contains sets include and exclude and have keys first and lastexample first:22 last:32 for a range of ports multiple ranges are allowed

interceptExcludePorts

String

Optional. If intercept_mode is set to specific_ports, do not intecept this list of ports made up of collection as described in mappinginterceptPorts which contains sets include and exclude and have keys first and lastexample first:22 last:32 for a range of ports multiple ranges are allowed

gatewayClusterId

Null

Optional.(either endpointId or gatewayClusterId) HA Gateway Cluster Id

$ curl 'http://localhost:8080/networks/92de0af2-bc07-48f8-9066-5779734547cb/services' -i -X POST -H 'Content-Type: application/json' -d '{
  "serviceClass" : "GW",
  "name" : "Test IP Network Service 01",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "endpointId" : "958e7849-53cd-4173-894a-d6e168fd741d",
  "lowLatency" : "YES",
  "dataInterleaving" : "YES",
  "transparency" : "YES",
  "multicast" : "ON",
  "dnsOptions" : "TUNNELING",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "ALL",
  "rateSmoothing" : "NO",
  "netflowIndex" : -1,
  "profileIndex" : -1,
  "gatewayClusterId" : null,
  "interceptIp" : "1.2.3.4",
  "gatewayIp" : "10.11.12.13",
  "gatewayCidrBlock" : 22,
  "localNetworkGateway" : "NO",
  "portInterceptMode" : "INTERCEPT_ALL",
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80"
}'

Example response

Path Type Description

name

String

The service’s name

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

lowLatency

String

Low latency service setting

dataInterleaving

String

Data interleaving service setting

transparency

String

Transparency setting

localNetworkGateway

String

Boolean for local network gateway activation

multicast

String

Multicast setting

dnsOptions

String

DNS Service Options

icmpTunnel

String

Allow ICMP tunneling

cryptoLevel

String

Cryptographic level

permanentConnection

String

Is this a permanent connection

collectionLocation

String

Location to send collection data to

pbrType

String

PBR Type

rateSmoothing

String

Rate smoothing active

networkIp

Null

Network IP

gatewayNetmask

String

Gateway Netmask

networkNetmask

Null

Network Netmask

networkFirstPort

Number

First network port in range

networkLastPort

Number

Last network port in range

interceptIp

String

Intercept IP

interceptFirstPort

Number

First intercept port in range

interceptLastPort

Number

Last intercept port in range

interceptDnsHostname

Null

Ziti Fabric DNS Intercept hostname

interceptDnsPort

Number

Ziti Fabric DNS Intercept port

gatewayIp

String

Gateway IP

gatewayCidrBlock

Number

Gateway CIDR Block

netflowIndex

Number

Netwflow index

profileIndex

Number

Profile index

protectionGroupId

Null

Protection Group Id

portInterceptMode

String

Intercept Mode of intercept_all or specific_ports

interceptPorts

Object

Applicable to IP network service map containingsets for include[] and exclude[] keys of first and last for sets of ports ex. first 22 last 25

interceptIncludePorts

String

Intercept these ports

interceptExcludePorts

String

Do not intercept these ports

status

Number

Provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 6a9c0a97a94f1d7c
Content-Type: application/json;charset=UTF-8
Content-Length: 1706

{
  "serviceClass" : "GW",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "lowLatency" : "YES",
  "dataInterleaving" : "NO",
  "transparency" : "NO",
  "localNetworkGateway" : "YES",
  "multicast" : "OFF",
  "dnsOptions" : "NONE",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "WAN",
  "rateSmoothing" : "YES",
  "networkIp" : null,
  "networkNetmask" : null,
  "networkFirstPort" : 0,
  "networkLastPort" : 0,
  "interceptIp" : "1.2.3.4",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 0,
  "interceptLastPort" : 0,
  "gatewayIp" : "10.11.12.13",
  "gatewayCidrBlock" : 24,
  "netflowIndex" : 0,
  "profileIndex" : 0,
  "o365Conflict" : false,
  "status" : 0,
  "protectionGroupId" : null,
  "portInterceptMode" : "INTERCEPT_ALL",
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-05-21T04:45:50.288+0000",
  "updatedAt" : "2019-05-21T14:45:50.288+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ {
      "first" : 22,
      "last" : 22
    } ],
    "exclude" : [ {
      "first" : 80,
      "last" : 80
    } ]
  },
  "gatewayNetmask" : "255.255.255.0",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/92de0af2-bc07-48f8-9066-5779734547cb/services/5fca9ee6-db66-42b7-83e3-105dd81e73c2"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/92de0af2-bc07-48f8-9066-5779734547cb"
    },
    "endpoint" : {
      "href" : "http://localhost:8088/networks/92de0af2-bc07-48f8-9066-5779734547cb/endpoints/242c3274-6b02-484f-a37c-9667d5b20682"
    }
  }
}


Updating a Service

A PUT request updates a service on a specific network. The request should contain a full Service object.

Example request

$ curl 'http://localhost:8080/networks/501cfb90-de88-46c8-86c4-210f4fc32283/services/605dc94e-a7e9-439c-b9df-5dcf81e7441b' -i -X PUT -H 'Content-Type: application/json' -d '{
  "serviceClass" : "GW",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "lowLatency" : "YES",
  "dataInterleaving" : "NO",
  "transparency" : "NO",
  "localNetworkGateway" : "YES",
  "multicast" : "OFF",
  "dnsOptions" : "NONE",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "WAN",
  "rateSmoothing" : "YES",
  "networkIp" : null,
  "networkNetmask" : null,
  "networkFirstPort" : 0,
  "networkLastPort" : 0,
  "interceptIp" : "1.2.3.4",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 0,
  "interceptLastPort" : 0,
  "gatewayIp" : "10.11.12.13",
  "gatewayCidrBlock" : 24,
  "netflowIndex" : 0,
  "profileIndex" : 0,
  "o365Conflict" : false,
  "status" : 600,
  "protectionGroupId" : null,
  "portInterceptMode" : "INTERCEPT_ALL",
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-05-21T04:45:50.106+0000",
  "updatedAt" : "2019-05-21T14:45:50.106+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ {
      "first" : 22,
      "last" : 22
    } ],
    "exclude" : [ {
      "first" : 80,
      "last" : 80
    } ]
  },
  "gatewayNetmask" : "255.255.255.0"
}'

Example response

Path Type Description

name

String

The service’s name

serviceClass

String

The service class

serviceInterceptType

String

The intercept type

serviceType

String

The type of service

lowLatency

String

Low latency service setting

dataInterleaving

String

Data interleaving service setting

transparency

String

Transparency setting

localNetworkGateway

String

Boolean for local network gateway activation

multicast

String

Multicast setting

dnsOptions

String

DNS Service Options

icmpTunnel

String

Allow ICMP tunneling

cryptoLevel

String

Cryptographic level

permanentConnection

String

Is this a permanent connection

collectionLocation

String

Location to send collection data to

pbrType

String

PBR Type

rateSmoothing

String

Rate smoothing active

networkIp

Null

Network IP

networkNetmask

Null

Network Netmask

networkFirstPort

Number

First network port in range

networkLastPort

Number

Last network port in range

interceptIp

String

Intercept IP

interceptFirstPort

Number

First intercept port in range

interceptLastPort

Number

Last intercept port in range

interceptDnsHostname

Null

Ziti Fabric DNS Intercept hostname

interceptDnsPort

Number

Ziti Fabric DNS Intercept port

gatewayIp

String

Gateway IP

gatewayNetmask

String

Gateway Netmask

gatewayCidrBlock

Number

Gateway CIDR Block

netflowIndex

Number

Netwflow index

profileIndex

Number

Profile index

protectionGroupId

Null

Protection Group Id

portInterceptMode

String

Intercept Mode of intercept_all or specific_ports

interceptPorts

Object

Applicable to IP network service map containingsets for include[] and exclude[] keys of first and last for sets of ports ex. first 22 last 25

interceptIncludePorts

String

Intercept these ports

interceptExcludePorts

String

Do not intercept these ports

status

Number

Provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: e70651d9c823d17d
Content-Type: application/json;charset=UTF-8
Content-Length: 1708

{
  "serviceClass" : "GW",
  "serviceInterceptType" : "IP",
  "serviceType" : "ALL",
  "lowLatency" : "YES",
  "dataInterleaving" : "NO",
  "transparency" : "NO",
  "localNetworkGateway" : "YES",
  "multicast" : "OFF",
  "dnsOptions" : "NONE",
  "icmpTunnel" : "YES",
  "cryptoLevel" : "STRONG",
  "permanentConnection" : "NO",
  "collectionLocation" : "BOTH",
  "pbrType" : "WAN",
  "rateSmoothing" : "YES",
  "networkIp" : null,
  "networkNetmask" : null,
  "networkFirstPort" : 0,
  "networkLastPort" : 0,
  "interceptIp" : "1.2.3.4",
  "interceptDnsHostname" : null,
  "interceptDnsPort" : 0,
  "interceptFirstPort" : 0,
  "interceptLastPort" : 0,
  "gatewayIp" : "10.11.12.13",
  "gatewayCidrBlock" : 24,
  "netflowIndex" : 0,
  "profileIndex" : 0,
  "o365Conflict" : false,
  "status" : 600,
  "protectionGroupId" : null,
  "portInterceptMode" : "INTERCEPT_ALL",
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-05-21T04:45:50.106+0000",
  "updatedAt" : "2019-05-21T14:45:50.106+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ {
      "first" : 22,
      "last" : 22
    } ],
    "exclude" : [ {
      "first" : 80,
      "last" : 80
    } ]
  },
  "gatewayNetmask" : "255.255.255.0",
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/501cfb90-de88-46c8-86c4-210f4fc32283/services/605dc94e-a7e9-439c-b9df-5dcf81e7441b"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/501cfb90-de88-46c8-86c4-210f4fc32283"
    },
    "endpoint" : {
      "href" : "http://localhost:8088/networks/501cfb90-de88-46c8-86c4-210f4fc32283/endpoints/ca824578-96da-45d6-a640-ba23d344a1e0"
    }
  }
}


Deleting a Service

A DELETE request deletes a service on a specific network.

Example request

$ curl 'http://localhost:8080/networks/ec50a32d-bddd-468a-859d-f75fa568631d/services/ca08eb50-d1b4-4bad-a8a6-571ed3019f27' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 0beea564c4516df2


AppWan

The AppWan resource is used to create, modify and list AppWans for a Network.


Listing AppWans paginated

A GET request returns a paged representation all of the AppWans for a network. ==== Example request

$ curl 'http://localhost:8080/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c/appWans?page=0&size=10&sort=name,asc' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.appWans

Array

An array of AppWan resources

_links

Object

Links to other resources and pages

page

Object

Pagination numbers

HTTP/1.1 200 OK
X-B3-TraceId: c7ef36d23cac1348
Content-Type: application/json;charset=UTF-8
Content-Length: 1255

{
  "_embedded" : {
    "appWans" : [ {
      "createdAt" : "2019-05-21T04:45:59.535+0000",
      "updatedAt" : "2019-05-21T14:45:59.535+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c/appwans/2ae0b838-ae87-46de-a1fa-d8eb65d9e529"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c"
        }
      }
    }, {
      "createdAt" : "2019-05-21T04:45:59.535+0000",
      "updatedAt" : "2019-05-21T14:45:59.535+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "http://localhost:8088/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c/appwans/a4c4749e-3d50-43e3-bd2c-08227761c9ec"
        },
        "network" : {
          "href" : "http://localhost:8088/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "http://localhost:8080/networks/fcc3a577-ff35-4d68-baa8-56925529bf0c/appWans?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing AppWans

A GET request lists all of the AppWans for a network.

Example request

Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-app-wans-for-network/curl-request.adoc[]

Example response

Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-app-wans-for-network/response-fields.adoc[] Unresolved directive in index.adoc - include::/home/jenkins/workspace/Orchestration_release_2.19.0/edge/target/generated-snippets/get-all-app-wans-for-network/http-response.adoc[]


Fetching an AppWan

A GET request fetches a specific AppWan.

Example request

$ curl 'http://localhost:8080/networks/c2a1d5a0-b385-4f62-9423-d9871c7693cc/appWans/c51d3a46-92f1-4265-8fff-ad595a351dc3' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The AppWan’s name

status

Number

Provisioning status of the AppWan

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: a21688f485bff14a
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.701+0000",
  "updatedAt" : "2019-05-21T14:45:59.701+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/c2a1d5a0-b385-4f62-9423-d9871c7693cc/appwans/c51d3a46-92f1-4265-8fff-ad595a351dc3"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/c2a1d5a0-b385-4f62-9423-d9871c7693cc"
    }
  }
}


Creating an AppWan

A POST request creates an AppWan on a specific network.

Example request

Path Type Description

name

String

The AppWan’s name

$ curl 'http://localhost:8080/networks/7f4a7a99-d34d-4862-8a5f-83733d8eeedb/appWans' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test AppWan Create"
}'

Example response

Path Type Description

name

String

The AppWan name

status

Number

AppWan provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: ac28d5bd617bffc3
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.790+0000",
  "updatedAt" : "2019-05-21T14:45:59.790+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/7f4a7a99-d34d-4862-8a5f-83733d8eeedb/appwans/913fb769-8e86-4e3a-9912-3b9063efbf90"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/7f4a7a99-d34d-4862-8a5f-83733d8eeedb"
    }
  }
}


Updating an AppWan

A PUT request updates an AppWan on a specific network.

Example request

Path Type Description

name

String

The AppWan’s name

$ curl 'http://localhost:8080/networks/ee7a8094-66cc-4b92-bef8-e8d2643b8c00/appWans/9995914f-afa6-4e09-b7c6-37b97a19bb9e' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test AppWan Updated",
  "status" : 0
}'

Example response

Path Type Description

name

String

The AppWan name

status

Number

AppWan provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 200 OK
X-B3-TraceId: 3a7015c64a91d9b0
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.563+0000",
  "updatedAt" : "2019-05-21T14:45:59.563+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/ee7a8094-66cc-4b92-bef8-e8d2643b8c00/appwans/9995914f-afa6-4e09-b7c6-37b97a19bb9e"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/ee7a8094-66cc-4b92-bef8-e8d2643b8c00"
    }
  }
}


Adding Endpoints to an AppWan

A POST request adds Endpoints to an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Endpoint UUIDs to add to the AppWan

$ curl 'http://localhost:8080/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c/appWans/ce0e601e-be62-420e-9f25-0cc0c94484ad/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "be78fd01-0dda-4ce1-9445-094e17083f59", "b2ad0504-c123-4db6-84f1-8024dd86ca31" ]
}'

Example response

Path Type Description

name

String

The AppWan name

status

Number

AppWan provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 9e43853dd73d6239
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.623+0000",
  "updatedAt" : "2019-05-21T14:45:59.623+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c/appwans/ce0e601e-be62-420e-9f25-0cc0c94484ad"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c"
    }
  }
}


Remove Endpoints from an AppWan

A DELETE request removes Endpoints from an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Endpoint UUIDs to remove from the AppWan

$ curl 'http://localhost:8080/networks/6bfd5a87-8537-4391-b195-c15da344cdf4/appWans/ab00633f-13e2-4556-b8a4-b3bac936f96f/endpoints' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "e0f1f530-ce46-42ef-a576-360e67f4e1ac", "6ef50ce4-c514-4eb3-b6de-fb63f58928e8" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: a864e9a0c3327ea3


Adding Endpoint Groups to an AppWan

A POST request adds Endpoint Groups to an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Endpoint Group UUIDs to add to the AppWan

$ curl 'http://localhost:8080/networks/a642609c-fa8c-41b2-9fb8-2a232603f9ee/appWans/16e64ae4-fabd-47a3-8416-10bb57b88c35/endpointGroups' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "d0f71fb5-c846-4e7d-b10d-9a07ce6b3d31", "367817ed-1acf-4830-9755-e08eb489235a" ]
}'

Example response

Path Type Description

name

String

The AppWan name

status

Number

AppWan provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 830e123f7869894a
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.653+0000",
  "updatedAt" : "2019-05-21T14:45:59.653+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/a642609c-fa8c-41b2-9fb8-2a232603f9ee/appwans/16e64ae4-fabd-47a3-8416-10bb57b88c35"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/a642609c-fa8c-41b2-9fb8-2a232603f9ee"
    }
  }
}


Remove Endpoint Groups from an AppWan

A DELETE request removes Endpoint Groups from an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Endpoint Group UUIDs to remove from the AppWan

$ curl 'http://localhost:8080/networks/85c3df83-f40c-4c10-a300-7313e5e298b5/appWans/9f323a67-15a1-46ae-bd3b-efb259bff084/endpointGroups' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "e8262625-71f1-478d-bc08-02a15b0375db", "e7279388-1b95-4a28-b824-4d72461f2ccc" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 1cec672bb551304f


Add Services to an AppWan

A POST request adds Services to an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Service UUIDs to add to the AppWan

$ curl 'http://localhost:8080/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c/appWans/ce0e601e-be62-420e-9f25-0cc0c94484ad/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "be78fd01-0dda-4ce1-9445-094e17083f59", "b2ad0504-c123-4db6-84f1-8024dd86ca31" ]
}'

Example response

Path Type Description

name

String

The AppWan name

status

Number

AppWan provisioning status

createdAt

String

Record creation time

updatedAt

String

Record last modification time

_links

Object

Links to other resources

HTTP/1.1 202 Accepted
X-B3-TraceId: 9e43853dd73d6239
Content-Type: application/json;charset=UTF-8
Content-Length: 420

{
  "createdAt" : "2019-05-21T04:45:59.623+0000",
  "updatedAt" : "2019-05-21T14:45:59.623+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "http://localhost:8088/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c/appwans/ce0e601e-be62-420e-9f25-0cc0c94484ad"
    },
    "network" : {
      "href" : "http://localhost:8088/networks/cd6fc5b3-06d1-4913-8c4a-5a51aabdbe7c"
    }
  }
}


Remove Services from an AppWan

A DELETE request removes Services from an AppWan on a specific network.

Example request

Path Type Description

ids

Array

List of Service UUIDs to remove from the AppWan

$ curl 'http://localhost:8080/networks/8d6841da-7976-4d4a-86c8-f79c83fc4043/appWans/aa3455bc-784e-4d3a-864a-a18d1a6c4356/services' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "8649a4da-f997-410c-ba7e-e11f8a516194", "57b1b230-5e1f-431d-bb65-07c79e2c5907" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 7b991b786d2a38d5


Deleting an AppWan

A DELETE request deletes an AppWan on a specific network.

Example request

$ curl 'http://localhost:8080/networks/aa8e1f0b-79d8-455b-8b03-ae8a00b0bb28/appWans/2ec0d365-9a3a-48ae-8555-6df9bb13edac' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: a1741411741a8ac9

Metrics, Alarms, and Events

NetFoundry utilizes Elasticsearch as it’s datastore for network metrics, alarms, and events. Queries can be submitted with a POST to the following endpoint, with the organizationId and index specified in the URL path. You must filter your search with either a time window or a networkId or the request will be rejected.

/elastic/{index}/{organizationId}/_search/

See the Elasticsearch Search API Documentation for a more comprehensive search reference.

Index Description

ncvtccurrent

This index contains high-resolution non-zero utilization metrics which are viewable at a 1 minute interval. Metrics are available for all endpoints and transfer nodes. Only 7 days worth of high-res metrics are available.

ncvtchistorical

This index contains low-resolution non-zero utilization metrics which are viewable at a 1 hour interval. Metrics are available for all endpoints and transfer nodes. Only 12 months worth of low-res metrics are available.

ncentityevent

This index contains all API-driven events and changes, as well as endpoint status changes. These events are available for 90 days.

ncalarms

This index contains network alarms that are actively polled every 5 minutes. This index logs OPEN alarms at the time of polling. Only 90 days worth of alarms are available.

Example request

POST /elastic/ncentityevent/7444a937-f1bb-4cf5-a11c-2ba691c6672a/_search/ HTTP/1.1
Content-Type: application/json
Accept: application/json
NF-OrganizationId: 7444a937-f1bb-4cf5-a11c-2ba691c6672a
Host: localhost:8080
Content-Length: 930

{
  "query" : {
    "bool" : {
      "must" : [ {
        "query_string" : {
          "query" : "*",
          "analyze_wildcard" : true
        }
      }, {
        "match_phrase" : {
          "tags.keyword" : {
            "query" : "customer"
          }
        }
      }, {
        "range" : {
          "@timestamp" : {
            "gte" : 1493587166000,
            "lte" : 1525123166533,
            "format" : "epoch_millis"
          }
        }
      }, {
        "match_phrase" : {
          "networkId" : {
            "query" : "5d4a71e3-d676-4c37-8af8-46604f0352d1"
          }
        }
      } ],
      "must_not" : [ {
        "match_phrase" : {
          "changeType" : {
            "query" : "soft"
          }
        }
      } ]
    }
  },
  "size" : 500,
  "sort" : [ {
    "@timestamp" : {
      "order" : "desc",
      "unmapped_type" : "boolean"
    }
  } ],
  "_source" : {
    "excludes" : [ ]
  }
}

Example Response

Path Type Description

took

Number

An array of DataCenter resources

timed_out

Boolean

An array of DataCenter resources

_shards

Object

An array of DataCenter resources

_shards.total

Number

An array of DataCenter resources

_shards.successful

Number

An array of DataCenter resources

_shards.skipped

Number

An array of DataCenter resources

_shards.failed

Number

An array of DataCenter resources

hits

Object

An array of DataCenter resources

hits.total

Number

An array of DataCenter resources

hits.max_score

String

An array of DataCenter resources

HTTP/1.1 200 OK
X-B3-TraceId: 510b4cb300dc0058
Content-Type: application/json;charset=UTF-8
Content-Length: 225

{
  "took" : 3727,
  "timed_out" : false,
  "_shards" : {
    "total" : 1666,
    "successful" : 1666,
    "skipped" : 1636,
    "failed" : 0
  },
  "hits" : {
    "total" : 0,
    "max_score" : "null",
    "hits" : [ ]
  }
}