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 provides a feature that enables authorized users to create such non-interactive credentials (Org Management → Manage API Accounts). Using this feature you can generate an API client ID and corresponding client secret.

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-production.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.production.netfoundry.io/rest/v1/organizations/37da153d-188f-4f05-a6cf-e073817fe259' -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

awsAutoScalingGatewayEnabled

Boolean

Are AWS Auto-Scaling Gateways 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: 6fbadc90e2e36fe4
Content-Type: application/json;charset=UTF-8
Content-Length: 722

{
  "createdAt" : "2019-09-16T10:03:13.532+0000",
  "updatedAt" : "2019-09-16T20:03:13.532+0000",
  "name" : "Test Org 01",
  "organizationShortName" : "TORG01",
  "mfaRequired" : false,
  "zitiEnabled" : false,
  "awsAutoScalingGatewayEnabled" : false,
  "defaultAzureVirtualWanId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/37da153d-188f-4f05-a6cf-e073817fe259"
    },
    "networks" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks"
    },
    "azureSubscription" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions?organizationId=37da153d-188f-4f05-a6cf-e073817fe259"
    }
  }
}


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.production.netfoundry.io/rest/v1/azureSubscriptions' -i -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: 0992980de2b8469d
Content-Type: application/json;charset=UTF-8
Content-Length: 2493

{
  "_embedded" : {
    "azureSubscriptions" : [ {
      "name" : "AZ Sub 01",
      "subscriptionId" : "3fad616e-765b-4c16-9a10-b6f7131818da",
      "tenantId" : "9cfb941c-e180-49ab-b148-0cefe23edacb",
      "applicationId" : "8278ae1c-3273-44c9-b216-39e79d04a0ae",
      "applicationKey" : "9e4f2067-3e93-40e4-a13b-d2bf62cdd5b2",
      "organizationId" : "96253681-ef3b-4568-b51d-804db30d658a",
      "createdAt" : "2019-09-16T10:03:15.938+0000",
      "updatedAt" : "2019-09-16T20:03:15.938+0000",
      "_links" : {
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/4027c6b4-f219-47a7-8c52-1cabd0e49df0"
        },
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91"
        },
        "resourceGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91/resourceGroups"
        },
        "virtualWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91/virtualWans"
        }
      }
    }, {
      "name" : "AZ Sub 02",
      "subscriptionId" : "ff26b882-31a5-4bd3-a81c-ed7483a51356",
      "tenantId" : "942f07e6-d127-45d2-bd5a-8f793f1e487e",
      "applicationId" : "dc1a4e3a-2e79-446a-ab7d-26222b3eb4dd",
      "applicationKey" : "c980ce38-cef4-4bfb-9033-50c87136d68e",
      "organizationId" : "b4a187ec-33d9-4ad0-a6f0-d28c4d6ffb75",
      "createdAt" : "2019-09-16T10:03:15.939+0000",
      "updatedAt" : "2019-09-16T20:03:15.939+0000",
      "_links" : {
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/4027c6b4-f219-47a7-8c52-1cabd0e49df0"
        },
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b"
        },
        "resourceGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b/resourceGroups"
        },
        "virtualWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b/virtualWans"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions"
    }
  }
}


Fetching an Azure Subscription

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4c9117e3-9cb4-4e5b-8e9e-a521d6636e80' -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: 55f39e79d03e18e6
Content-Type: application/json;charset=UTF-8
Content-Length: 1076

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "40294bad-c1cf-4e53-af74-cbed5874acbb",
  "tenantId" : "d12e40c8-58b0-4416-ab57-0e32a7f2ca2f",
  "applicationId" : "34bde5c1-6839-4405-8cab-55b155997240",
  "applicationKey" : "ac0c54ec-8c6b-4a54-92ec-d7ca22e80f99",
  "organizationId" : "702f6109-57a0-4972-84c3-0f6095be96cb",
  "createdAt" : "2019-09-16T10:03:16.012+0000",
  "updatedAt" : "2019-09-16T20:03:16.012+0000",
  "_links" : {
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/5cdbf215-72e6-4ccb-9bd8-219508c148b6"
    },
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4c9117e3-9cb4-4e5b-8e9e-a521d6636e80"
    },
    "resourceGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4c9117e3-9cb4-4e5b-8e9e-a521d6636e80/resourceGroups"
    },
    "virtualWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4c9117e3-9cb4-4e5b-8e9e-a521d6636e80/virtualWans"
    }
  }
}


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.production.netfoundry.io/rest/v1/azureSubscriptions/' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "25bd1d41-bce1-4ab1-8505-ef0ea0c12692",
  "tenantId" : "b0fa9fc2-d76f-4af4-b369-91f0de214c0e",
  "applicationId" : "10c025c4-9cc6-467f-a1ff-a6ba31d40d83",
  "applicationKey" : "a2ac2f84-44cd-4702-bca4-f549633a81be"
}'

Example HTTP request

POST /rest/v1/azureSubscriptions/ HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 277

{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "25bd1d41-bce1-4ab1-8505-ef0ea0c12692",
  "tenantId" : "b0fa9fc2-d76f-4af4-b369-91f0de214c0e",
  "applicationId" : "10c025c4-9cc6-467f-a1ff-a6ba31d40d83",
  "applicationKey" : "a2ac2f84-44cd-4702-bca4-f549633a81be"
}

Example HTTPie request

$ echo '{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "25bd1d41-bce1-4ab1-8505-ef0ea0c12692",
  "tenantId" : "b0fa9fc2-d76f-4af4-b369-91f0de214c0e",
  "applicationId" : "10c025c4-9cc6-467f-a1ff-a6ba31d40d83",
  "applicationKey" : "a2ac2f84-44cd-4702-bca4-f549633a81be"
}' | http POST 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/' 'Content-Type:application/json'

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: 18c286d6e04967e2
Content-Type: application/json;charset=UTF-8
Content-Length: 1076

{
  "name" : "Test AZ Subscription 02",
  "subscriptionId" : "ce145570-dab7-4ef8-ac12-ca5678e46b3d",
  "tenantId" : "d98b97bb-4224-4903-bbe4-0894a9431b55",
  "applicationId" : "d02c96ca-00fd-42f9-942b-e80262595067",
  "applicationKey" : "49b40318-5d30-4814-a803-7f4d73070724",
  "organizationId" : "1322fd91-4e0e-4f2b-a963-445cd7d728a1",
  "createdAt" : "2019-09-16T10:03:15.974+0000",
  "updatedAt" : "2019-09-16T20:03:15.974+0000",
  "_links" : {
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/ff9b924a-b8db-4810-bccf-5bea2b0e7b19"
    },
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/3adf914d-637e-4f6d-84c4-207e77af87e9"
    },
    "resourceGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/3adf914d-637e-4f6d-84c4-207e77af87e9/resourceGroups"
    },
    "virtualWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/3adf914d-637e-4f6d-84c4-207e77af87e9/virtualWans"
    }
  }
}


Updating an Auzre Subscription

A PUT request updates a specific Azure Subscription.

Example CURL request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "d2d5d0b8-f856-4659-b176-c62551afff8e",
  "tenantId" : "5fd928c3-699d-4088-a4f5-e932d82291e9",
  "applicationId" : "b493ed1c-7e04-48f6-afe4-44712fa96f74",
  "applicationKey" : "7bf0120b-832c-4020-b909-c858ff5966af",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}'

Example HTTP request

PUT /rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 348

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "d2d5d0b8-f856-4659-b176-c62551afff8e",
  "tenantId" : "5fd928c3-699d-4088-a4f5-e932d82291e9",
  "applicationId" : "b493ed1c-7e04-48f6-afe4-44712fa96f74",
  "applicationKey" : "7bf0120b-832c-4020-b909-c858ff5966af",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}

Example HTTPie request

$ echo '{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "d2d5d0b8-f856-4659-b176-c62551afff8e",
  "tenantId" : "5fd928c3-699d-4088-a4f5-e932d82291e9",
  "applicationId" : "b493ed1c-7e04-48f6-afe4-44712fa96f74",
  "applicationKey" : "7bf0120b-832c-4020-b909-c858ff5966af",
  "organizationId" : null,
  "createdAt" : null,
  "updatedAt" : null
}' | http PUT 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db' '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: 6794789efdfb78ba
Content-Type: application/json;charset=UTF-8
Content-Length: 1076

{
  "name" : "Test AZ Subscription 01",
  "subscriptionId" : "b46cf139-afe3-425f-9cf2-86dd06967089",
  "tenantId" : "adb7bdcd-6677-4993-ae1e-e746a511fb29",
  "applicationId" : "77d256b6-d240-4ffa-b22f-57fc62879d76",
  "applicationKey" : "a1f6cd74-51e3-4d14-bdb8-1bbebf1e9c96",
  "organizationId" : "0fa4b32d-9970-4101-9db2-890af1b5fe8e",
  "createdAt" : "2019-09-16T10:03:15.995+0000",
  "updatedAt" : "2019-09-16T20:03:15.995+0000",
  "_links" : {
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/b17b2c06-3b68-42fc-8ff6-d749e481bc33"
    },
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db"
    },
    "resourceGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db/resourceGroups"
    },
    "virtualWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/26d0c59d-b897-4503-bae2-8522f8c5a0db/virtualWans"
    }
  }
}


Deleting an Azure Subscription

A DELETE request deletes an Azure Subscription.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/ea23a95f-0306-4499-9ac7-65343330fc36' -i -X DELETE -H 'Content-Type: application/json'

Example response

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


Certificate Authority

The Certificate Authority resource is for managing and veriyfing third-party CAs.


Listing Certificate Authorities

A GET request lists all of the organizations' Certificate Authorities.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas/' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.cas

Array

An array of Certificate Authority resources

_links

Object

Links to other resources

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

{
  "_embedded" : {
    "cas" : [ {
      "isAuthEnabled" : true,
      "isOttCaEnrollmentEnabled" : true,
      "isAutoCaEnrollmentEnabled" : true,
      "isVerified" : false,
      "verificationToken" : null,
      "fingerprint" : null,
      "jwt" : null,
      "createdAt" : "2019-09-16T20:02:49.941+0000",
      "updatedAt" : "2019-09-16T20:02:49.941+0000",
      "name" : "Test CertificateAuthorityResponse 01",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas/49f12bc4-2936-44b8-8956-81cad6ec0b01"
        },
        "verify" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas/49f12bc4-2936-44b8-8956-81cad6ec0b01/verify"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef"
        }
      }
    }, {
      "isAuthEnabled" : true,
      "isOttCaEnrollmentEnabled" : true,
      "isAutoCaEnrollmentEnabled" : true,
      "isVerified" : false,
      "verificationToken" : null,
      "fingerprint" : null,
      "jwt" : null,
      "createdAt" : "2019-09-16T20:02:49.941+0000",
      "updatedAt" : "2019-09-16T20:02:49.941+0000",
      "name" : "Test CertificateAuthorityResponse 02",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas/68cc56f2-6e75-4ca8-9986-489fa6239d51"
        },
        "verify" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas/68cc56f2-6e75-4ca8-9986-489fa6239d51/verify"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8b2044a7-08d2-4ee1-bd2b-18636c8875ef/cas"
    }
  }
}


Fetching a Certificate Authority

A GET request fetches a specific Certificate Authority.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/82a665f7-deaf-461d-b76e-109f2dbf68f4/cas/1cabf3b5-143a-4655-8143-d83e45a0b4ab' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The CA’s name

isAuthEnabled

Boolean

Enable Auth for the CA

isAutoCaEnrollmentEnabled

Boolean

Enable Auto CA enrollment

isOttCaEnrollmentEnabled

Boolean

Enable OTT CA enrollment

isVerified

Boolean

Is the CA verified

verificationToken

Null

CA Verification token

fingerprint

Null

Fingerprint of the CA

jwt

Null

JWT for auto-enrolling identities

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: c9b30c00eb39a411
Content-Type: application/json;charset=UTF-8
Content-Length: 859

{
  "isAuthEnabled" : true,
  "isOttCaEnrollmentEnabled" : true,
  "isAutoCaEnrollmentEnabled" : true,
  "isVerified" : false,
  "verificationToken" : null,
  "fingerprint" : null,
  "jwt" : null,
  "createdAt" : "2019-09-16T20:02:49.917+0000",
  "updatedAt" : "2019-09-16T20:02:49.917+0000",
  "name" : "Test CertificateAuthorityResponse 01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/82a665f7-deaf-461d-b76e-109f2dbf68f4/cas/1cabf3b5-143a-4655-8143-d83e45a0b4ab"
    },
    "verify" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/82a665f7-deaf-461d-b76e-109f2dbf68f4/cas/1cabf3b5-143a-4655-8143-d83e45a0b4ab/verify"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/82a665f7-deaf-461d-b76e-109f2dbf68f4"
    }
  }
}


Creating a Certificate Authority

A POST request creates a Certificate Authority

Request Fields

Path Type Description

name

String

The CA’s name

isAuthEnabled

Boolean

Enable Auth for the CA

isAutoCaEnrollmentEnabled

Boolean

Enable Auto CA enrollment

isOttCaEnrollmentEnabled

Boolean

Enable OTT CA enrollment

certPem

String

CA Contents

Example CURL request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36/cas' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test CertificateAuthorityResponse 01",
  "certPem" : "Cert PEM",
  "isAutoCaEnrollmentEnabled" : true,
  "isAuthEnabled" : true,
  "isOttCaEnrollmentEnabled" : false
}'

Example HTTP request

POST /rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36/cas HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 181

{
  "name" : "Test CertificateAuthorityResponse 01",
  "certPem" : "Cert PEM",
  "isAutoCaEnrollmentEnabled" : true,
  "isAuthEnabled" : true,
  "isOttCaEnrollmentEnabled" : false
}

Example HTTPie request

$ echo '{
  "name" : "Test CertificateAuthorityResponse 01",
  "certPem" : "Cert PEM",
  "isAutoCaEnrollmentEnabled" : true,
  "isAuthEnabled" : true,
  "isOttCaEnrollmentEnabled" : false
}' | http POST 'https://gateway.production.netfoundry.io/rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36/cas' 'Content-Type:application/json'

Example response

Response Fields

Path Type Description

name

String

The CA’s name

isAuthEnabled

Boolean

Enable Auth for the CA

isAutoCaEnrollmentEnabled

Boolean

Enable Auto CA enrollment

isOttCaEnrollmentEnabled

Boolean

Enable OTT CA enrollment

isVerified

Boolean

Is the CA verified

verificationToken

Null

CA Verification token

fingerprint

Null

Fingerprint of the CA

jwt

Null

JWT for auto-enrolling identities

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: f6f5fba231b2f497
Content-Type: application/json;charset=UTF-8
Content-Length: 859

{
  "isAuthEnabled" : true,
  "isOttCaEnrollmentEnabled" : true,
  "isAutoCaEnrollmentEnabled" : true,
  "isVerified" : false,
  "verificationToken" : null,
  "fingerprint" : null,
  "jwt" : null,
  "createdAt" : "2019-09-16T20:02:49.831+0000",
  "updatedAt" : "2019-09-16T20:02:49.831+0000",
  "name" : "Test CertificateAuthorityResponse 01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36/cas/470d733a-ddd8-42a2-aafa-832b9378f51e"
    },
    "verify" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36/cas/470d733a-ddd8-42a2-aafa-832b9378f51e/verify"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/caaf6409-1ab4-4c7f-ac27-bbfd4749ca36"
    }
  }
}


Verifying a Certificate Authority

A POST request verifies a specific Certificate Authority.

Example CURL request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/b92a3442-a2c7-4122-b15c-d4989943acf3/cas/87340a10-7c73-43a9-a5da-eddd7dec3a21/verify' -i -X POST -H 'Content-Type: application/json' -d '{
  "certificate" : "Verification Cert Contents Here"
}'

Example HTTP request

POST /rest/v1/networks/b92a3442-a2c7-4122-b15c-d4989943acf3/cas/87340a10-7c73-43a9-a5da-eddd7dec3a21/verify HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 55

{
  "certificate" : "Verification Cert Contents Here"
}

Example HTTPie request

$ echo '{
  "certificate" : "Verification Cert Contents Here"
}' | http POST 'https://gateway.production.netfoundry.io/rest/v1/networks/b92a3442-a2c7-4122-b15c-d4989943acf3/cas/87340a10-7c73-43a9-a5da-eddd7dec3a21/verify' 'Content-Type:application/json'

Example response

HTTP/1.1 200 OK
X-B3-TraceId: 9ae517ef3071f1b4


Deleting a Certificate Authority

A DELETE request deletes a Certificate Authority

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/b7bf3207-4182-47d5-a106-37cc97b72f97/cas/a7cf237a-ce2b-4cf1-8b5e-9fe541f6a268' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 200 OK
X-B3-TraceId: db4b8c9cc7821c9a


Network

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


Listing networks

A GET request lists all of the organizations' networks. The backend will apply a default page size of 1000 and return the first page.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks' -i -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 info

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

{
  "_embedded" : {
    "networks" : [ {
      "createdAt" : "2019-09-16T10:02:47.146+0000",
      "updatedAt" : "2019-09-16T20:02:47.146+0000",
      "name" : "Test Network 01",
      "caName" : "CA_6db56a94-b873-44d4-a61f-b4bc13c9071c",
      "productFamily" : "DVN",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3"
        },
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/20654d66-76d3-4588-8716-ce3f84ef574a"
        },
        "networkControllers" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/networkControllers"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/endpoints"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/endpointGroups"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/services"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/appWans"
        },
        "gatewayClusters" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/gatewayClusters"
        },
        "cas" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/cas"
        },
        "virtualWanSites" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f5a4eb5a-ed69-4427-b762-4f4512961ba3/virtualWanSites"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:47.147+0000",
      "updatedAt" : "2019-09-16T20:02:47.147+0000",
      "name" : "Test Network 02",
      "caName" : "CA_b52ddc9b-d1f6-488c-92a4-f287a549332d",
      "productFamily" : "DVN",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc"
        },
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/20654d66-76d3-4588-8716-ce3f84ef574a"
        },
        "networkControllers" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/networkControllers"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/endpoints"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/endpointGroups"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/services"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/appWans"
        },
        "gatewayClusters" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/gatewayClusters"
        },
        "cas" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/cas"
        },
        "virtualWanSites" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f2c0092a-5afc-4d8e-a059-17b191ab21cc/virtualWanSites"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing Networks Paged

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks?page=0&size=10&sort=name,asc' -i -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 info

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

{
  "_embedded" : {
    "networks" : [ {
      "createdAt" : "2019-09-16T10:02:47.196+0000",
      "updatedAt" : "2019-09-16T20:02:47.196+0000",
      "name" : "Test Network 01",
      "caName" : "CA_12b0d672-cff8-4bdd-8ed6-ddfcdb17de1b",
      "productFamily" : "DVN",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb"
        },
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/101ad085-0e64-4266-ae07-2ca42cb59ba4"
        },
        "networkControllers" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/networkControllers"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/endpoints"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/endpointGroups"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/services"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/appWans"
        },
        "gatewayClusters" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/gatewayClusters"
        },
        "cas" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/cas"
        },
        "virtualWanSites" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/6b878a6b-f234-41ec-87ec-4d4b9d2fe9cb/virtualWanSites"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:47.198+0000",
      "updatedAt" : "2019-09-16T20:02:47.198+0000",
      "name" : "Test Network 02",
      "caName" : "CA_ae0934a4-f737-4fb7-9f7a-63c5789cdd97",
      "productFamily" : "DVN",
      "productVersion" : "3.6.6.11042",
      "provisionedAt" : null,
      "o365BreakoutCategory" : "NONE",
      "status" : 100,
      "organizationId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f"
        },
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/101ad085-0e64-4266-ae07-2ca42cb59ba4"
        },
        "networkControllers" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/networkControllers"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/endpoints"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/endpointGroups"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/services"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/appWans"
        },
        "gatewayClusters" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/gatewayClusters"
        },
        "cas" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/cas"
        },
        "virtualWanSites" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f736f0b5-a0c6-4751-bae1-cb3b3a71926f/virtualWanSites"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching a network

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187' -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: 257ab16c3073f3c7
Content-Type: application/json;charset=UTF-8
Content-Length: 1879

{
  "createdAt" : "2019-09-16T10:02:46.950+0000",
  "updatedAt" : "2019-09-16T20:02:46.950+0000",
  "name" : "Test Network 01",
  "caName" : "CA_4ef5327e-f1aa-4cd9-86d7-39e8f415f0a4",
  "productFamily" : "DVN",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187"
    },
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/eb6cc60d-bd4c-47b4-82ca-7ce7f10d33d2"
    },
    "networkControllers" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/networkControllers"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/endpoints"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/endpointGroups"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/services"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/appWans"
    },
    "gatewayClusters" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/gatewayClusters"
    },
    "cas" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/cas"
    },
    "virtualWanSites" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/88f9bce7-5963-4e28-8824-90da75db0187/virtualWanSites"
    }
  }
}


Fetching a list of network controllers

A GET request fetches the Network Controllers for a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/9e9c3444-29fd-4258-81a9-b602d12c96cf/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: 08bcbd286ebd1a16
Content-Type: application/json;charset=UTF-8
Content-Length: 436

{
  "_embedded" : {
    "networkControllerHosts" : [ {
      "ipAddress" : "143.2.19.7",
      "status" : 300
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/9e9c3444-29fd-4258-81a9-b602d12c96cf/networkControllerHosts"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/9e9c3444-29fd-4258-81a9-b602d12c96cf"
    }
  }
}


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

subscriptionId

UUID

The subscriptionId that this network should be charged against. Subscription IDs can be determined by calling http://gateway.netfoundry.io/v2/billing/organizations/{organizationId}/subscriptions

Example CURL request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test Network 01",
  "productFamily" : "DVN",
  "productVersion" : "3.6.6.11042",
  "networkConfigName" : "medium",
  "locationCode" : null,
  "o365BreakoutCategory" : "NONE",
  "subscriptionId" : null
}'

Example HTTP request

POST /rest/v1/networks HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 216

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

Example HTTPie request

$ echo '{
  "name" : "Test Network 01",
  "productFamily" : "DVN",
  "productVersion" : "3.6.6.11042",
  "networkConfigName" : "medium",
  "locationCode" : null,
  "o365BreakoutCategory" : "NONE",
  "subscriptionId" : null
}' | http POST 'https://gateway.production.netfoundry.io/rest/v1/networks' 'Content-Type:application/json'

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: 7f857515e692ed45
Content-Type: application/json;charset=UTF-8
Content-Length: 1879

{
  "createdAt" : "2019-09-16T10:02:47.028+0000",
  "updatedAt" : "2019-09-16T20:02:47.028+0000",
  "name" : "Test Network 01",
  "caName" : "CA_adf1e02b-ceed-4f1f-9a60-260801278de4",
  "productFamily" : "DVN",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300"
    },
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/0fdc3af8-da7f-4886-b58d-248dbec57dba"
    },
    "networkControllers" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/networkControllers"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/endpoints"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/endpointGroups"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/services"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/appWans"
    },
    "gatewayClusters" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/gatewayClusters"
    },
    "cas" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/cas"
    },
    "virtualWanSites" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/97fe18f0-ce65-4702-9553-87612e6f2300/virtualWanSites"
    }
  }
}


Updating a Network

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

Example CURL request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test Network 01 Updated",
  "o365BreakoutCategory" : "NONE"
}'

Example HTTP request

PUT /rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736 HTTP/1.1
Content-Type: application/json
Host: gateway.production.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.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736' '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: 7952fd6fbed429ea
Content-Type: application/json;charset=UTF-8
Content-Length: 1887

{
  "createdAt" : "2019-09-16T10:02:47.112+0000",
  "updatedAt" : "2019-09-16T20:02:47.112+0000",
  "name" : "Test Network 01 Updated",
  "caName" : "CA_ce47f0c6-92de-4f13-8a54-5089c939a6ab",
  "productFamily" : "DVN",
  "productVersion" : "3.6.6.11042",
  "provisionedAt" : null,
  "o365BreakoutCategory" : "NONE",
  "status" : 100,
  "organizationId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736"
    },
    "organization" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/ed2628e7-b1d3-43cd-b93b-f1193ec37c92"
    },
    "networkControllers" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/networkControllers"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/endpoints"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/endpointGroups"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/services"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/appWans"
    },
    "gatewayClusters" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/gatewayClusters"
    },
    "cas" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/cas"
    },
    "virtualWanSites" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96e50c7c-4369-4313-9d1e-5b798b2ca736/virtualWanSites"
    }
  }
}


Deleting a Network

A DELETE request deletes a network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/78b5a45d-a118-47c7-8c81-e15bcda3eeec' -i -X DELETE -H 'Content-Type: application/json'

Example response

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


GeoRegion

The GeoRegion resource is used to list GeoRegions.


Listing GeoRegions

A GET request lists all of the GeoRegions.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/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: c32cbad44c86045f
Content-Type: application/json;charset=UTF-8
Content-Length: 803

{
  "_embedded" : {
    "geoRegions" : [ {
      "createdAt" : "2019-09-16T10:02:44.274+0000",
      "updatedAt" : "2019-09-16T20:02:44.274+0000",
      "name" : "Geo Region 01",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:44.275+0000",
      "updatedAt" : "2019-09-16T20:02:44.275+0000",
      "name" : "Geo Region 02",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions"
    }
  }
}


Fetching a GeoRegion

A GET request fetches a specific GeoRegion.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc' -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: 7c0e0cf8e55cbc17
Content-Type: application/json;charset=UTF-8
Content-Length: 281

{
  "createdAt" : "2019-09-16T10:02:44.232+0000",
  "updatedAt" : "2019-09-16T20:02:44.232+0000",
  "name" : "Geo Region 01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/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: 073ebb1780f6b075
Content-Type: application/json;charset=UTF-8
Content-Length: 1965

{
  "_embedded" : {
    "dataCenters" : [ {
      "createdAt" : "2019-09-16T10:03:05.960+0000",
      "updatedAt" : "2019-09-16T20:03:05.960+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" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/6991fac9-f09e-42eb-a3d4-648e7d7109b7"
        },
        "geoRegions" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/6991fac9-f09e-42eb-a3d4-648e7d7109b7/geoRegions"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:03:05.960+0000",
      "updatedAt" : "2019-09-16T20:03:05.960+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" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/a42b5ece-e24d-4af6-8a7b-baf034a92347"
        },
        "geoRegions" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/a42b5ece-e24d-4af6-8a7b-baf034a92347/geoRegions"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters"
    }
  }
}


Fetching a Data Center by ID

A GET request fetches a specific Data Center.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/dataCenters/15caf640-3d9a-4e2c-befc-e56ed365b768' -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: 8522c82f3ef03ecf
Content-Type: application/json;charset=UTF-8
Content-Length: 793

{
  "createdAt" : "2019-09-16T10:03:05.993+0000",
  "updatedAt" : "2019-09-16T20:03:05.993+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" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/15caf640-3d9a-4e2c-befc-e56ed365b768"
    },
    "geoRegions" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/15caf640-3d9a-4e2c-befc-e56ed365b768/geoRegions"
    }
  }
}


Fetching a Data Center by Location Code

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/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: 01ebc13e494be2ac
Content-Type: application/json;charset=UTF-8
Content-Length: 793

{
  "createdAt" : "2019-09-16T10:03:06.009+0000",
  "updatedAt" : "2019-09-16T20:03:06.009+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" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/bac4c870-75e4-4130-83d2-8f4269bfdd73"
    },
    "geoRegions" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/bac4c870-75e4-4130-83d2-8f4269bfdd73/geoRegions"
    }
  }
}


Endpoint

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


Listing endpoints

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints' -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 info

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

{
  "_embedded" : {
    "endpoints" : [ {
      "createdAt" : "2019-09-16T10:02:52.724+0000",
      "updatedAt" : "2019-09-16T20:02:52.724+0000",
      "name" : "Endpoint 01",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "source" : null,
      "syncId" : null,
      "registrationKey" : "regKey value",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "gatewayClusterId" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/bfbf1c33-54a2-48d9-97a2-42e86aff852b"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/bfbf1c33-54a2-48d9-97a2-42e86aff852b/appWans"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/bfbf1c33-54a2-48d9-97a2-42e86aff852b/services"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/bfbf1c33-54a2-48d9-97a2-42e86aff852b/endpointGroups"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "dataCenter" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:52.725+0000",
      "updatedAt" : "2019-09-16T20:02:52.725+0000",
      "name" : "Endpoint 02",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "source" : null,
      "syncId" : null,
      "registrationKey" : "regKey value",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "gatewayClusterId" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/3a3d4635-3f21-41e4-a789-f0966a72ff25"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/3a3d4635-3f21-41e4-a789-f0966a72ff25/appWans"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/3a3d4635-3f21-41e4-a789-f0966a72ff25/services"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints/3a3d4635-3f21-41e4-a789-f0966a72ff25/endpointGroups"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "dataCenter" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/7ea16f94-f4a9-4a8b-9b9f-8c69204a3d29/endpoints?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Listing endpoints paginated

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/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 info

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

{
  "_embedded" : {
    "endpoints" : [ {
      "createdAt" : "2019-09-16T10:02:52.479+0000",
      "updatedAt" : "2019-09-16T20:02:52.479+0000",
      "name" : "Endpoint 01",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "source" : null,
      "syncId" : null,
      "registrationKey" : "regKey value",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "gatewayClusterId" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/9f528e98-4c0a-47cf-bef9-f0f17059e442"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/9f528e98-4c0a-47cf-bef9-f0f17059e442/appWans"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/9f528e98-4c0a-47cf-bef9-f0f17059e442/services"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/9f528e98-4c0a-47cf-bef9-f0f17059e442/endpointGroups"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "dataCenter" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:52.479+0000",
      "updatedAt" : "2019-09-16T20:02:52.479+0000",
      "name" : "Endpoint 02",
      "endpointType" : "GW",
      "clientType" : "",
      "clientVersion" : "",
      "source" : null,
      "syncId" : null,
      "registrationKey" : "regKey value",
      "registrationAttemptsLeft" : 5,
      "status" : 100,
      "currentState" : 100,
      "stateLastUpdated" : null,
      "endpointProtectionRole" : null,
      "haEndpointType" : "HAGW",
      "o365BreakoutNextHopIp" : null,
      "gatewayClusterId" : null,
      "componentId" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/f4acfe6d-5540-4155-8165-3da285ad539b"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/f4acfe6d-5540-4155-8165-3da285ad539b/appWans"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/f4acfe6d-5540-4155-8165-3da285ad539b/services"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints/f4acfe6d-5540-4155-8165-3da285ad539b/endpointGroups"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "dataCenter" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/b3f23a85-c498-4acd-b6d0-7972a927301e/endpoints?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching an endpoint

A GET request fetches a specific endpoint.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de/endpoints/c2ae993b-7b86-4145-ae3b-d4a77919a602' -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

gatewayClusterId

Null

The id of the Gateway Cluster that this Endpoint belongs to, or null if not clustered.

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

source

Null

The source creating the Endpoint

status

Number

Provisioning status of the endpoint

createdAt

String

Record creation time

updatedAt

String

Record last modification time

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:02:52.684+0000",
  "updatedAt" : "2019-09-16T20:02:52.684+0000",
  "name" : "Test Endpoint 01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "source" : null,
  "syncId" : null,
  "registrationKey" : "regKey value",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "gatewayClusterId" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de/endpoints/c2ae993b-7b86-4145-ae3b-d4a77919a602"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de/endpoints/c2ae993b-7b86-4145-ae3b-d4a77919a602/appWans"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de/endpoints/c2ae993b-7b86-4145-ae3b-d4a77919a602/services"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/71084bb9-0005-4080-b13f-9994c77d98de/endpoints/c2ae993b-7b86-4145-ae3b-d4a77919a602/endpointGroups"
    },
    "geoRegion" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
    },
    "dataCenter" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1/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,
  "source" : null,
  "syncId" : null,
  "subscriptionId" : 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

gatewayClusterId

Null

The id of the Gateway Cluster that this Endpoint belongs to, or null if not clustered.

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

source

Null

The source creating the Endpoint

createdAt

String

Record creation time

updatedAt

String

Record last modification time

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:02:52.561+0000",
  "updatedAt" : "2019-09-16T20:02:52.561+0000",
  "name" : "Test Endpoint 01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "source" : null,
  "syncId" : null,
  "registrationKey" : "regKey value",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "gatewayClusterId" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1/endpoints/a5470597-6f00-4189-ace0-6b9d05f9d9e2"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1/endpoints/a5470597-6f00-4189-ace0-6b9d05f9d9e2/appWans"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1/endpoints/a5470597-6f00-4189-ace0-6b9d05f9d9e2/services"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/fdd71689-a4a4-414e-a58d-227d5d3a76a1/endpoints/a5470597-6f00-4189-ace0-6b9d05f9d9e2/endpointGroups"
    },
    "geoRegion" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
    },
    "dataCenter" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
    }
  }
}


Updating an endpoint

A PUT request updates an endpoint on a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3/endpoints/422a2629-2b6c-4421-a833-9827313de6f1' -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

gatewayClusterId

Null

The id of the Gateway Cluster that this Endpoint belongs to, or null if not clustered.

endpointProtectionRole

Null

HA Protection role for Endpoint

o365BreakoutNextHopIp

Null

Office 365 breakout optimization traffic next hop

source

Null

The source creating the Endpoint

createdAt

String

Record creation time

updatedAt

String

Record last modification time

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:02:52.522+0000",
  "updatedAt" : "2019-09-16T20:02:52.522+0000",
  "name" : "Test Endpoint 01",
  "endpointType" : "GW",
  "clientType" : "",
  "clientVersion" : "",
  "source" : null,
  "syncId" : null,
  "registrationKey" : "regKey value",
  "registrationAttemptsLeft" : 5,
  "status" : 100,
  "currentState" : 100,
  "stateLastUpdated" : null,
  "endpointProtectionRole" : null,
  "haEndpointType" : "HAGW",
  "o365BreakoutNextHopIp" : null,
  "gatewayClusterId" : null,
  "componentId" : "",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3/endpoints/422a2629-2b6c-4421-a833-9827313de6f1"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3/endpoints/422a2629-2b6c-4421-a833-9827313de6f1/appWans"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3/endpoints/422a2629-2b6c-4421-a833-9827313de6f1/services"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3ff9aace-72a2-464c-b06d-7e70c40513a3/endpoints/422a2629-2b6c-4421-a833-9827313de6f1/endpointGroups"
    },
    "geoRegion" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
    },
    "dataCenter" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/dataCenters/c3b8c2a3-c38b-e280-9d1e-0111c3a7c5b8"
    }
  }
}


Deleting an endpoint

A DELETE request deletes an endpoint on a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/30b8e0f4-e41c-48de-bf5b-0dc617ed8110/endpoints/cb5c1805-aae7-4ef0-b4de-723da80e64bf' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 91416fc00701b75a


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 mode and will take over if the active endpoint goes offline. The gateway cluster create request 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 'https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/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 info

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

{
  "_embedded" : {
    "gatewayClusters" : [ {
      "status" : 0,
      "protectionType" : "1:1",
      "protectionGroupId" : "GatewayCluster01",
      "endpointType" : "GW",
      "geoRegionId" : null,
      "createdAt" : "2019-09-16T10:03:00.903+0000",
      "updatedAt" : "2019-09-16T20:03:00.903+0000",
      "name" : "GatewayCluster01",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/363b6684-b999-48e7-b990-3a5f08284e49"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/363b6684-b999-48e7-b990-3a5f08284e49/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/363b6684-b999-48e7-b990-3a5f08284e49/services"
        }
      }
    }, {
      "status" : 0,
      "protectionType" : "1:1",
      "protectionGroupId" : "GatewayCluster01",
      "endpointType" : "GW",
      "geoRegionId" : null,
      "createdAt" : "2019-09-16T10:03:00.903+0000",
      "updatedAt" : "2019-09-16T20:03:00.903+0000",
      "name" : "GatewayCluster01",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/3939705b-e77b-408f-b21b-308e342ed574"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/3939705b-e77b-408f-b21b-308e342ed574/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/gatewayClusters/3939705b-e77b-408f-b21b-308e342ed574/services"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/3db7d0c8-86a5-4f60-a32c-c6dd89487930/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 'https://gateway.production.netfoundry.io/rest/v1/networks/8d705eab-66b8-4890-8714-03d9e7ba870b/gatewayClusters/13ec0116-b10d-4456-a2d8-b5c04e3190cf' -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

geoRegionId

Null

GeoRegion ID of 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: e26587c1763268a8
Content-Type: application/json;charset=UTF-8
Content-Length: 1011

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "geoRegionId" : null,
  "createdAt" : "2019-09-16T10:03:00.859+0000",
  "updatedAt" : "2019-09-16T20:03:00.859+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8d705eab-66b8-4890-8714-03d9e7ba870b/gatewayClusters/13ec0116-b10d-4456-a2d8-b5c04e3190cf"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8d705eab-66b8-4890-8714-03d9e7ba870b"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8d705eab-66b8-4890-8714-03d9e7ba870b/gatewayClusters/13ec0116-b10d-4456-a2d8-b5c04e3190cf/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8d705eab-66b8-4890-8714-03d9e7ba870b/gatewayClusters/13ec0116-b10d-4456-a2d8-b5c04e3190cf/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/eccbb12c-7d80-4a70-a9e4-4e831f826be6/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
}'
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

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

geoRegionId

Null

GeoRegion ID of 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: 30afa2f13f4d0797
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1011

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "geoRegionId" : null,
  "createdAt" : "2019-09-16T10:03:00.819+0000",
  "updatedAt" : "2019-09-16T20:03:00.819+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/eccbb12c-7d80-4a70-a9e4-4e831f826be6/gatewayClusters/161223a3-5abf-4234-8e83-3f2d71072134"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/eccbb12c-7d80-4a70-a9e4-4e831f826be6"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/eccbb12c-7d80-4a70-a9e4-4e831f826be6/gatewayClusters/161223a3-5abf-4234-8e83-3f2d71072134/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/eccbb12c-7d80-4a70-a9e4-4e831f826be6/gatewayClusters/161223a3-5abf-4234-8e83-3f2d71072134/services"
    }
  }
}


Updating a Gateway Cluster

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/5ad26a93-faa2-4ce2-9073-c62a47172002/gatewayClusters/159c902c-e95b-4d59-b19d-de2b9d12dfc2' -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

geoRegionId

Null

GeoRegion ID of 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: 48369fc1f12ecd3a
Content-Type: application/hal+json;charset=UTF-8
Content-Length: 1011

{
  "status" : 0,
  "protectionType" : "1:1",
  "protectionGroupId" : "GatewayCluster01",
  "endpointType" : "GW",
  "geoRegionId" : null,
  "createdAt" : "2019-09-16T10:03:00.778+0000",
  "updatedAt" : "2019-09-16T20:03:00.778+0000",
  "name" : "GatewayCluster01",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ad26a93-faa2-4ce2-9073-c62a47172002/gatewayClusters/159c902c-e95b-4d59-b19d-de2b9d12dfc2"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ad26a93-faa2-4ce2-9073-c62a47172002"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ad26a93-faa2-4ce2-9073-c62a47172002/gatewayClusters/159c902c-e95b-4d59-b19d-de2b9d12dfc2/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ad26a93-faa2-4ce2-9073-c62a47172002/gatewayClusters/159c902c-e95b-4d59-b19d-de2b9d12dfc2/services"
    }
  }
}


Deleting a Gateway Cluster

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/e253b92a-9ccc-4e5a-a6ad-29d50abd6e29/gatewayClusters/086d11ce-1006-4528-880d-3edff9a83d98' -i -X DELETE -H 'Content-Type: application/json'

Example response

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


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 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' -i -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: 0992980de2b8469d
Content-Type: application/json;charset=UTF-8
Content-Length: 2493

{
  "_embedded" : {
    "azureSubscriptions" : [ {
      "name" : "AZ Sub 01",
      "subscriptionId" : "3fad616e-765b-4c16-9a10-b6f7131818da",
      "tenantId" : "9cfb941c-e180-49ab-b148-0cefe23edacb",
      "applicationId" : "8278ae1c-3273-44c9-b216-39e79d04a0ae",
      "applicationKey" : "9e4f2067-3e93-40e4-a13b-d2bf62cdd5b2",
      "organizationId" : "96253681-ef3b-4568-b51d-804db30d658a",
      "createdAt" : "2019-09-16T10:03:15.938+0000",
      "updatedAt" : "2019-09-16T20:03:15.938+0000",
      "_links" : {
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/4027c6b4-f219-47a7-8c52-1cabd0e49df0"
        },
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91"
        },
        "resourceGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91/resourceGroups"
        },
        "virtualWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/33affb19-dcb9-493f-8bf7-b8dd6be1cb91/virtualWans"
        }
      }
    }, {
      "name" : "AZ Sub 02",
      "subscriptionId" : "ff26b882-31a5-4bd3-a81c-ed7483a51356",
      "tenantId" : "942f07e6-d127-45d2-bd5a-8f793f1e487e",
      "applicationId" : "dc1a4e3a-2e79-446a-ab7d-26222b3eb4dd",
      "applicationKey" : "c980ce38-cef4-4bfb-9033-50c87136d68e",
      "organizationId" : "b4a187ec-33d9-4ad0-a6f0-d28c4d6ffb75",
      "createdAt" : "2019-09-16T10:03:15.939+0000",
      "updatedAt" : "2019-09-16T20:03:15.939+0000",
      "_links" : {
        "organization" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/organizations/4027c6b4-f219-47a7-8c52-1cabd0e49df0"
        },
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b"
        },
        "resourceGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b/resourceGroups"
        },
        "virtualWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/70a90d20-e672-495f-9edb-bea2a8c5af2b/virtualWans"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/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 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "azsite01",
  "endpointId" : "024f6885-af22-4dc5-ab17-e17908f4e9d8",
  "dataCenterId" : "4ec38d5d-0a20-431f-a5a6-a0b5d16f86c4",
  "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 /rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites HTTP/1.1
Content-Type: application/json
Host: gateway.production.netfoundry.io
Content-Length: 814

{
  "name" : "azsite01",
  "endpointId" : "024f6885-af22-4dc5-ab17-e17908f4e9d8",
  "dataCenterId" : "4ec38d5d-0a20-431f-a5a6-a0b5d16f86c4",
  "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" : "024f6885-af22-4dc5-ab17-e17908f4e9d8",
  "dataCenterId" : "4ec38d5d-0a20-431f-a5a6-a0b5d16f86c4",
  "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 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites' 'Content-Type:application/json'

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: 6fa331740a025cd2
Content-Type: application/json;charset=UTF-8
Content-Length: 1624

{
  "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" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/ab151630-67c8-4f82-b092-b296a783f0af"
    },
    "dataCenter" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/ab151630-67c8-4f82-b092-b296a783f0af/dataCenter"
    },
    "endpoint" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/ab151630-67c8-4f82-b092-b296a783f0af/endpoint"
    },
    "azureSubscription" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59"
    }
  }
}


Deleting an Azure Virtual Wan Site

A DELETE request deletes an Azure Virtual Wan Site.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/azureSubscriptions/4b18bcbc-3163-4d35-bd3a-2267be37ee59/virtualWanSites/e6422dcc-8bf7-4199-8f1e-69e355b78d92' -i -X DELETE -H 'Content-Type: application/json'

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 'https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/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 info

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

{
  "_embedded" : {
    "endpointGroups" : [ {
      "createdAt" : "2019-09-16T10:03:20.973+0000",
      "updatedAt" : "2019-09-16T20:03:20.973+0000",
      "name" : "Endpoint Group 01",
      "source" : null,
      "syncId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/endpointGroups/6c6082b0-f0d4-4b78-be1d-0174b075527c"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/endpointGroups/6c6082b0-f0d4-4b78-be1d-0174b075527c/endpoints"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:03:20.973+0000",
      "updatedAt" : "2019-09-16T20:03:20.973+0000",
      "name" : "Endpoint Group 02",
      "source" : null,
      "syncId" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/endpointGroups/3bd95675-bc79-4aa0-bd46-70ba03d145b0"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/endpointGroups/3bd95675-bc79-4aa0-bd46-70ba03d145b0/endpoints"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/113c7e63-fec8-4d15-a3bf-6f10a404fb0a/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 'https://gateway.production.netfoundry.io/rest/v1/networks/5f407e05-8fa7-4466-a0d9-36943ce2183d/endpointGroups/8fe8b1c5-ed17-47b1-a76c-140f9d6918e4' -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

source

Null

The source creating the Endpoint Group

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:03:20.884+0000",
  "updatedAt" : "2019-09-16T20:03:20.884+0000",
  "name" : "Test Endpoint Group 01",
  "source" : null,
  "syncId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5f407e05-8fa7-4466-a0d9-36943ce2183d/endpointGroups/8fe8b1c5-ed17-47b1-a76c-140f9d6918e4"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5f407e05-8fa7-4466-a0d9-36943ce2183d"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5f407e05-8fa7-4466-a0d9-36943ce2183d/endpointGroups/8fe8b1c5-ed17-47b1-a76c-140f9d6918e4/endpoints"
    }
  }
}


Creating an endpoint group

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/8c4c391b-d850-40eb-ad92-c8eb1baae871/endpointGroups' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint Group 01",
  "source" : null,
  "syncId" : null
}'

Example response

Path Type Description

name

String

The Endpoint Group name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

source

Null

The source creating the Endpoint Group

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:03:20.956+0000",
  "updatedAt" : "2019-09-16T20:03:20.956+0000",
  "name" : "Test Endpoint Group 01",
  "source" : null,
  "syncId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8c4c391b-d850-40eb-ad92-c8eb1baae871/endpointGroups/44adc06e-b91c-454b-81c1-510e56edbb5a"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8c4c391b-d850-40eb-ad92-c8eb1baae871"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/8c4c391b-d850-40eb-ad92-c8eb1baae871/endpointGroups/44adc06e-b91c-454b-81c1-510e56edbb5a/endpoints"
    }
  }
}


Updating an endpoint group

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/5ec42557-6ce0-446c-8861-1d84e7c74f93/endpointGroups/11f0c009-999d-4840-a9d4-bd4e15e98aa0' -i -X PUT -H 'Content-Type: application/json' -d '{
  "name" : "Test Endpoint Group 01 - Updated",
  "source" : null,
  "syncId" : null
}'

Example response

Path Type Description

name

String

The Endpoint Group name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

source

Null

The source creating the Endpoint Group

syncId

Null

Client sync process that created this endpoint.

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:03:20.915+0000",
  "updatedAt" : "2019-09-16T20:03:20.915+0000",
  "name" : "Test Endpoint Group 01 - Updated",
  "source" : null,
  "syncId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ec42557-6ce0-446c-8861-1d84e7c74f93/endpointGroups/11f0c009-999d-4840-a9d4-bd4e15e98aa0"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ec42557-6ce0-446c-8861-1d84e7c74f93"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ec42557-6ce0-446c-8861-1d84e7c74f93/endpointGroups/11f0c009-999d-4840-a9d4-bd4e15e98aa0/endpoints"
    }
  }
}

Deleting an endpoint group

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/4a90c707-ac25-485e-a071-c94dee8f0bcc/endpointGroups/80cc1df4-1bd1-4cbc-85ad-5b4d659073f4' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 382741cea795332d

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 'https://gateway.production.netfoundry.io/rest/v1/networks/96b6aa1e-752a-4f18-b25d-81c98c2019b6/endpointGroups/05872aec-cc4f-4ad5-85bb-addb0e721477/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "b645f3e5-3d73-4f2e-8b7a-17a5347dd8b8", "63df6d2e-8b77-46c9-81a4-15aca00d72ea" ]
}'

Example response

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

{
  "createdAt" : "2019-09-16T10:03:20.850+0000",
  "updatedAt" : "2019-09-16T20:03:20.850+0000",
  "name" : "Test Endpoint Group 01",
  "source" : null,
  "syncId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96b6aa1e-752a-4f18-b25d-81c98c2019b6/endpointGroups/05872aec-cc4f-4ad5-85bb-addb0e721477"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96b6aa1e-752a-4f18-b25d-81c98c2019b6"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/96b6aa1e-752a-4f18-b25d-81c98c2019b6/endpointGroups/05872aec-cc4f-4ad5-85bb-addb0e721477/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 'https://gateway.production.netfoundry.io/rest/v1/networks/5ecc2474-1aa2-46eb-b223-a2dcb9f479fd/endpointGroups/e8d8908a-df41-4f60-8aa4-6a214e7c7d9b/endpoints' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "076174df-f574-4b7b-9f10-ce7c99318506" ]
}'

Example response

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

{
  "createdAt" : "2019-09-16T10:03:20.939+0000",
  "updatedAt" : "2019-09-16T20:03:20.939+0000",
  "name" : "Test Endpoint Group 01",
  "source" : null,
  "syncId" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ecc2474-1aa2-46eb-b223-a2dcb9f479fd/endpointGroups/e8d8908a-df41-4f60-8aa4-6a214e7c7d9b"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ecc2474-1aa2-46eb-b223-a2dcb9f479fd"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5ecc2474-1aa2-46eb-b223-a2dcb9f479fd/endpointGroups/e8d8908a-df41-4f60-8aa4-6a214e7c7d9b/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 'https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/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 info

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

{
  "_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,
      "endpointId" : null,
      "gatewayClusterId" : null,
      "interceptIncludePorts" : null,
      "interceptExcludePorts" : null,
      "createdAt" : "2019-09-16T10:03:10.951+0000",
      "updatedAt" : "2019-09-16T20:03:10.951+0000",
      "name" : "Service 01",
      "interceptPorts" : {
        "include" : [ ],
        "exclude" : [ ]
      },
      "gatewayNetmask" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/services/c0a0ecab-5ac7-4459-acc2-e24c2f44bd9f"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194"
        },
        "endpoint" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/endpoints/bc4c8815-dd44-47b9-a011-76dea162d274"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/endpoints/bc4c8815-dd44-47b9-a011-76dea162d274/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",
      "endpointId" : null,
      "gatewayClusterId" : null,
      "interceptIncludePorts" : "22-22",
      "interceptExcludePorts" : "80-80",
      "createdAt" : "2019-09-16T10:03:10.951+0000",
      "updatedAt" : "2019-09-16T20:03:10.951+0000",
      "name" : "Service 02",
      "interceptPorts" : {
        "include" : [ {
          "first" : 22,
          "last" : 22
        } ],
        "exclude" : [ {
          "first" : 80,
          "last" : 80
        } ]
      },
      "gatewayNetmask" : "255.255.255.0",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/services/0cffd603-39fa-4008-b7ac-feb7762a6b22"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194"
        },
        "endpoint" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/endpoints/bc4c8815-dd44-47b9-a011-76dea162d274"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/012f7722-1ca0-4003-9e73-4edd0148e194/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

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/services' -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 info

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

{
  "_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,
      "endpointId" : null,
      "gatewayClusterId" : null,
      "interceptIncludePorts" : null,
      "interceptExcludePorts" : null,
      "createdAt" : "2019-09-16T10:03:10.829+0000",
      "updatedAt" : "2019-09-16T20:03:10.829+0000",
      "name" : "Service 01",
      "interceptPorts" : {
        "include" : [ ],
        "exclude" : [ ]
      },
      "gatewayNetmask" : "",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/services/1b7dab18-e28d-4bab-8154-c16a90a6e6b7"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5"
        },
        "endpoint" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/endpoints/ef5f53eb-4703-43e1-9ce1-b4df5f65c9b1"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/endpoints/ef5f53eb-4703-43e1-9ce1-b4df5f65c9b1/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",
      "endpointId" : null,
      "gatewayClusterId" : null,
      "interceptIncludePorts" : "22-22",
      "interceptExcludePorts" : "80-80",
      "createdAt" : "2019-09-16T10:03:10.830+0000",
      "updatedAt" : "2019-09-16T20:03:10.830+0000",
      "name" : "Service 02",
      "interceptPorts" : {
        "include" : [ {
          "first" : 22,
          "last" : 22
        } ],
        "exclude" : [ {
          "first" : 80,
          "last" : 80
        } ]
      },
      "gatewayNetmask" : "255.255.255.0",
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/services/5bec9ef1-ff83-4252-a041-90ce87d6de4f"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5"
        },
        "endpoint" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/endpoints/ef5f53eb-4703-43e1-9ce1-b4df5f65c9b1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/169fbd8d-6674-46e6-8ab1-7d5cdf1a98b5/services?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching a Service

A GET request fetches a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/198ef892-8671-4e6e-862b-8868319a6e85/services/7025f52a-cab3-4533-9003-746c95e60ecf' -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

endpointId

Null

Endpoint id associated with the service

gatewayClusterId

Null

Gateway cluster id if the service endpoint is of cluster type

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

{
  "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,
  "endpointId" : null,
  "gatewayClusterId" : null,
  "interceptIncludePorts" : null,
  "interceptExcludePorts" : null,
  "createdAt" : "2019-09-16T10:03:10.870+0000",
  "updatedAt" : "2019-09-16T20:03:10.870+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ ],
    "exclude" : [ ]
  },
  "gatewayNetmask" : "",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/198ef892-8671-4e6e-862b-8868319a6e85/services/7025f52a-cab3-4533-9003-746c95e60ecf"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/198ef892-8671-4e6e-862b-8868319a6e85"
    },
    "endpoint" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/198ef892-8671-4e6e-862b-8868319a6e85/endpoints/e2474266-3583-4230-b169-e69d107d271c"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/198ef892-8671-4e6e-862b-8868319a6e85/endpoints/e2474266-3583-4230-b169-e69d107d271c/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

subscriptionId

Null

The ID of the subscription this service is being created under

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/bda57e32-9039-49fe-ac71-ceec6a99df29/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,
  "subscriptionId" : 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

endpointId

Null

Endpoint id associated with the service

gatewayClusterId

Null

Gateway cluster id if the service endpoint is of cluster type

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

{
  "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,
  "endpointId" : null,
  "gatewayClusterId" : null,
  "interceptIncludePorts" : null,
  "interceptExcludePorts" : null,
  "createdAt" : "2019-09-16T10:03:10.890+0000",
  "updatedAt" : "2019-09-16T20:03:10.890+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ ],
    "exclude" : [ ]
  },
  "gatewayNetmask" : "",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/bda57e32-9039-49fe-ac71-ceec6a99df29/services/4379c241-f0d5-447e-880b-7807c32755d7"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/bda57e32-9039-49fe-ac71-ceec6a99df29"
    },
    "endpoint" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/bda57e32-9039-49fe-ac71-ceec6a99df29/endpoints/1a456489-de3e-467e-be14-5887ad41adf6"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/bda57e32-9039-49fe-ac71-ceec6a99df29/endpoints/1a456489-de3e-467e-be14-5887ad41adf6/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

subscriptionId

Null

The ID of the subscription this service is being created under

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/d536606d-904f-4ee3-acc5-96d80d322b14/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,
  "subscriptionId" : 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

endpointId

Null

Endpoint id associated with the service

gatewayClusterId

Null

Gateway cluster id if the service endpoint is of cluster type

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

{
  "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",
  "endpointId" : null,
  "gatewayClusterId" : null,
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-09-16T10:03:11.049+0000",
  "updatedAt" : "2019-09-16T20:03:11.049+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ {
      "first" : 22,
      "last" : 22
    } ],
    "exclude" : [ {
      "first" : 80,
      "last" : 80
    } ]
  },
  "gatewayNetmask" : "255.255.255.0",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/d536606d-904f-4ee3-acc5-96d80d322b14/services/97dfcacc-420f-4436-95c0-9358adf43877"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/d536606d-904f-4ee3-acc5-96d80d322b14"
    },
    "endpoint" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/d536606d-904f-4ee3-acc5-96d80d322b14/endpoints/ecb07bae-e67f-41ac-9606-8ce2c975410a"
    }
  }
}


Updating a Service

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

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/93dafcf7-e61b-4e78-be9b-9c9b30b02781/services/a7b3631c-89fe-46eb-a6c5-c3ccb4d61893' -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",
  "endpointId" : null,
  "gatewayClusterId" : null,
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-09-16T10:03:10.971+0000",
  "updatedAt" : "2019-09-16T20:03:10.971+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

endpointId

Null

Endpoint id associated with the service

gatewayClusterId

Null

Gateway cluster id if the service endpoint is of cluster type

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

{
  "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",
  "endpointId" : null,
  "gatewayClusterId" : null,
  "interceptIncludePorts" : "22-22",
  "interceptExcludePorts" : "80-80",
  "createdAt" : "2019-09-16T10:03:10.971+0000",
  "updatedAt" : "2019-09-16T20:03:10.971+0000",
  "name" : "Test Service 01",
  "interceptPorts" : {
    "include" : [ {
      "first" : 22,
      "last" : 22
    } ],
    "exclude" : [ {
      "first" : 80,
      "last" : 80
    } ]
  },
  "gatewayNetmask" : "255.255.255.0",
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/93dafcf7-e61b-4e78-be9b-9c9b30b02781/services/a7b3631c-89fe-46eb-a6c5-c3ccb4d61893"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/93dafcf7-e61b-4e78-be9b-9c9b30b02781"
    },
    "endpoint" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/93dafcf7-e61b-4e78-be9b-9c9b30b02781/endpoints/eac5a46b-b613-48ba-b7d8-368ac3c682ff"
    }
  }
}


Deleting a Service

A DELETE request deletes a service on a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/ee18f4ac-5b2a-4c7a-99a9-f2a4f51db16e/services/e31de433-9658-406a-86e5-e65149619c9f' -i -X DELETE -H 'Content-Type: application/json'

Example response

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


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 'https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/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 info

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

{
  "_embedded" : {
    "appWans" : [ {
      "createdAt" : "2019-09-16T10:02:58.137+0000",
      "updatedAt" : "2019-09-16T20:02:58.137+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/8fb82684-3bab-4b5d-873e-0c914a52ddfe"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/8fb82684-3bab-4b5d-873e-0c914a52ddfe/endpointGroups"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/8fb82684-3bab-4b5d-873e-0c914a52ddfe/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/8fb82684-3bab-4b5d-873e-0c914a52ddfe/services"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:58.138+0000",
      "updatedAt" : "2019-09-16T20:02:58.138+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/211b0265-0a0c-4506-81f6-24fa9aa5bd8e"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/211b0265-0a0c-4506-81f6-24fa9aa5bd8e/endpointGroups"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/211b0265-0a0c-4506-81f6-24fa9aa5bd8e/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/appWans/211b0265-0a0c-4506-81f6-24fa9aa5bd8e/services"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ad41c29b-08e3-4ca1-b4ee-adae8fc572bd/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

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans' -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 info

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

{
  "_embedded" : {
    "appWans" : [ {
      "createdAt" : "2019-09-16T10:02:58.258+0000",
      "updatedAt" : "2019-09-16T20:02:58.258+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/e9c12f8d-16fa-4e2c-b19e-590cdd36bf15"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/e9c12f8d-16fa-4e2c-b19e-590cdd36bf15/endpointGroups"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/e9c12f8d-16fa-4e2c-b19e-590cdd36bf15/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/e9c12f8d-16fa-4e2c-b19e-590cdd36bf15/services"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:58.259+0000",
      "updatedAt" : "2019-09-16T20:02:58.259+0000",
      "name" : "AppWan01",
      "status" : 300,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/ec3491c0-ae04-45b5-974d-a05fe0d6a06f"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68"
        },
        "endpointGroups" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/ec3491c0-ae04-45b5-974d-a05fe0d6a06f/endpointGroups"
        },
        "endpoints" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/ec3491c0-ae04-45b5-974d-a05fe0d6a06f/endpoints"
        },
        "services" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans/ec3491c0-ae04-45b5-974d-a05fe0d6a06f/services"
        }
      }
    } ]
  },
  "_links" : {
    "first" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a7c32949-20bc-4a70-9f34-4ca127548b68/appWans?page=0,size=10,sort=name,asc"
    }
  },
  "page" : {
    "size" : 10,
    "totalElements" : 2,
    "totalPages" : 1,
    "number" : 1
  }
}


Fetching an AppWan

A GET request fetches a specific AppWan.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f/appWans/bdf356dc-9c9a-4040-8dda-6369b8db2e4e' -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: c35939affffb6e47
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.243+0000",
  "updatedAt" : "2019-09-16T20:02:58.243+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f/appWans/bdf356dc-9c9a-4040-8dda-6369b8db2e4e"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f/appWans/bdf356dc-9c9a-4040-8dda-6369b8db2e4e/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f/appWans/bdf356dc-9c9a-4040-8dda-6369b8db2e4e/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f0f82496-fed8-4ef2-9a6a-0ed8e82ee08f/appWans/bdf356dc-9c9a-4040-8dda-6369b8db2e4e/services"
    }
  }
}


Creating an AppWan

A POST request creates an AppWan on a specific network.

Example request

Path Type Description

name

String

The AppWan’s name

subscriptionId

String

The ID of the subscription this app wan is being created under

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e/appWans' -i -X POST -H 'Content-Type: application/json' -d '{
  "name" : "Test AppWan Create",
  "subscriptionId" : "337abcbe-aa88-49c1-9b0d-87b0d8505b60"
}'

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: f94c2b321b327051
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.310+0000",
  "updatedAt" : "2019-09-16T20:02:58.310+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e/appWans/6075ce05-6f94-4116-8cf0-25927ca5c6f6"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e/appWans/6075ce05-6f94-4116-8cf0-25927ca5c6f6/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e/appWans/6075ce05-6f94-4116-8cf0-25927ca5c6f6/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/60dffde8-9890-416b-8114-e1410abd8e7e/appWans/6075ce05-6f94-4116-8cf0-25927ca5c6f6/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df/appWans/4f00c72e-458f-4c82-ada4-8bd701bfa051' -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: e35f1aec6b6f2aae
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.159+0000",
  "updatedAt" : "2019-09-16T20:02:58.159+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df/appWans/4f00c72e-458f-4c82-ada4-8bd701bfa051"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df/appWans/4f00c72e-458f-4c82-ada4-8bd701bfa051/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df/appWans/4f00c72e-458f-4c82-ada4-8bd701bfa051/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/371324bb-e3fb-44f0-880a-b96d9f6919df/appWans/4f00c72e-458f-4c82-ada4-8bd701bfa051/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "e9f0bca7-b2af-4244-aa5f-b96a52157b3a", "4bc85cd3-9e5f-4ab2-a448-65a3abd81c13" ]
}'

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: 3b913d9a15aa93e2
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.193+0000",
  "updatedAt" : "2019-09-16T20:02:58.193+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/e2b9f84b-ceb2-44bc-be80-47a65331b232/appWans/88df00f0-f5fe-4f46-ba80-29dfd0a2cb4f/endpoints' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "f5e96693-6c85-4c44-8509-5137c5a24b29", "ab34190a-0118-4be6-a9d8-329499762d07" ]
}'

Example response

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


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 'https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb/appWans/f1161fc6-1b63-4715-a07a-4d6b4ebd06e3/endpointGroups' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "3958461d-91bd-438d-84f8-49d17f9e6047", "65d98b10-161d-47d2-8608-a70c3a273d83" ]
}'

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: 038666eda8a5272a
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.211+0000",
  "updatedAt" : "2019-09-16T20:02:58.211+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb/appWans/f1161fc6-1b63-4715-a07a-4d6b4ebd06e3"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb/appWans/f1161fc6-1b63-4715-a07a-4d6b4ebd06e3/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb/appWans/f1161fc6-1b63-4715-a07a-4d6b4ebd06e3/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/17a5bca5-c9fa-44ac-b0bb-1df0d1150dfb/appWans/f1161fc6-1b63-4715-a07a-4d6b4ebd06e3/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/5ed18b54-22e4-4d5c-82b3-ed7d7cedc5e3/appWans/2f7c705f-956a-4f3d-a9a6-f66bef1401dd/endpointGroups' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "79e60ee7-ba29-4ff7-8f52-ae51f86e938a", "688a85a8-7186-422d-a046-f7bc301200c7" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 4ec2d03cb010910f


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 'https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpoints' -i -X POST -H 'Content-Type: application/json' -d '{
  "ids" : [ "e9f0bca7-b2af-4244-aa5f-b96a52157b3a", "4bc85cd3-9e5f-4ab2-a448-65a3abd81c13" ]
}'

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: 3b913d9a15aa93e2
Content-Type: application/json;charset=UTF-8
Content-Length: 1064

{
  "createdAt" : "2019-09-16T10:02:58.193+0000",
  "updatedAt" : "2019-09-16T20:02:58.193+0000",
  "name" : "AppWan01",
  "status" : 300,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2"
    },
    "endpointGroups" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpointGroups"
    },
    "endpoints" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/endpoints"
    },
    "services" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/a1cbb940-690b-4e3b-9615-0b7485739ce2/appWans/3a127b07-2e9f-492a-8c29-474f2a573f4a/services"
    }
  }
}


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 'https://gateway.production.netfoundry.io/rest/v1/networks/d8d7cee1-fef5-4d4b-8228-9c177af037c0/appWans/f8440b43-2014-4a9e-bacd-bfc118c9ba06/services' -i -X DELETE -H 'Content-Type: application/json' -d '{
  "ids" : [ "b6aaeb68-2fb8-436e-a491-b097a19b1234", "2b588587-a70a-420a-9bdb-d1da1b3bf8f5" ]
}'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 9a8f61676793f21d


Deleting an AppWan

A DELETE request deletes an AppWan on a specific network.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/ce40b20f-c7a0-4e09-86e2-54f2be1ebf0d/appWans/c63c6c27-ad5b-45de-b39e-8d9bf4a80ad9' -i -X DELETE -H 'Content-Type: application/json'

Example response

HTTP/1.1 202 Accepted
X-B3-TraceId: 69a13d046b5e5506


ServiceGroups

The ServiceGroups resource is used to list ServiceGroups.


Listing Service Groups

A GET request lists all of the service groups.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/serviceGroups' -i -H 'Accept: application/json'

Example response

Response Fields

Path Type Description

_embedded.serviceGroupInlines

Array

An array of service groups resources

_links

Object

Links to other resources

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

{
  "_embedded" : {
    "serviceGroupInlines" : [ {
      "createdAt" : "2019-09-16T10:02:41.121+0000",
      "updatedAt" : "2019-09-16T20:02:41.121+0000",
      "name" : "Service Group 01",
      "dartServiceGroupId" : "SG951f70a6-f99c-46ff-b966-12c403eef8f5",
      "geoRegion" : {
        "createdAt" : "2019-09-16T10:02:41.133+0000",
        "updatedAt" : "2019-09-16T20:02:41.133+0000",
        "name" : "GeoRegion 01"
      },
      "transferNodePool" : {
        "createdAt" : null,
        "updatedAt" : null,
        "name" : "TN-test-123",
        "network" : null,
        "transferNodes" : null,
        "serviceGroups" : null,
        "geoRegion" : null,
        "dartDeflectPoolId" : "DP-test-123",
        "minimumChannels" : 0,
        "channelsLow" : 0,
        "channelsHigh" : 0,
        "directChannels" : 0,
        "selected" : 0,
        "selectInterval" : 0,
        "lowBandwidth" : null,
        "rollPolicy" : null
      },
      "appWan" : {
        "createdAt" : "2019-09-16T10:02:41.131+0000",
        "updatedAt" : "2019-09-16T20:02:41.131+0000",
        "name" : "AppWan01",
        "status" : 300
      },
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/serviceGroups/bb143aa0-0d78-4800-9246-44192aa32caa"
        },
        "transferNodePool" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/transferNodePools/3ee17971-04ac-47d5-b03c-9fa8dccf06f1"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/appWans/f421d7b6-ac3d-4a08-8830-0cafdbe960ca"
        }
      }
    }, {
      "createdAt" : "2019-09-16T10:02:41.134+0000",
      "updatedAt" : "2019-09-16T20:02:41.134+0000",
      "name" : "Service Group 02",
      "dartServiceGroupId" : "SG951f70a6-f99c-46ff-b966-12c403eef8f5",
      "geoRegion" : {
        "createdAt" : "2019-09-16T10:02:41.136+0000",
        "updatedAt" : "2019-09-16T20:02:41.136+0000",
        "name" : "GeoRegion 01"
      },
      "transferNodePool" : {
        "createdAt" : null,
        "updatedAt" : null,
        "name" : "TN-test-123",
        "network" : null,
        "transferNodes" : null,
        "serviceGroups" : null,
        "geoRegion" : null,
        "dartDeflectPoolId" : "DP-test-123",
        "minimumChannels" : 0,
        "channelsLow" : 0,
        "channelsHigh" : 0,
        "directChannels" : 0,
        "selected" : 0,
        "selectInterval" : 0,
        "lowBandwidth" : null,
        "rollPolicy" : null
      },
      "appWan" : {
        "createdAt" : "2019-09-16T10:02:41.135+0000",
        "updatedAt" : "2019-09-16T20:02:41.135+0000",
        "name" : "AppWan01",
        "status" : 300
      },
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/serviceGroups/e372d726-1602-4abe-802f-19ded45c8676"
        },
        "transferNodePool" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/transferNodePools/aee1c345-5c5b-4016-8188-7ebb1bda93d0"
        },
        "geoRegion" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
        },
        "network" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118"
        },
        "appWans" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/appWans/e8c871c8-237a-4284-96b7-545b9d2e1d43"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/e3c9d7b4-6e0f-4eb6-87b0-96c7e807f118/serviceGroups"
    }
  }
}


Fetching a ServiceGroup

A GET request fetches a specific ServiceGroup.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/ac86187c-6fc5-4f09-a818-f95d3a4b5531/serviceGroups/5a76c3cb-4e4c-4f03-8146-2608cb08bdc1' -i -H 'Accept: application/json'

Example response

Path Type Description

name

String

The service group name

createdAt

String

Record creation time

updatedAt

String

Record last modification time

dartServiceGroupId

String

service group id in dart application

geoRegion

Object

Geo Region of Service Group

transferNodePool

Object

Transfer Node Pool of Service Group

appWan

Object

AppWan to which Service Group belongs to

_links

Object

Links to other resources

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

{
  "createdAt" : "2019-09-16T10:02:41.344+0000",
  "updatedAt" : "2019-09-16T20:02:41.344+0000",
  "name" : "Service Group 01",
  "dartServiceGroupId" : "SG951f70a6-f99c-46ff-b966-12c403eef8f5",
  "geoRegion" : {
    "createdAt" : "2019-09-16T10:02:41.346+0000",
    "updatedAt" : "2019-09-16T20:02:41.346+0000",
    "name" : "GeoRegion 01"
  },
  "transferNodePool" : {
    "createdAt" : null,
    "updatedAt" : null,
    "name" : "TN-test-123",
    "network" : null,
    "transferNodes" : null,
    "serviceGroups" : null,
    "geoRegion" : null,
    "dartDeflectPoolId" : "DP-test-123",
    "minimumChannels" : 0,
    "channelsLow" : 0,
    "channelsHigh" : 0,
    "directChannels" : 0,
    "selected" : 0,
    "selectInterval" : 0,
    "lowBandwidth" : null,
    "rollPolicy" : null
  },
  "appWan" : {
    "createdAt" : "2019-09-16T10:02:41.344+0000",
    "updatedAt" : "2019-09-16T20:02:41.344+0000",
    "name" : "AppWan01",
    "status" : 300
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ac86187c-6fc5-4f09-a818-f95d3a4b5531/serviceGroups/5a76c3cb-4e4c-4f03-8146-2608cb08bdc1"
    },
    "transferNodePool" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ac86187c-6fc5-4f09-a818-f95d3a4b5531/transferNodePools/b6595146-8d0d-42e2-bb57-0226a427d4af"
    },
    "geoRegion" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/geoRegions/9bbca6aa-767c-4c48-b4ab-dac0ead018fc"
    },
    "network" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ac86187c-6fc5-4f09-a818-f95d3a4b5531"
    },
    "appWans" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/ac86187c-6fc5-4f09-a818-f95d3a4b5531/appWans/7ac5d5ad-5857-4fc7-930a-5d520f8387b4"
    }
  }
}


TransferNodePools

The TransferNodePools resource is used to list TransferNodePools.


Listing TransferNodePools

A GET request lists all of the TransferNodePools.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/f6acfc48-d002-42b4-a588-e5cbd3c3892d/transferNodePools/f2e9cce4-0e5f-48a8-8e6b-a63ef2fcab17' -i -H 'Accept: application/json'

Example response

Response Fields

Path Type Description

name

String

The transfer node pool’s name

network

Null

Network

transferNodes

Null

Transfer nodes

serviceGroups

Null

Service groups

geoRegion

Null

Geo Region

dartDeflectPoolId

String

Dart Deflect Pool Id if it is present in dart

minimumChannels

Number

minimum Channels

channelsLow

Number

channels Low

channelsHigh

Number

channels High

directChannels

Number

direct Channels

selected

Number

selected

selectInterval

Number

Interval - default value is 60

lowBandwidth

Null

low Bandwidth can be Yes or No

rollPolicy

Null

roll Policy can have values like full_spectrum

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: 931d01298cd29185
Content-Type: application/json;charset=UTF-8
Content-Length: 595

{
  "createdAt" : null,
  "updatedAt" : null,
  "name" : "TN-test-123",
  "network" : null,
  "transferNodes" : null,
  "serviceGroups" : null,
  "geoRegion" : null,
  "dartDeflectPoolId" : "DP-test-123",
  "minimumChannels" : 0,
  "channelsLow" : 0,
  "channelsHigh" : 0,
  "directChannels" : 0,
  "selected" : 0,
  "selectInterval" : 0,
  "lowBandwidth" : null,
  "rollPolicy" : null,
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/f6acfc48-d002-42b4-a588-e5cbd3c3892d/transferNodePools/f2e9cce4-0e5f-48a8-8e6b-a63ef2fcab17"
    }
  }
}


Fetching a TransferNodePool

A GET request fetches a specific TransferNodePool.

Example request

$ curl 'https://gateway.production.netfoundry.io/rest/v1/networks/5bce0abc-7342-424e-98ac-20c401bb2552/transferNodePools' -i -H 'Accept: application/json'

Example response

Path Type Description

_embedded.transferNodePools

Array

An array of TransferNodePool resources

_links

Object

Links to other resources and pages

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

{
  "_embedded" : {
    "transferNodePools" : [ {
      "createdAt" : null,
      "updatedAt" : null,
      "name" : "TN-test-123",
      "network" : null,
      "transferNodes" : null,
      "serviceGroups" : null,
      "geoRegion" : null,
      "dartDeflectPoolId" : "DP-test-123",
      "minimumChannels" : 0,
      "channelsLow" : 0,
      "channelsHigh" : 0,
      "directChannels" : 0,
      "selected" : 0,
      "selectInterval" : 0,
      "lowBandwidth" : null,
      "rollPolicy" : null,
      "_links" : {
        "self" : {
          "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5bce0abc-7342-424e-98ac-20c401bb2552/transferNodePools/9b188ecf-3b00-4939-92fe-d82afb0fad67"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "https://gateway.production.netfoundry.io/rest/v1/networks/5bce0abc-7342-424e-98ac-20c401bb2552/transferNodePools"
    }
  }
}

Metrics, Alarms, and Events

NetFoundry utilizes Elasticsearch as its 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 /rest/v1/elastic/ncentityevent/e741a1e6-4dda-4e6a-92fa-596130e83b55/_search/ HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: gateway.production.netfoundry.io
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: 2f8175fd569edac5
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" : [ ]
  }
}