Console Connect API (1.48.0)

Download OpenAPI specification:Download

Console Connect Support: support@consoleconnect.com License: Commercial Terms of Service

This document provides an API reference, grouped by function, describing how to use the Console Connect REST API. Products available through the Console Connect API include:

  • Ports - A port allows customers to access multiple on-demand Console Connect services, including access to cloud services, geographically separate networks (such as remote or branch offices) and the Internet, via a single network connection.
  • L2 Connections - Console Connect's point-to-point Layer 2 connection is a secured virtual private Ethernet service, transported via a fully redundant Multi-Protocol Label Switching (MPLS) enabled IP infrastructure provided by Console Connect.
  • Internet On-Demand (IO-D) - The IO-D service is carried on a fully redundant dual-stack global IP network, providing business-grade internet connectivity for enterprises and service providers.
  • CloudRouter - CloudRouter is an MPLS VPN IP based infrastructure service which provides a private Layer 3 meshed network between multiple locations and network endpoints globally for enterprises and service providers.

Ordering Ports

A detailed guide to ordering ports through the Console Connect API.

Prerequisites

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request a key: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use
  4. Your company has been verified on the Console Connect platform.

I. Preparation

I.I. Retrieve Data Center Facilities (DCF)

The following sample queries the API for a list of Data Center Facilities with details, using the filter parameter.

curl -X GET "https://api.consoleconnect.com/v2/data-center-facility?filter={"where":{"dataCenterFacility.ready":true},"skip":0,"limit":100}"`\
    -H "Authorization: Bearer <API_KEY>"

Note

See more filtering samples here

A successful request will return a detailed list of DCFs.
[
  {
    "company": {
      "privacy": {
        "network": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        },
        "community": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        }
      },
      "addresses": [
        {
          "registered": false,
          "address": "",
          "city": "Hong Kong",
          "state": "",
          "zip": "zipcode",
          "country": "HK",
          "email": null,
          "phone": null,
          "geo": {
            "type": "Point",
            "coordinates": [
              "114.177216",
              "22.302711"
            ]
          }
        }
      ],
      "parentIds": [],
      "regionalInternetRegistry": [],
      "businessRegistrationCertVerified": "UNVERIFIED",
      "website": "http://www.company.com1",
      "emailDomains": [],
      "industry": "",
      "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
      "isIoTDemoCompany": false
    },
    "username": "hkg05",
    "name": "hkg39-Asia-HK-APAC",
    "tags": [
      "offnet",
      "monthly-ports"
    ],
    "dataCenterFacility": {
      "airportCodes": [],
      "speeds": [],
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "ready": true,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "nniReady": true,
      "brandId": null,
      "canBundleCrossConnect": false
    },
    "stats": {
      "members": 0,
      "interconnections": 0,
      "followers": 5,
      "following": 0,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 0,
      "events": 0,
      "posts": 0
    },
    "provider": [
      "PCCWGLOBAL"
    ],
    "selectiveQinQTunnelProvider": [],
    "externalId": null,
    "destinationPortOnly": false,
    "verified": true,
    "nnis": null,
    "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bundleCrossConnectChargeId": null,
    "deletedAt": null,
    "createdAt": "2018-02-20T04:49:09.604Z",
    "updatedAt": "2024-11-15T00:23:58.765Z"
  },
  {
    "company": {
      "privacy": {
        "network": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        },
        "community": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        }
      },
      "addresses": [
        {
          "primary": true,
          "registered": false,
          "address": "Mega-iAdvantage, 399 Chai Wan Road",
          "city": "Hong Kong",
          "state": null,
          "zip": null,
          "country": "HK",
          "email": null,
          "phone": null,
          "geo": {
            "type": "Point",
            "coordinates": [
              "22.26637",
              "114.24658"
            ]
          }
        }
      ],
      "parentIds": [],
      "regionalInternetRegistry": [],
      "businessRegistrationCertVerified": "UNVERIFIED",
      "website": "https://sample.com",
      "emailDomains": [],
      "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
      "isIoTDemoCompany": false
    },
    "username": "sample1",
    "name": "Sample",
    "tags": [
      "free-cross-connect",
      "free"
    ],
    "dataCenterFacility": {
      "airportCodes": [
        ""
      ],
      "speeds": [],
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "ready": true,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "nniReady": true,
      "brandId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "canBundleCrossConnect": false
    },
    "stats": {
      "members": 0,
      "interconnections": 0,
      "followers": 3,
      "following": 0,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 0,
      "events": 0,
      "posts": 0
    },
    "provider": [
      "PCCWGLOBAL"
    ],
    "selectiveQinQTunnelProvider": [],
    "externalId": null,
    "destinationPortOnly": false,
    "verified": true,
    "nnis": null,
    "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bundleCrossConnectChargeId": null,
    "deletedAt": null,
    "createdAt": "2018-02-20T04:50:25.328Z",
    "updatedAt": "2024-11-25T06:09:28.667Z"
  }
]

Info

Take note of the DCF username ([0].username), Tags ([0].tags) and the list of valid speeds ([0].dataCenterFacility.speeds) for the selected DCF.

II. Reserving a Port

You can reserve a port by submitting a port order.

II.I. Submit a port order

The following sample demonstrates how to order a port.

curl -X PUT https://api.consoleconnect.com/api/company/:companyUsername/ports/orders`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "dataCenterFacility": <DCF Username>,
    "speed": "1000",
    "durationUnit": "y",
    "portName": "SAMPLE-PORT-NAME",
    "paymentType": "invoice"
   }' 

Note

Only valid speed values indicated in the DCF list will be accepted.

If successful, the API respond with port order details similar to the JSON below.
{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "portName": "Sample-port-for-docs",
  "speed": {
    "value": 1000,
    "name": "1000 Mbps"
  },
  "paymentType": "invoice",
  "discountId": null,
  "billingId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "externalId": null,
  "salesRecordId": null,
  "paymentTransactionId": null,
  "payg": true,
  "status": "created",
  "loaStatus": "TODO",
  "isEdgePort": false,
  "cancelled": false,
  "edgePayload": null,
  "requestSource": "CONSOLE_API",
  "createdBy": "username_of_creator",
  "tags": [],
  "type": "PHYSICAL",
  "isManualCreate": false,
  "isManagedEdgePort": false,
  "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "crossConnectId": null,
  "deleted": false,
  "deletedAt": null,
  "createdAt": "2024-11-27T23:12:16.647Z",
  "updatedAt": "2024-11-27T23:12:16.958Z",
  "durationUnit": "y",
  "company": {
    "officeAddress": null,
    "system": {
      "welcomeMessage": true
    },
    "company": {
      "industry": null,
      "companySize": null,
      "dateFounded": null,
      "clientId": null,
      "first": null,
      "last": null,
      "address": null,
      "city": null,
      "state": null,
      "zip": null,
      "phone": null,
      "fax": null,
      "businessType": "Internet Exchange",
      "website": "sample.com",
      "registeredName": "updatedone2",
      "addresses": [
        {
          "geo": {
            "type": "Point",
            "coordinates": []
          },
          "primary": true,
          "registered": true,
          "address": "2 Stuart Road",
          "city": "Tegucigalpa",
          "state": "hk",
          "zip": "4000",
          "country": "HN",
          "email": null,
          "phone": "01234567891"
        }
      ],
      "partnerType": "Partner DC",
      "isIoTDemoCompany": false
    },
    "cloudProviderDetails": {
      "asn": {
        "range": [
          4200099007,
          4200099009
        ]
      },
      "cloudType": "vultr",
      "companyType": "B2B",
      "bgpAuthority": "PCCWGLOBAL"
    },
    "stats": {
      "members": 210,
      "interconnections": 0,
      "followers": 0,
      "following": 3,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 14,
      "events": 0,
      "posts": 29
    },
    "country": null,
    "accountManagerEmail": null,
    "accountManagerId": null,
    "createdAt": "2019-08-09T05:32:18.613Z",
    "updatedAt": "2024-11-27T03:09:46.136Z",
    "username": "qe1",
    "deletedAt": null,
    "deleted": false,
    "verified": true,
    "tags": [
      "promoted"
    ],
    "status": "ACTIVE",
    "displayOrder": 0,
    "external": [
      {
        "id": "15",
        "type": "SDWAN",
        "status": "UNSYNCED"
      }
    ],
    "groups": [],
    "location": null,
    "summary": "<p>Testing adding new image12</p>",
    "headline": "wholesale",
    "background": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "My Company",
    "type": "COMPANY",
    "oldAvatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "verifiedIdentity": true,
    "portsActive": 13,
    "categories": [
      "Analytics",
      "AI",
      "IoT"
    ],
    "overviewImage": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "isCloudProvider": true,
    "signedCompanyRefId": 3,
    "signedCompanyVerified": true,
    "billingAccount": "139096",
    "businessRegistrationNumber": "123456",
    "selectiveQinQTunnelProvider": [],
    "isPublicL2Provider": true,
    "companies": [],
    "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "online": false
  },
  "dataCenterFacility": {
    "system": {
      "welcomeMessage": null
    },
    "company": {
      "privacy": {
        "network": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        },
        "community": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        }
      },
      "industry": null,
      "businessType": null,
      "partnerType": null,
      "companySize": null,
      "dateFounded": null,
      "registeredName": null,
      "businessRegistrationCertReference": null,
      "businessRegistrationCertUploadedAt": null,
      "businessRegistrationCertRejectedReason": null,
      "clientId": null,
      "first": null,
      "last": null,
      "address": null,
      "city": null,
      "state": null,
      "zip": null,
      "phone": null,
      "fax": null,
      "addresses": [
        {
          "geo": {
            "type": "Point",
            "coordinates": [
              "28.26637",
              "194.24658"
            ]
          },
          "primary": true,
          "registered": false,
          "address": "Sample DCF, 112 Chai Wan Road",
          "city": "Hong Kong",
          "state": null,
          "zip": null,
          "country": "HK",
          "email": null,
          "phone": null
        }
      ],
      "regionalInternetRegistry": [],
      "businessRegistrationCertVerified": "UNVERIFIED",
      "website": "https://www.sample.net/index.php/locations/sample",
      "emailDomains": [],
      "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
      "isIoTDemoCompany": false
    },
    "dataCenterFacility": {
      "airportCodes": [
        ""
      ],
      "speeds": [],
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "ready": true,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "nniReady": true,
      "brandId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "canBundleCrossConnect": false
    },
    "cloudProviderDetails": {
      "asn": {
        "range": []
      },
      "bgpAuthority": "PCCWGLOBAL",
      "companyType": "DCP"
    },
    "stats": {
      "members": 0,
      "interconnections": 0,
      "followers": 3,
      "following": 0,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 0,
      "events": 0,
      "posts": 0
    },
    "overviewImage": null,
    "country": null,
    "businessRegistrationNumber": null,
    "isPublicL2Provider": false,
    "signedCompanyRefId": null,
    "accountManagerEmail": null,
    "accountManagerId": null,
    "createdAt": "2018-02-20T04:50:25.328Z",
    "updatedAt": "2024-11-25T06:09:28.667Z",
    "username": "sampledcf",
    "deletedAt": null,
    "deleted": false,
    "verified": true,
    "tags": [
      "free-cross-connect",
      "free"
    ],
    "status": "ACTIVE",
    "displayOrder": -299,
    "groups": [],
    "location": null,
    "summary": null,
    "headline": null,
    "background": null,
    "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "Sample DCF",
    "type": "DATA_CENTER_FACILITY",
    "popIds": [
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    ],
    "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "costbookLocation": {
      "name": "ASIA 1",
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "deletedAt": null,
      "createdAt": "2019-05-21T04:09:32.819Z",
      "updatedAt": "2019-11-05T01:31:28.426Z",
      "tags": [
        "generated"
      ],
      "gatewayIds": [],
      "regionIds": [
        "xxxxxxxxxxxxxxxxxxxxxxxx"
      ],
      "regions": [
        {
          "name": "APAC",
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "deletedAt": null,
          "createdAt": "2017-12-18T00:26:28.610Z",
          "updatedAt": "2020-08-26T03:37:52.387Z",
          "deleted": false,
          "priceMultiplier": 1,
          "insightRegion": "Asia"
        }
      ],
      "gateways": []
    },
    "provider": [
      "PCCWGLOBAL"
    ],
    "verifiedIdentity": false,
    "destinationPortOnly": false,
    "categories": [],
    "nnis": null,
    "isCloudProvider": false,
    "l3CostbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "bundleCrossConnectChargeId": null,
    "selectiveQinQTunnelProvider": [],
    "signedCompanyVerified": false,
    "companies": [],
    "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "online": false
  },
  "metro": {
    "name": "Hong Kong",
    "code": "HKG",
    "logo": null,
    "canCreateController": false,
    "tags": [],
    "description": "a",
    "country": "hk",
    "rir": "APNIC",
    "regionIds": [
      "xxxxxxxxxxxxxxxxxxxxxxxx"
    ],
    "ready": true,
    "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "deletedAt": null,
    "createdAt": "2017-12-18T00:45:44.120Z",
    "updatedAt": "2024-02-25T05:02:47.267Z",
    "deleted": false
  },
  "capabilities": {}
}

Note

Take note of your Order ID (id).

II.II. Letter Of Authorization

This section provides details to Letter of Authorization (LOA)

On-Net with Cross Connect add-on / On-Net with Free Cross Connect

Upon successful execution of the Port Ordering API, an email will be sent to the user who initiated the order - in this case, the user with the API Key. The email will include a button or link to upload a Letter of Authorization (LOA). This LOA grants the Console Connect Team authorization to proceed with the installation of the cross connect to the customer's port.

Note

LOAs for on-net data centers will be available in around 24 hours.

On-Net without Cross Connect add-on

Upon successful execution of the Port Ordering API, an email will be sent to the user who initiated the order - in this case, the user with the API Key. Console Connect will then upload the Letter of Authorization (LOA) for the port, granting the customer authorization to install the cross connect independently.

Note

For extended (off-net) locations, the LOA may take 4-6 weeks.

Off-Net

Upon successful execution of the Port Ordering API, a confirmation email will be sent to the user who initiated the order. The Console Connect team will then place an order for the interconnect to the remote data center through a partner. Once the partner has completed the interconnect installation, Console Connect will obtain the Letter of Authorization (LOA) from the partner and forward it to the customer, who will also be able to download the LOA from the port order.

II.III. Obtaining Order Details

This Section describes how to track order status and get other order information.

curl -X GET "https://api.consoleconnect.com/api/company/:companyName/ports/orders/:orderId"`\
    -H "Authorization: Bearer <API_KEY>"

For more information on your port order status please refer to our Create a port order/reservation page

If the request was successful, will return the port order details similar to the JSON below.
{
  "billingId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "cancelled": false,
  "cancelledAt": "1970-01-01T00:00:00.000Z",
  "cancelledBy": null,
  "company": {
    "tags": [],
    "__v": 0,
    "avatar": null,
    "avatarId": null,
    "background": null,
    "capabilities": {},
    "companies": [],
    "company": {},
    "createdAt": "2017-02-06T23:20:46.291Z",
    "defaultPaymentType": null,
    "deleted": false,
    "deletedAt": null,
    "displayOrder": -299,
    "groups": [],
    "headline": null,
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "isSupport": false,
    "legalEntityId": null,
    "linkUserCompany": {},
    "location": null,
    "name": "Company 1",
    "online": false,
    "optIntoMarketingEmail": false,
    "overviewImage": null,
    "phone": null,
    "popIds": [],
    "stats": {},
    "status": "ACTIVE",
    "summary": null,
    "system": {},
    "type": "COMPANY",
    "updatedAt": "2017-02-06T23:20:46.291Z",
    "username": "company1",
    "verified": true,
    "verifiedIdentity": true
  },
  "controller": {
    "asn": null,
    "cerAsn": null,
    "cerIp": {},
    "id": null,
    "ip": {},
    "serviceLayerId": null,
    "vlan": null
  },
  "createdAt": "2016-03-02T07:07:28.195Z",
  "createdBy": "stan",
  "deleted": false,
  "deletedAt": "1970-01-01T00:00:00.000Z",
  "deletedBy": null,
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "locationId": null,
  "crossConnectId": null,
  "message": null,
  "metro": {
    "country": "USA",
    "createdAt": "2016-02-12T09:01:33.840Z",
    "deleted": false,
    "deletedAt": null,
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "SJC",
    "updatedAt": "2016-02-12T09:01:33.840Z"
  },
  "port": {
    "activeChangedAt": "2016-03-02T07:07:27.147Z",
    "createdAt": "2016-03-02T07:07:27.148Z",
    "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "deleted": false,
    "deletedAt": "1970-01-01T00:00:00.000Z",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "ip": {},
    "locationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "metroId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "PORT_1",
    "portId": null,
    "speed": 1000,
    "status": "UNKNOWN",
    "type": "PHYSICAL_NSP",
    "updatedAt": "2016-03-02T07:07:27.148Z",
    "vlan": null
  },
  "portName": "PORT_1",
  "speed": {
    "name": "1000 Mbps",
    "value": 1000
  },
  "status": "created",
  "updatedAt": "2016-03-02T07:07:28.195Z",
  "updatedBy": null
}

Note

Take note of your Order Status (.status).

Creating L2 Connection

A detailed guideline for creating a port-to-port or business-to-business layer 2 connection request through the Console Connect API Service.

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.
  4. Your company has been verified on the Console Connect platform.

I. Creating a Port-to-Port Layer 2 Connection

An L2 connectivity in which a user establishes a link between two ports managed by the same organization. This setup indicates that the user has precise knowledge of the ports involved in the connection. Below is a guideline to establish a port-to-port connectivity through the Console Connect API Service.

I.I. Listing ports for source port and destination port

To list all ports owned by your company execute the following curl command:

curl -X GET https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of ports for the given company.
{
  "results": [
    {
      "dcpCompanyId": null,
      "name": "XXXX CONNECTIVITY",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "speedOverprovisioningFactor": 1,
      "singleService": false,
      "locationId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "popId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "ACTIVE",
      "serviceStatus": "OPEN",
      "linkState": "UP",
      "linkStateUpSince": null,
      "linkStateSyncedAt": "2021-06-08T01:05:03.507Z",
      "type": "NNI",
      "isEdgePort": false,
      "edgePayload": null,
      "mediaType": "COPPER",
      "partner": {
        "type": "NONE",
        "connectionSpeeds": []
      },
      "ip": {
        "ipv4": null,
        "ipv6": null
      },
      "capabilities": {
        "model6Limit": false,
        "model6LimitNumber": null,
        "singleService": false
      },
      "activeChangedAt": "2021-06-08T01:05:33.694Z",
      "firstActiveAt": "2021-06-08T01:05:03.706Z",
      "updatedAt": "2023-01-24T02:08:29.005Z",
      "createdAt": "2021-06-08T01:04:59.457Z",
      "deleted": false,
      "deletedAt": null,
      "importedAt": null,
      "importer": null,
      "salesRecordId": "123456",
      "paymentType": "plan",
      "payg": null,
      "onboarded": true,
      "onboardedBy": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "onboardedAt": "2021-06-08T01:04:59.455Z",
      "onboardedStatus": "COMPLETE",
      "onboardedStatusDetail": null,
      "onboardedDeviceName": "usw01.pop01.hkg39",
      "onboardedInterfaceName": "GigabitEthernet0/0/11",
      "onboardedAllocatedBandwidth": 10,
      "billingId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "vlanRanges": [
        {
          "start": 1000,
          "end": 1010
        }
      ],
      "iciLink": "A",
      "reportingLabels": [
        "Meeting place port"
      ],
      "supportedServices": [
        "L2"
      ],
      "cosTransparency": null,
      "cosMapping": {
        "GOLD": [
          ""
        ],
        "SILVERPLUS": [],
        "SILVER": [
          ""
        ],
        "BRONZE": []
      },
      "externalId": "port-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "ticketLink": null,
      "crossConnectXcOwner": null,
      "crossConnectFullDemarc": null,
      "interconnectEnabled": null,
      "interconnectProvider": null,
      "interconnectOrderNumber": null,
      "interconnectCircuitId": null,
      "interconnectCompletedAt": null,
      "interconnectVlanRange": null,
      "interconnectNniPortName": null,
      "localLoopEnabled": null,
      "localLoopId": null,
      "localLoopCustomerId": null,
      "localLoopProviderName": null,
      "localLoopSalesRecordId": null,
      "localLoopBandwidth": null,
      "localLoopCompletedAt": null,
      "localLoopASideAddress": null,
      "localLoopASideXConnectId": null,
      "localLoopZSideAddress": null,
      "localLoopGsmpId": null,
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "accessCircuit": {
        "crossConnectMediaType": null
      },
      "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "capacity": {
        "total": 1000,
        "utilised": 365,
        "remaining": 635
      },
      "company": {
        "officeAddress": null,
        "system": {
          "welcomeMessage": true
        },
        "company": {
          "industry": null,
          "companySize": null,
          "dateFounded": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "businessType": "Internet Exchange",
          "website": "sample.com",
          "registeredName": "updatedone2",
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "primary": true,
              "registered": true,
              "address": "2 Stuart Road",
              "city": "Tegucigalpa",
              "state": "hk",
              "zip": "4000",
              "country": "HN",
              "email": null,
              "phone": "01234567891"
            }
          ],
          "partnerType": null,
          "isIoTDemoCompany": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": [
              4200099007,
              4200099009
            ]
          },
          "cloudType": "vultr",
          "companyType": "B2B",
          "bgpAuthority": "PCCWGLOBAL"
        },
        "stats": {
          "members": 186,
          "interconnections": 0,
          "followers": 0,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 14,
          "events": 0,
          "posts": 29
        },
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2019-08-09T05:32:18.613Z",
        "updatedAt": "2024-07-25T06:51:06.162Z",
        "username": "qe1",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "promoted"
        ],
        "status": "ACTIVE",
        "displayOrder": 0,
        "external": [
          {
            "id": "15",
            "type": "SDWAN",
            "status": "UNSYNCED"
          }
        ],
        "groups": [],
        "location": null,
        "summary": "<p>Testing adding new image12</p>",
        "headline": "wholesale",
        "background": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "SAMPLE NAME",
        "type": "COMPANY",
        "oldAvatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "verifiedIdentity": true,
        "portsActive": 14,
        "categories": [
          "Analytics",
          "AI",
          "IoT"
        ],
        "overviewImage": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "isCloudProvider": true,
        "signedCompanyRefId": 4,
        "signedCompanyVerified": true,
        "billingAccount": "115475",
        "businessRegistrationNumber": "123456",
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "dataCenterFacility": {
        "system": {
          "welcomeMessage": null
        },
        "company": {
          "privacy": {
            "network": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            },
            "community": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            }
          },
          "businessType": null,
          "partnerType": null,
          "companySize": null,
          "dateFounded": null,
          "registeredName": null,
          "businessRegistrationCertReference": null,
          "businessRegistrationCertUploadedAt": null,
          "businessRegistrationCertRejectedReason": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "registered": false,
              "address": "",
              "city": "Hong Kong",
              "state": "",
              "zip": "zipcode",
              "country": "HK",
              "email": null,
              "phone": null
            }
          ],
          "regionalInternetRegistry": [],
          "businessRegistrationCertVerified": "UNVERIFIED",
          "website": "http://www.company.com1",
          "emailDomains": [],
          "industry": "",
          "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
          "isIoTDemoCompany": false
        },
        "dataCenterFacility": {
          "airportCodes": [],
          "speeds": [],
          "metroId": "dataCenterFacility",
          "ready": true,
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "nniReady": true,
          "brandId": null,
          "canBundleCrossConnect": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": []
          },
          "bgpAuthority": "PCCWGLOBAL",
          "companyType": "DCP"
        },
        "stats": {
          "members": 0,
          "interconnections": 0,
          "followers": 5,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 0,
          "events": 0,
          "posts": 0
        },
        "overviewImage": null,
        "businessRegistrationNumber": null,
        "signedCompanyRefId": null,
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2018-02-20T04:49:09.604Z",
        "updatedAt": "2024-07-10T04:22:15.894Z",
        "username": "hkg05",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "offnet",
          "monthly-ports"
        ],
        "status": "ACTIVE",
        "displayOrder": -299,
        "groups": [],
        "location": null,
        "summary": "",
        "headline": null,
        "background": null,
        "avatarId": null,
        "name": "hkg39-Asia-HK-APAC",
        "type": "DATA_CENTER_FACILITY",
        "popIds": [
          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        ],
        "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "costbookLocation": {
          "name": "ASIA 1",
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "deletedAt": null,
          "createdAt": "2019-05-21T04:09:32.819Z",
          "updatedAt": "2019-11-05T01:31:28.426Z",
          "tags": [
            "generated"
          ],
          "gatewayIds": [],
          "regionIds": [
            "xxxxxxxxxxxxxxxxxxxxxxxx"
          ],
          "regions": [
            {
              "name": "APAC",
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "deletedAt": null,
              "createdAt": "2017-12-18T00:26:28.610Z",
              "updatedAt": "2018-09-11T04:15:10.124Z",
              "deleted": false,
              "priceMultiplier": 1,
              "insightRegion": "Asia"
            }
          ],
          "gateways": []
        },
        "verifiedIdentity": false,
        "provider": [
          "PCCWGLOBAL"
        ],
        "destinationPortOnly": false,
        "categories": [],
        "nnis": null,
        "isCloudProvider": false,
        "l3CostbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "bundleCrossConnectChargeId": null,
        "signedCompanyVerified": false,
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "connections": [
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        },
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME2",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        }
      ],
      "metro": {
        "name": "Hong Kong",
        "code": "HKG",
        "country": "hk",
        "rir": "APNIC",
        "regionIds": [
          "xxxxxxxxxxxxxxxxxxxxxxxx"
        ],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "deletedAt": null,
        "createdAt": "2017-12-18T00:45:44.120Z",
        "updatedAt": "2024-02-25T05:02:47.267Z",
        "logo": null,
        "description": "a",
        "ready": true,
        "canCreateController": false,
        "deleted": false,
        "tags": []
      }
    }
  ]
}

Note:

Take note of your port ID (Sample: results[0].id), speed (Sample: results[0].speed), and metro ID (Sample: results[0].metroId) of the destination port.

I.II. Creating S2S (Self to Self) Connectivity request

Below is a sample curl command that will execute the creation of L2 Connection (port to port), it accepts your company username as path parameter.

curl -X PUT https://api.consoleconnect.com/api/v2/company/:companyUsername/connections/layer2`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "name":"DEMO-L2-S2S",
    "portId":"xxxxxxxxxxxxxxxxxxxxxxxx",
    "destPortId":"xxxxxxxxxxxxxxxxxxxxxxxx",
    "destCompany": <COMPANY_USERNAME>,
    "destMetroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "duration":1,
    "durationUnit":"m",
    "paymentType":"invoice",
    "classOfService":"SILVER",
    "speed":100,
    "type":"LAYER2",
    "evergreen":true
  }' 

II. Creating a Business-to-Business Connection

An L2 connectivity where in a user initiates a link between two ports managed by separate organizations. Consequently, the user does not have prior knowledge of which specific port will be used for the connection.

II.I. Listing ports for source port

To list all ports owned by your company execute the following curl command:

curl -X GET https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of ports for the given company.
{
  "results": [
    {
      "dcpCompanyId": null,
      "name": "XXXX CONNECTIVITY",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "speedOverprovisioningFactor": 1,
      "singleService": false,
      "locationId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "popId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "ACTIVE",
      "serviceStatus": "OPEN",
      "linkState": "UP",
      "linkStateUpSince": null,
      "linkStateSyncedAt": "2021-06-08T01:05:03.507Z",
      "type": "NNI",
      "isEdgePort": false,
      "edgePayload": null,
      "mediaType": "COPPER",
      "partner": {
        "type": "NONE",
        "connectionSpeeds": []
      },
      "ip": {
        "ipv4": null,
        "ipv6": null
      },
      "capabilities": {
        "model6Limit": false,
        "model6LimitNumber": null,
        "singleService": false
      },
      "activeChangedAt": "2021-06-08T01:05:33.694Z",
      "firstActiveAt": "2021-06-08T01:05:03.706Z",
      "updatedAt": "2023-01-24T02:08:29.005Z",
      "createdAt": "2021-06-08T01:04:59.457Z",
      "deleted": false,
      "deletedAt": null,
      "importedAt": null,
      "importer": null,
      "salesRecordId": "123456",
      "paymentType": "plan",
      "payg": null,
      "onboarded": true,
      "onboardedBy": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "onboardedAt": "2021-06-08T01:04:59.455Z",
      "onboardedStatus": "COMPLETE",
      "onboardedStatusDetail": null,
      "onboardedDeviceName": "usw01.pop01.hkg39",
      "onboardedInterfaceName": "GigabitEthernet0/0/11",
      "onboardedAllocatedBandwidth": 10,
      "billingId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "vlanRanges": [
        {
          "start": 1000,
          "end": 1010
        }
      ],
      "iciLink": "A",
      "reportingLabels": [
        "Meeting place port"
      ],
      "supportedServices": [
        "L2"
      ],
      "cosTransparency": null,
      "cosMapping": {
        "GOLD": [
          ""
        ],
        "SILVERPLUS": [],
        "SILVER": [
          ""
        ],
        "BRONZE": []
      },
      "externalId": "port-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "ticketLink": null,
      "crossConnectXcOwner": null,
      "crossConnectFullDemarc": null,
      "interconnectEnabled": null,
      "interconnectProvider": null,
      "interconnectOrderNumber": null,
      "interconnectCircuitId": null,
      "interconnectCompletedAt": null,
      "interconnectVlanRange": null,
      "interconnectNniPortName": null,
      "localLoopEnabled": null,
      "localLoopId": null,
      "localLoopCustomerId": null,
      "localLoopProviderName": null,
      "localLoopSalesRecordId": null,
      "localLoopBandwidth": null,
      "localLoopCompletedAt": null,
      "localLoopASideAddress": null,
      "localLoopASideXConnectId": null,
      "localLoopZSideAddress": null,
      "localLoopGsmpId": null,
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "accessCircuit": {
        "crossConnectMediaType": null
      },
      "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "capacity": {
        "total": 1000,
        "utilised": 365,
        "remaining": 635
      },
      "company": {
        "officeAddress": null,
        "system": {
          "welcomeMessage": true
        },
        "company": {
          "industry": null,
          "companySize": null,
          "dateFounded": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "businessType": "Internet Exchange",
          "website": "sample.com",
          "registeredName": "updatedone2",
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "primary": true,
              "registered": true,
              "address": "2 Stuart Road",
              "city": "Tegucigalpa",
              "state": "hk",
              "zip": "4000",
              "country": "HN",
              "email": null,
              "phone": "01234567891"
            }
          ],
          "partnerType": null,
          "isIoTDemoCompany": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": [
              4200099007,
              4200099009
            ]
          },
          "cloudType": "vultr",
          "companyType": "B2B",
          "bgpAuthority": "PCCWGLOBAL"
        },
        "stats": {
          "members": 186,
          "interconnections": 0,
          "followers": 0,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 14,
          "events": 0,
          "posts": 29
        },
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2019-08-09T05:32:18.613Z",
        "updatedAt": "2024-07-25T06:51:06.162Z",
        "username": "qe1",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "promoted"
        ],
        "status": "ACTIVE",
        "displayOrder": 0,
        "external": [
          {
            "id": "15",
            "type": "SDWAN",
            "status": "UNSYNCED"
          }
        ],
        "groups": [],
        "location": null,
        "summary": "<p>Testing adding new image12</p>",
        "headline": "wholesale",
        "background": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "SAMPLE NAME",
        "type": "COMPANY",
        "oldAvatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "verifiedIdentity": true,
        "portsActive": 14,
        "categories": [
          "Analytics",
          "AI",
          "IoT"
        ],
        "overviewImage": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "isCloudProvider": true,
        "signedCompanyRefId": 4,
        "signedCompanyVerified": true,
        "billingAccount": "115475",
        "businessRegistrationNumber": "123456",
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "dataCenterFacility": {
        "system": {
          "welcomeMessage": null
        },
        "company": {
          "privacy": {
            "network": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            },
            "community": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            }
          },
          "businessType": null,
          "partnerType": null,
          "companySize": null,
          "dateFounded": null,
          "registeredName": null,
          "businessRegistrationCertReference": null,
          "businessRegistrationCertUploadedAt": null,
          "businessRegistrationCertRejectedReason": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "registered": false,
              "address": "",
              "city": "Hong Kong",
              "state": "",
              "zip": "zipcode",
              "country": "HK",
              "email": null,
              "phone": null
            }
          ],
          "regionalInternetRegistry": [],
          "businessRegistrationCertVerified": "UNVERIFIED",
          "website": "http://www.company.com1",
          "emailDomains": [],
          "industry": "",
          "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
          "isIoTDemoCompany": false
        },
        "dataCenterFacility": {
          "airportCodes": [],
          "speeds": [],
          "metroId": "dataCenterFacility",
          "ready": true,
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "nniReady": true,
          "brandId": null,
          "canBundleCrossConnect": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": []
          },
          "bgpAuthority": "PCCWGLOBAL",
          "companyType": "DCP"
        },
        "stats": {
          "members": 0,
          "interconnections": 0,
          "followers": 5,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 0,
          "events": 0,
          "posts": 0
        },
        "overviewImage": null,
        "businessRegistrationNumber": null,
        "signedCompanyRefId": null,
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2018-02-20T04:49:09.604Z",
        "updatedAt": "2024-07-10T04:22:15.894Z",
        "username": "hkg05",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "offnet",
          "monthly-ports"
        ],
        "status": "ACTIVE",
        "displayOrder": -299,
        "groups": [],
        "location": null,
        "summary": "",
        "headline": null,
        "background": null,
        "avatarId": null,
        "name": "hkg39-Asia-HK-APAC",
        "type": "DATA_CENTER_FACILITY",
        "popIds": [
          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        ],
        "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "costbookLocation": {
          "name": "ASIA 1",
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "deletedAt": null,
          "createdAt": "2019-05-21T04:09:32.819Z",
          "updatedAt": "2019-11-05T01:31:28.426Z",
          "tags": [
            "generated"
          ],
          "gatewayIds": [],
          "regionIds": [
            "xxxxxxxxxxxxxxxxxxxxxxxx"
          ],
          "regions": [
            {
              "name": "APAC",
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "deletedAt": null,
              "createdAt": "2017-12-18T00:26:28.610Z",
              "updatedAt": "2018-09-11T04:15:10.124Z",
              "deleted": false,
              "priceMultiplier": 1,
              "insightRegion": "Asia"
            }
          ],
          "gateways": []
        },
        "verifiedIdentity": false,
        "provider": [
          "PCCWGLOBAL"
        ],
        "destinationPortOnly": false,
        "categories": [],
        "nnis": null,
        "isCloudProvider": false,
        "l3CostbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "bundleCrossConnectChargeId": null,
        "signedCompanyVerified": false,
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "connections": [
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        },
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME2",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        }
      ],
      "metro": {
        "name": "Hong Kong",
        "code": "HKG",
        "country": "hk",
        "rir": "APNIC",
        "regionIds": [
          "xxxxxxxxxxxxxxxxxxxxxxxx"
        ],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "deletedAt": null,
        "createdAt": "2017-12-18T00:45:44.120Z",
        "updatedAt": "2024-02-25T05:02:47.267Z",
        "logo": null,
        "description": "a",
        "ready": true,
        "canCreateController": false,
        "deleted": false,
        "tags": []
      }
    }
  ]
}

Info

Take note of your port ID (results[0].id) as your source port

II.II. Obtaining Metro precense for a specific company

To obtain the list of company's metro precense and details execute the sample curl command below.

curl -X GET https://api.consoleconnect.com/api/company/:companyUsername/metro/capabilities`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of DCFs.
{
  "results": [
    {
      "name": "Hong Kong",
      "code": "HKG",
      "logo": null,
      "canCreateController": false,
      "tags": [],
      "description": "a",
      "country": "hk",
      "rir": "APNIC",
      "regionIds": [
        "xxxxxxxxxxxxxxxxxxxxxxxx"
      ],
      "ready": true,
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "deletedAt": null,
      "createdAt": "2017-12-18T00:45:44.120Z",
      "updatedAt": "2024-02-25T05:02:47.267Z",
      "deleted": false,
      "capabilities": {
        "layer2": true
      },
      "firstDataCenterFacilityIdInMetro": "xxxxxxxxxxxxxxxxxxxxxxxx"
    }
  ]
}

Info

Take note of the metro ID (id), and region IDs (metro.regionIds)

II.III. Searching Data Center Facilities (DCF)

Below is an example execution of API to filter and return a list Data Center Facilities with details based on the filter query parameter.

curl -X GET "https://api.consoleconnect.com/v2/data-center-facility?filter={"where":{"dataCenterFacility.ready":true, "dataCenterFacility.metroId": "xxxxxxxxxxxxxxxxxxxxxxxx"},"skip":0,"limit":100}"`\
    -H "Authorization: Bearer <API_KEY>"

Note

See more filtering samples here

If the request was successful, it will respond with a detailed list of DCFs.
[
  {
    "company": {
      "privacy": {
        "network": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        },
        "community": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        }
      },
      "addresses": [
        {
          "registered": false,
          "address": "",
          "city": "Hong Kong",
          "state": "",
          "zip": "zipcode",
          "country": "HK",
          "email": null,
          "phone": null,
          "geo": {
            "type": "Point",
            "coordinates": [
              "114.177216",
              "22.302711"
            ]
          }
        }
      ],
      "parentIds": [],
      "regionalInternetRegistry": [],
      "businessRegistrationCertVerified": "UNVERIFIED",
      "website": "http://www.company.com1",
      "emailDomains": [],
      "industry": "",
      "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
      "isIoTDemoCompany": false
    },
    "username": "hkg05",
    "name": "hkg39-Asia-HK-APAC",
    "tags": [
      "offnet",
      "monthly-ports"
    ],
    "dataCenterFacility": {
      "airportCodes": [],
      "speeds": [],
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "ready": true,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "nniReady": true,
      "brandId": null,
      "canBundleCrossConnect": false
    },
    "stats": {
      "members": 0,
      "interconnections": 0,
      "followers": 5,
      "following": 0,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 0,
      "events": 0,
      "posts": 0
    },
    "provider": [
      "PCCWGLOBAL"
    ],
    "selectiveQinQTunnelProvider": [],
    "externalId": null,
    "destinationPortOnly": false,
    "verified": true,
    "nnis": null,
    "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bundleCrossConnectChargeId": null,
    "deletedAt": null,
    "createdAt": "2018-02-20T04:49:09.604Z",
    "updatedAt": "2024-11-15T00:23:58.765Z"
  },
  {
    "company": {
      "privacy": {
        "network": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        },
        "community": {
          "mode": "PUBLIC",
          "blackListIds": [],
          "whiteListIds": []
        }
      },
      "addresses": [
        {
          "primary": true,
          "registered": false,
          "address": "Mega-iAdvantage, 399 Chai Wan Road",
          "city": "Hong Kong",
          "state": null,
          "zip": null,
          "country": "HK",
          "email": null,
          "phone": null,
          "geo": {
            "type": "Point",
            "coordinates": [
              "22.26637",
              "114.24658"
            ]
          }
        }
      ],
      "parentIds": [],
      "regionalInternetRegistry": [],
      "businessRegistrationCertVerified": "UNVERIFIED",
      "website": "https://sample.com",
      "emailDomains": [],
      "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
      "isIoTDemoCompany": false
    },
    "username": "sample1",
    "name": "Sample",
    "tags": [
      "free-cross-connect",
      "free"
    ],
    "dataCenterFacility": {
      "airportCodes": [
        ""
      ],
      "speeds": [],
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "ready": true,
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "nniReady": true,
      "brandId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
      "canBundleCrossConnect": false
    },
    "stats": {
      "members": 0,
      "interconnections": 0,
      "followers": 3,
      "following": 0,
      "privateArticles": 0,
      "privateEvents": 0,
      "privatePosts": 0,
      "articles": 0,
      "events": 0,
      "posts": 0
    },
    "provider": [
      "PCCWGLOBAL"
    ],
    "selectiveQinQTunnelProvider": [],
    "externalId": null,
    "destinationPortOnly": false,
    "verified": true,
    "nnis": null,
    "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bundleCrossConnectChargeId": null,
    "deletedAt": null,
    "createdAt": "2018-02-20T04:50:25.328Z",
    "updatedAt": "2024-11-25T06:09:28.667Z"
  }
]

Info

Take note of the DCF ID ([0].id).

II.IV. Creating B2B (Business to Business) Connectivity Request

Below is a sample curl command that will execute the creation of L2 Connection (Business to Business) request, it accepts your company username as path parameter.

curl -X PUT https://api.consoleconnect.com/api/v2/company/:companyUsername/connections/layer2`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "name":"DEMO-L2-B2B-for-docs",
    "portId":"xxxxxxxxxxxxxxxxxxxxxxxx",
    "destCompany": <COMPANY_USERNAME>,
    "destDcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "destMetroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "destRegionId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "duration":1,
    "durationUnit":"m",
    "paymentType":"invoice",
    "classOfService":"SILVER",
    "speed":100,
    "type":"LAYER2",
    "evergreen":true
  }' 

Provisioning IO-D

A detailed guideline for provisioning Internet On-Demand (IO-D) Service with client system through Console Connect API Service.

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.
  4. Your company has been verified on the Console Connect platform.

I. Prerequisite Procedures

Similar series of steps to perform to obtain the relevant data required for provisioning IO-D Service.

I.I. Acquiring user details

The user ID, company ID, and company username is obtained upon execution of API GET /api/auth/token. This provides information to the currently authenticated user

curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:

{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
   "companies": [
        {
            "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
            "name": "Demo",
            "username": "demo",
            // other properties...
        }
    ]
    // other properties...
}

Note:

Take note of your user id (id), company id (companies[0].id), and company username (companies[0].username).

I.II. Listing ports for your company and Checking port's remaining capacity

To list all ports owned by your company execute the following curl command:

curl -X GET https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of ports for the given company.
{
  "results": [
    {
      "dcpCompanyId": null,
      "name": "XXXX CONNECTIVITY",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "speedOverprovisioningFactor": 1,
      "singleService": false,
      "locationId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "popId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "ACTIVE",
      "serviceStatus": "OPEN",
      "linkState": "UP",
      "linkStateUpSince": null,
      "linkStateSyncedAt": "2021-06-08T01:05:03.507Z",
      "type": "NNI",
      "isEdgePort": false,
      "edgePayload": null,
      "mediaType": "COPPER",
      "partner": {
        "type": "NONE",
        "connectionSpeeds": []
      },
      "ip": {
        "ipv4": null,
        "ipv6": null
      },
      "capabilities": {
        "model6Limit": false,
        "model6LimitNumber": null,
        "singleService": false
      },
      "activeChangedAt": "2021-06-08T01:05:33.694Z",
      "firstActiveAt": "2021-06-08T01:05:03.706Z",
      "updatedAt": "2023-01-24T02:08:29.005Z",
      "createdAt": "2021-06-08T01:04:59.457Z",
      "deleted": false,
      "deletedAt": null,
      "importedAt": null,
      "importer": null,
      "salesRecordId": "123456",
      "paymentType": "plan",
      "payg": null,
      "onboarded": true,
      "onboardedBy": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "onboardedAt": "2021-06-08T01:04:59.455Z",
      "onboardedStatus": "COMPLETE",
      "onboardedStatusDetail": null,
      "onboardedDeviceName": "usw01.pop01.hkg39",
      "onboardedInterfaceName": "GigabitEthernet0/0/11",
      "onboardedAllocatedBandwidth": 10,
      "billingId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "vlanRanges": [
        {
          "start": 1000,
          "end": 1010
        }
      ],
      "iciLink": "A",
      "reportingLabels": [
        "Meeting place port"
      ],
      "supportedServices": [
        "L2"
      ],
      "cosTransparency": null,
      "cosMapping": {
        "GOLD": [
          ""
        ],
        "SILVERPLUS": [],
        "SILVER": [
          ""
        ],
        "BRONZE": []
      },
      "externalId": "port-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "ticketLink": null,
      "crossConnectXcOwner": null,
      "crossConnectFullDemarc": null,
      "interconnectEnabled": null,
      "interconnectProvider": null,
      "interconnectOrderNumber": null,
      "interconnectCircuitId": null,
      "interconnectCompletedAt": null,
      "interconnectVlanRange": null,
      "interconnectNniPortName": null,
      "localLoopEnabled": null,
      "localLoopId": null,
      "localLoopCustomerId": null,
      "localLoopProviderName": null,
      "localLoopSalesRecordId": null,
      "localLoopBandwidth": null,
      "localLoopCompletedAt": null,
      "localLoopASideAddress": null,
      "localLoopASideXConnectId": null,
      "localLoopZSideAddress": null,
      "localLoopGsmpId": null,
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "accessCircuit": {
        "crossConnectMediaType": null
      },
      "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "capacity": {
        "total": 1000,
        "utilised": 365,
        "remaining": 635
      },
      "company": {
        "officeAddress": null,
        "system": {
          "welcomeMessage": true
        },
        "company": {
          "industry": null,
          "companySize": null,
          "dateFounded": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "businessType": "Internet Exchange",
          "website": "sample.com",
          "registeredName": "updatedone2",
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "primary": true,
              "registered": true,
              "address": "2 Stuart Road",
              "city": "Tegucigalpa",
              "state": "hk",
              "zip": "4000",
              "country": "HN",
              "email": null,
              "phone": "01234567891"
            }
          ],
          "partnerType": null,
          "isIoTDemoCompany": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": [
              4200099007,
              4200099009
            ]
          },
          "cloudType": "vultr",
          "companyType": "B2B",
          "bgpAuthority": "PCCWGLOBAL"
        },
        "stats": {
          "members": 186,
          "interconnections": 0,
          "followers": 0,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 14,
          "events": 0,
          "posts": 29
        },
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2019-08-09T05:32:18.613Z",
        "updatedAt": "2024-07-25T06:51:06.162Z",
        "username": "qe1",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "promoted"
        ],
        "status": "ACTIVE",
        "displayOrder": 0,
        "external": [
          {
            "id": "15",
            "type": "SDWAN",
            "status": "UNSYNCED"
          }
        ],
        "groups": [],
        "location": null,
        "summary": "<p>Testing adding new image12</p>",
        "headline": "wholesale",
        "background": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "SAMPLE NAME",
        "type": "COMPANY",
        "oldAvatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "verifiedIdentity": true,
        "portsActive": 14,
        "categories": [
          "Analytics",
          "AI",
          "IoT"
        ],
        "overviewImage": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "isCloudProvider": true,
        "signedCompanyRefId": 4,
        "signedCompanyVerified": true,
        "billingAccount": "115475",
        "businessRegistrationNumber": "123456",
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "dataCenterFacility": {
        "system": {
          "welcomeMessage": null
        },
        "company": {
          "privacy": {
            "network": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            },
            "community": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            }
          },
          "businessType": null,
          "partnerType": null,
          "companySize": null,
          "dateFounded": null,
          "registeredName": null,
          "businessRegistrationCertReference": null,
          "businessRegistrationCertUploadedAt": null,
          "businessRegistrationCertRejectedReason": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "registered": false,
              "address": "",
              "city": "Hong Kong",
              "state": "",
              "zip": "zipcode",
              "country": "HK",
              "email": null,
              "phone": null
            }
          ],
          "regionalInternetRegistry": [],
          "businessRegistrationCertVerified": "UNVERIFIED",
          "website": "http://www.company.com1",
          "emailDomains": [],
          "industry": "",
          "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
          "isIoTDemoCompany": false
        },
        "dataCenterFacility": {
          "airportCodes": [],
          "speeds": [],
          "metroId": "dataCenterFacility",
          "ready": true,
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "nniReady": true,
          "brandId": null,
          "canBundleCrossConnect": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": []
          },
          "bgpAuthority": "PCCWGLOBAL",
          "companyType": "DCP"
        },
        "stats": {
          "members": 0,
          "interconnections": 0,
          "followers": 5,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 0,
          "events": 0,
          "posts": 0
        },
        "overviewImage": null,
        "businessRegistrationNumber": null,
        "signedCompanyRefId": null,
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2018-02-20T04:49:09.604Z",
        "updatedAt": "2024-07-10T04:22:15.894Z",
        "username": "hkg05",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "offnet",
          "monthly-ports"
        ],
        "status": "ACTIVE",
        "displayOrder": -299,
        "groups": [],
        "location": null,
        "summary": "",
        "headline": null,
        "background": null,
        "avatarId": null,
        "name": "hkg39-Asia-HK-APAC",
        "type": "DATA_CENTER_FACILITY",
        "popIds": [
          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        ],
        "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "costbookLocation": {
          "name": "ASIA 1",
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "deletedAt": null,
          "createdAt": "2019-05-21T04:09:32.819Z",
          "updatedAt": "2019-11-05T01:31:28.426Z",
          "tags": [
            "generated"
          ],
          "gatewayIds": [],
          "regionIds": [
            "xxxxxxxxxxxxxxxxxxxxxxxx"
          ],
          "regions": [
            {
              "name": "APAC",
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "deletedAt": null,
              "createdAt": "2017-12-18T00:26:28.610Z",
              "updatedAt": "2018-09-11T04:15:10.124Z",
              "deleted": false,
              "priceMultiplier": 1,
              "insightRegion": "Asia"
            }
          ],
          "gateways": []
        },
        "verifiedIdentity": false,
        "provider": [
          "PCCWGLOBAL"
        ],
        "destinationPortOnly": false,
        "categories": [],
        "nnis": null,
        "isCloudProvider": false,
        "l3CostbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "bundleCrossConnectChargeId": null,
        "signedCompanyVerified": false,
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "connections": [
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        },
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME2",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        }
      ],
      "metro": {
        "name": "Hong Kong",
        "code": "HKG",
        "country": "hk",
        "rir": "APNIC",
        "regionIds": [
          "xxxxxxxxxxxxxxxxxxxxxxxx"
        ],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "deletedAt": null,
        "createdAt": "2017-12-18T00:45:44.120Z",
        "updatedAt": "2024-02-25T05:02:47.267Z",
        "logo": null,
        "description": "a",
        "ready": true,
        "canCreateController": false,
        "deleted": false,
        "tags": []
      }
    }
  ]
}

Note:

Take note of your port ID (Sample: results[0].id).

Note:

Take note of your port's remaining capacity (Sample: results[0].capacity.remaining).

I.III. Validating if your port is IO-D enabled.

To obtain the details of your port capabilities execute the following curl command:

curl -X GET https://api.consoleconnect.com/app-user/:companyId/ports/:portId/info`\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:

{
  "capabilities": {
    "giaStandardV1": true,
    "l2TypeA": false,
    "l3vpnTypeA": true,
    "qinq": true
  }
}

Note:

If capabilities.giaStandardV1's value is true, then your port is IO-D enabled.

II. Provisioning IO-D with DYNAMIC routing type and Private ASN

A detailed guideline for provisioning Internet On-Demand (IO-D) Service for a specified company (through company ID) configured with a private ASN and DYNAMIC routing type.

II.I. (Optional) Getting Private ASN Suggestion

To obtain suggested Private ASN execute the following curl command:

curl -X GET https://api.consoleconnect.com/api/private-asn/suggestion`\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:

{
  "asn": 4200000055
}

Note:

Take note of the asn value.

Note:

You may also want to look at Get Private ASN Range to obtain an ASN range result.

II.II. Provisioning IO-D Service

Below is a sample curl command that that provisions an IO-D service for a specific company through company ID as path parameter, configured to auto assign a private ASN and with DYNAMIC routing type.

curl -X POST https://api.consoleconnect.com/app-user/:companyId/gia-service`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "Sample IO-D Name",
    "rateLimit": 10,
    "type": "DYNAMIC",
    "privateAsn": true,
    "privateAsnAutoAssign": true,
    "ipBlock": 28,
    "enableIpv6": false,
    "autoAssignBgpKey": true,
    "defaultOriginate": true,
    "defaultOriginateIpv6": true,
    "duration": {
        "quantity": 5,
        "unit": "d"
    },
    "paymentType": "payg",
    "ipGeoCountry": "JP",
    "ipGeoCity": ""
   }' 

Helpful Tips:

If privateAsn property value is true & type property value is DYNAMIC:

  • Must either set privateAsnAutoAssign property value to true OR set privateAsnRequested field providing your private ASN.

Note

A helpful endpoint is available in providing you with a range of ASNs by executing Getting Private ASN Range.

  • Must provide an ipBlock

  • If enableIpv6 property value is true

    • Must supply an ipv6Block

    Note:

    Currently the only valid value for ipv6Block is 48.

  • Must either set autoAssignBgpKey property value to true or supply a 6-24 characters long string value to bgpKey.

  • Must not set or include asnId in the request body.

  • Configuring burstRate involves a set of rules:

  • IP prefix: Ensure any IP prefix you will advertise via BGP are registered and signed under your ASN in your regional Internet Routing Registry.

III. Provisioning IO-D with DYNAMIC routing type and Public ASN

A detailed guideline for provisioning Internet On-Demand (IO-D) Service for a specified company (through company ID) configured with a public ASN and DYNAMIC routing type.

III.I. Listing Verified ASN Linked your Company

To list all verified ASNs for your company simply execute the following curl command:

curl -X GET https://api.consoleconnect.com/app-user/:companyId/asns?filter={"where":{"status":"VERIFIED","private":false}}`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of ASNs.
[
  {
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "asn": "1234",
    "asSet": "AS-KEYCOM",
    "private": false,
    "skipPrefixSync": false,
    "status": "VERIFIED",
    "ipPrefixConfiguredInIPCV4": [
      "0.0.0.0/22",
      "0.0.0.0/23",
      "0.0.0.0/22",
      "0.0.0.0/22",
      "0.0.0.0/24",
      "0.0.0.0/19"
    ],
    "ipPrefixConfiguredInIPCV6": [
      "0000:0000::/29",
      "0000:0000::/29"
    ],
    "ipPrefixConfiguredInSLV4": [
      "0.0.0.0/22",
      "0.0.0.0/23",
      "0.0.0.0/22",
      "0.0.0.0/22",
      "0.0.0.0/24",
      "0.0.0.0/19"
    ],
    "ipPrefixConfiguredInSLV6": [
      "0000:0000::/29",
      "0000:0000::/29"
    ],
    "ipPrefixLastCheckedAt": "2022-08-01T04:00:24.950Z",
    "ipPrefixLastSLUpdateRequestAt": null,
    "ipPrefixLastSLUpdateSuccessAt": "2022-07-27T06:42:37.410Z",
    "ipPrefixLastErrorAt": "2024-08-02T00:27:07.910Z",
    "deallocatedAt": null,
    "ipPrefixLastErrorReason": "[object Object]",
    "company_id": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "deleted_at": null,
    "created_at": "2021-08-24T00:29:51.456Z",
    "updated_at": "2024-08-02T00:27:08.040Z"
  }
]

Note:

To add new ASN, contact Console Connect Support Team (support@consoleconnect.com) providing your ASN.

III.II. Provisioning IO-D Service

Below is a sample curl command that that provisions an IO-D service for a specific company through company ID as path parameter, configured with a public ASN and with DYNAMIC routing type.

curl -X POST https://api.consoleconnect.com/app-user/:companyId/gia-service`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "Sample IO-D Name",
    "rateLimit": 10,
    "type": "DYNAMIC",
    "privateAsn": false,
    "asnId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "ipBlock": 28,
    "enableIpv6": false,
    "autoAssignBgpKey": true,
    "defaultOriginate": true,
    "defaultOriginateIpv6": true,
    "duration": {
        "quantity": 5,
        "unit": "d"
    },
    "paymentType": "payg",
    "ipGeoCountry": "JP",
    "ipGeoCity": ""
   }' 

Helpful Tips:

If privateAsn property value is false & type property value is DYNAMIC:

  • Must supply an ASN ID ( asnId )

Note

To find your public ASN ID, execute Listing Verified ASN Linked to a Company and take note of your ASN ID ([0].id).

Note

To add a new ASN, contact Console Connect Support Team (support@consoleconnect.com) providing your ASN.

  • Must either set autoAssignBgpKey property value to true or supply a 6-24 characters long string value to bgpKey.
  • Must not set or include privateAsnRequested in the request body.
  • Must not set or include privateAsnAutoAssign in the request body.
  • Configuring burstRate involves a set of rules:
  • IP prefix: Ensure any IP prefix you will advertise via BGP are registered and signed under your ASN in your regional Internet Routing Registry.

IV. Provisioning IO-D with STATIC routing type

A detailed guideline for provisioning Internet On-Demand (IO-D) Service for a specified company (through company ID) configured with STATIC routing type.

IV.I. Provisioning IO-D Service

Below is a sample curl command that that provisions an IO-D service for a specific company through company ID as path parameter, configured to auto assign a private ASN and with STATIC routing type.

curl -X POST https://api.consoleconnect.com/app-user/:companyId/gia-service`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": "Sample IO-D Name",
    "rateLimit": 10,
    "type": "STATIC",
    "privateAsn": false,
    "privateAsnAutoAssign": true,
    "ipBlock": 28,
    "enableIpv6": false,
    "defaultOriginate": true,
    "defaultOriginateIpv6": true,
    "duration": {
        "quantity": 5,
        "unit": "d"
    },
    "paymentType": "payg",
    "ipGeoCountry": "JP",
    "ipGeoCity": ""
   }' 

Helpful Tips:

If privateAsn property value is false & type property value is DYNAMIC:

  • Must set privateAsn property value to true.
  • Must set privateAsnAutoAssign property value to true
  • Must provide an ipBlock
    • If enableIpv6 property value is true

      • Must supply an ipv6Block

      Note:

      Currently the only valid value for ipv6Block is 48.

  • Must not set or include asnId in the request body.
  • Must not set or include privateAsnRequested in the request body.
  • Must not set or include bgpKey in the request body.
  • Must not set or include autoAssignBgpKey in the request body.
  • Configuring burstRate involves a set of rules:
  • IP prefix: Ensure any IP prefix you will advertise via BGP is registered and signed under your ASN in your regional Internet Routing Registry.

CloudRouter Preparations

Prepare to work with CloudRouter via the Console Connect API.

Prerequisites

The following requirements must be met to perform the provided code samples:

  1. API Key - Contact the Console Connect Support team to request an API Key Email: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.
  4. Your company has been verified on the Console Connect platform.

I. Prerequisite Procedures

Obtain the relevant data required for working with CloudRouters.

I.I. Get user details

Get the currently authenticated user ID, company ID, and company username by executing the API GET /api/auth/token.

curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, you will receive a JSON object like this:

{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
   "companies": [
        {
            "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
            "name": "Demo",
            "username": "demo",
            // other properties...
        }
    ]
    // other properties...
}

Note:

Take note of your user id (id), company id (companies[0].id), and company username (companies[0].username).

II. Query existing CloudRouters

II.I. Query CloudRouters

To check all existing CloudRouters in your company execute the following curl command:

curl -X GET https://api.consoleconnect.com/app-user/:companyId/l3vpns`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, you will receive a list of L3VPN/CloudRouter details:
[
  {
    "name": "L3VPN Demo",
    "requestSource": "CONSOLE_APP",
    "status": "CREATED",
    "id": "674ff3279ab4acdb2ac7b3b6",
    "paymentMethod": "creditcard",
    "duration": {
      "quantity": 2,
      "unit": "m"
    },
    "bandwidth": "500MB",
    "companyId": "674ff3d003a5d7fb864139f3",
    "deletedAt": null,
    "createdAt": "2024-04-12T04:51:59.890Z",
    "updatedAt": "2024-04-12T04:52:01.587Z",
    "sites": [
      {
        "id": "60740afb-fa45-4b2e-b8c8-1b90407c3edc",
        "companyId": "674ff3d003a5d7fb864139f3",
        "l3vpnId": "674ff3279ab4acdb2ac7b3b6",
        "name": "Sample Site",
        "type": "COMPANY",
        "portId": "674ff43dfbd6059e1483bce3",
        "slVlanId": "103",
        "rateLimit": {
          "rate": 50,
          "unit": "Mbps"
        },
        "mtu": null,
        "classOfService": [
          {
            "name": "BRONZE",
            "value": 0
          },
          {
            "name": "SILVER",
            "value": 0
          },
          {
            "name": "GOLD",
            "value": 100
          }
        ],
        "redundancySiteType": "primary",
        "redundancyLinkedSiteId": null,
        "status": "DELETING",
        "simPoolId": null,
        "company_id": "674ff3d003a5d7fb864139f3",
        "l3vpn_id": "674ff3279ab4acdb2ac7b3b6",
        "sim_pool_id": null,
        "deleted_at": null,
        "created_at": "2024-04-12T04:53:30.629Z",
        "updated_at": "2024-05-21T06:59:52.316Z",
        "port_id": "674ff43dfbd6059e1483bce3",
        "peers": [
          {
            "id": "c11a8cbb-f7c8-4e0f-9d08-e9180fd8f3a3",
            "companyId": "674ff3d003a5d7fb864139f3",
            "l3vpnSiteId": "60740afb-fa45-4b2e-b8c8-1b90407c3edc",
            "slPeerUuid": "95e78516-11e2-4ec2-9ad8-6d0963d23a62",
            "type": "SELF",
            "partner": {},
            "status": "DELETING",
            "bgpKey": "gpY2o2TIaWEo03M6EGHavCbG",
            "asn": 64512,
            "externalIp": "10.124.208.58/30",
            "internalIp": "10.124.208.57/30",
            "subnet": "10.124.208.56/30",
            "defaultOriginate": false,
            "company_id": "674ff3d003a5d7fb864139f3",
            "l3vpn_site_id": "60740afb-fa45-4b2e-b8c8-1b90407c3edc",
            "deleted_at": null,
            "created_at": "2024-04-12T04:54:12.271Z",
            "updated_at": "2024-05-21T06:59:52.523Z"
          }
        ],
        "providerInfo": {
          "city": "Taipei",
          "country": "TW",
          "countryDisplayName": "Taiwan",
          "metroName": "Taipei",
          "dcfName": "123Chief Telecom - Taipei - UAT",
          "companyName": "QE1",
          "companyUsername": "qe1",
          "portName": "test port capacity",
          "portId": "674ff43dfbd6059e1483bce3",
          "dcfId": "674ff4b319b90dc02d2bd8bd",
          "metroId": "674ff4badfbe4a8f03dae4ac",
          "companyId": "674ff3d003a5d7fb864139f3",
          "portPartner": {
            "type": "NONE",
            "connectionSpeeds": []
          }
        }
      }
    ],
    "calculatedCapacity": {
      "total": 500,
      "used": 50,
      "remaining": 450
    }
  }
]

Now that you have the userId, companyId and l3vpnId, you can perform all the processes listed in the CloudRouter API documentation.

Pricing - Ports and connection

This section provides a comprehensive guide for integrating Console Connect Pricing - Ports and Layer 2 Connection API which accepts an array of port configuration or an array of connection configuration.

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.
  4. Your company has been verified on the Console Connect platform.

I. Prerequisite Procedure

I.I Searching Data Center Facilities (DCF)

Below is an example execution of API to filter and return a list Data Center Facilities with details, it accepts criteria(optional), page, and page size query parameters.

curl -X GET "https://api.consoleconnect.com/v2/data-center-facility/search?criteria={}&page=1&pageSize=10"`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of DCFs.
[{
  "company": {
    "privacy": {
      "network": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      },
      "community": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      }
    },
    "addresses": [
      {
        "registered": false,
        "address": "",
        "city": "Hong Kong",
        "state": "",
        "zip": "zipcode",
        "country": "HK",
        "email": null,
        "phone": null,
        "geo": {
          "type": "Point",
          "coordinates": []
        }
      }
    ],
    "parentIds": [],
    "regionalInternetRegistry": [],
    "businessRegistrationCertVerified": "UNVERIFIED",
    "website": "http://www.company.com1",
    "emailDomains": [],
    "industry": "",
    "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
    "isIoTDemoCompany": false
  },
  "username": "DCF_COMPANY_USERNAME",
  "name": "SAMPLE-DCF-NAME",
  "tags": [
    "offnet",
    "monthly-ports"
  ],
  "dataCenterFacility": {
    "airportCodes": [],
    "speeds": [],
    "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "ready": true,
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "nniReady": true,
    "brandId": null,
    "canBundleCrossConnect": false
  },
  "stats": {
    "members": 0,
    "interconnections": 0,
    "followers": 5,
    "following": 0,
    "privateArticles": 0,
    "privateEvents": 0,
    "privatePosts": 0,
    "articles": 0,
    "events": 0,
    "posts": 0
  },
  "provider": [
    "PCCWGLOBAL"
  ],
  "selectiveQinQTunnelProvider": [],
  "externalId": null,
  "destinationPortOnly": false,
  "verified": true,
  "nnis": null,
  "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "bundleCrossConnectChargeId": null,
  "deletedAt": null,
  "createdAt": "2018-02-20T04:49:09.604Z",
  "updatedAt": "2024-07-10T04:22:15.894Z",
  "products": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "companyId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "slug": null,
      "status": "PUBLISHED",
      "transactionType": "ENQUIRE",
      "productType": "Data centers",
      "promoted": true,
      "name": "Sample Product Name",
      "headline": "Sample Headline",
      "description": "Demo description",
      "logo": null,
      "overviewImage": null,
      "background": null,
      "categories": [
        "Data Center"
      ],
      "tags": null,
      "promoTitle": "Sample Title",
      "promoHeadline": "Sample Headline",
      "callToActionLabel": "Order rack",
      "callToActionLink": null,
      "vendorUrl": null,
      "hubspotFormId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "productFamilyId": null,
      "isAddon": false,
      "productCode": null,
      "created_at": "2021-02-16T04:18:06.026Z",
      "updated_at": "2021-05-19T06:43:38.193Z"
    }
  ],
  "isFollowing": false
}]

Info

Take note of the DCF ID ([0].id).

II. Calculate Port Pricing

This section is a detailed guideline for calculating Ports with different payload configuration.

II.I. Single Port

This sample calculates a single port with 20 Mbps bandwidth for 1 month duration.

curl -X POST https://api.consoleconnect.com/api/pricing/calculate`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "ports": [
      {
        "dcf: "xxxxxxxxxxxxxxxxxxxxxxxx",
        "speed": 1000,
        "duration": "y"
      }
    ]
   }' 
If the request was successful, it will respond with a list/array of ports or connection pricing details:
{
  "results": [
    {
      "type": "PORT",
      "entity": {
        "dcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "speed": 1000,
        "discountId": "",
        "durationUnit": "y"
      },
      "price": 300,
      "preAuthAmount": 300,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": null,
      "basicMonthlyAmount": null,
      "priceCalculatorAttributes": {
        "discountIds": [],
        "discounts": []
      }
    }
  ]
}

II.II. Single Port with Cross Connect

This sample calculates a single port with 1000 Mbps bandwidth for 1 month duration and with a cross-connect add-on.

curl -X POST https://api.consoleconnect.com/api/pricing/calculate`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "ports": [
      {
        "dcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "speed": 1000,
        "durationUnit": "y"
      }
    ],
    "includeCrossConnect": true
  }' 
If the request was successful, it will respond with a list/array of ports or connection pricing details:
{
  "results": [
    {
      "type": "PORT",
      "entity": {
        "dcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "speed": 1000,
        "discountId": "",
        "durationUnit": "y"
      },
      "price": 300,
      "preAuthAmount": 300,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": null,
      "basicMonthlyAmount": null,
      "priceCalculatorAttributes": {
        "discountIds": [],
        "discounts": []
      },
      "crossConnectAmount": 65
    }
  ]
}

II.III. Multiple Ports

This sample calculates a multiple ports with different bandwidth configuration and duration

curl -X POST https://api.consoleconnect.com/api/pricing/calculate`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
    "ports": [
      {
        "dcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "speed": 10000,
        "durationUnit": "y"
      },
      {
        "dcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "speed": 1000,
        "durationUnit": "m"
      }
    ]
  }' 
If the request was successful, it will respond with a list/array of ports or connection pricing details:
{
  "results": [
    {
      "type": "PORT",
      "entity": {
        "dcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "speed": 10000,
        "discountId": "",
        "durationUnit": "y"
      },
      "price": 400,
      "preAuthAmount": 400,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": null,
      "basicMonthlyAmount": null,
      "priceCalculatorAttributes": {
        "discountIds": [],
        "discounts": []
      }
    },
    {
      "type": "PORT",
      "entity": {
        "dcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company B",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "speed": 1000,
        "discountId": "",
        "durationUnit": "m"
      },
      "price": 450,
      "preAuthAmount": 450,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": null,
      "basicMonthlyAmount": null
    }
  ]
}

III. Calculate L2 Connection Pricing

This section is a detailed guideline for calculating Ports with different payload configuration.

III.I. Single Connection

This sample calculates a single connection with 20 Mbps bandwidth for 1 month duration.

curl -X POST https://api.consoleconnect.com/api/pricing/calculate`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
      "connections": [
        {
          "bandwidth": 20,
          "classOfService": "SILVER",
          "duration": {
            "value": 1,
            "unit": "m"
          },
          "srcDcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "destDcf": "xxxxxxxxxxxxxxxxxxxxxxxx"
        }
      ]
    }' 
If the request was successful, it will respond with a list/array of ports or connection pricing details:
{
  "results": [
    {
      "type": "CONNECTION",
      "entity": {
        "srcDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "destDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company B",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "duration": {
          "from": null,
          "to": null,
          "unit": "m",
          "value": 1
        },
        "bandwidth": 20,
        "classOfService": "SILVER",
        "discountId": ""
      },
      "price": 80,
      "preAuthAmount": 80,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": 80,
      "basicMonthlyAmount": 80,
      "formula": "(bandwidthCost*multiplier)*duration/(1-margin)+portFee",
      "factors": [
        {
          "name": "margin",
          "number": 0,
          "ref": null
        },
        {
          "name": "portFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "nniFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "bandwidthCost",
          "number": 80,
          "ref": {
            "from": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "to": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "price": {
              "price": 1.75,
              "bandwidth": {
                "from": 1,
                "to": 100
              },
              "cos": "SILVER"
            }
          }
        },
        {
          "name": "multiplier",
          "number": 1,
          "ref": null
        },
        {
          "name": "duration",
          "number": 1,
          "ref": null
        }
      ],
      "priceCalculatorAttributes": {
        "discountIds": [],
        "discounts": []
      }
    }
  ]
}

III.I. Multiple Connection

This sample calculates multiple connections with different configuration.

curl -X POST https://api.consoleconnect.com/api/pricing/calculate`\
   -H "Authorization: Bearer <API_KEY>"
   --data-raw '{
  "connections": [
      
        "bandwidth": 20,
        "classOfService": "SILVER",
        "duration": {
          "value": 1,
          "unit": "w"
        },
        "srcDcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "destDcf": "xxxxxxxxxxxxxxxxxxxxxxxx"
      },
      {
        "bandwidth": 20,
        "classOfService": "SILVER",
        "duration": {
          "value": 1,
          "unit": "m"
        },
        "srcDcf": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "destDcf": "xxxxxxxxxxxxxxxxxxxxxxxx"
      }
    ]
  }'
If the request was successful, it will respond with a list/array of ports or connection pricing details:
{
  "results": [
    {
      "type": "CONNECTION",
      "entity": {
        "srcDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "destDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company B",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "duration": {
          "from": null,
          "to": null,
          "unit": "w",
          "value": 1
        },
        "bandwidth": 20,
        "classOfService": "SILVER",
        "discountId": ""
      },
      "price": 28.8,
      "preAuthAmount": 28.8,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": 28.8,
      "basicMonthlyAmount": 28.8,
      "formula": "(bandwidthCost*multiplier)*duration/(1-margin)+portFee",
      "factors": [
        {
          "name": "margin",
          "number": 0,
          "ref": null
        },
        {
          "name": "portFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "nniFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "bandwidthCost",
          "number": 80,
          "ref": {
            "from": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "to": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "price": {
              "price": 1.75,
              "bandwidth": {
                "from": 1,
                "to": 100
              },
              "cos": "SILVER"
            }
          }
        },
        {
          "name": "multiplier",
          "number": 0.36,
          "ref": null
        },
        {
          "name": "duration",
          "number": 1,
          "ref": null
        }
      ],
      "priceCalculatorAttributes": {
        "discountIds": [],
        "discounts": []
      }
    },
    {
      "type": "CONNECTION",
      "entity": {
        "srcDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company A",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "destDcf": {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "Company B",
          "popId": null,
          "regionIds": null,
          "metroIds": null,
          "tags": null
        },
        "duration": {
          "from": null,
          "to": null,
          "unit": "m",
          "value": 1
        },
        "bandwidth": 20,
        "classOfService": "SILVER",
        "discountId": ""
      },
      "price": 80,
      "preAuthAmount": 80,
      "amountSaved": null,
      "amountSavedTotal": null,
      "basicTotalAmount": 80,
      "basicMonthlyAmount": 80,
      "formula": "(bandwidthCost*multiplier)*duration/(1-margin)+portFee",
      "factors": [
        {
          "name": "margin",
          "number": 0,
          "ref": null
        },
        {
          "name": "portFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "nniFee",
          "number": 0,
          "ref": null
        },
        {
          "name": "bandwidthCost",
          "number": 80,
          "ref": {
            "from": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "to": {
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "name": "EUROPE/UK",
              "regionIds": [
                "xxxxxxxxxxxxxxxxxxxxxxxx"
              ]
            },
            "price": {
              "price": 1.75,
              "bandwidth": {
                "from": 1,
                "to": 100
              },
              "cos": "SILVER"
            }
          }
        },
        {
          "name": "multiplier",
          "number": 1,
          "ref": null
        },
        {
          "name": "duration",
          "number": 1,
          "ref": null
        }
      ]
    }
  ]
}

Pricing - Internet On-Demand

This section provides a comprehensive guide for integrating Console Connect IO-D - Pricing API, it provides a detailed guideline on usage, response schema definition, and API behavior.

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com
  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.
  4. Your company has been verified on the Console Connect platform.

I. Internet On-Demand Pricing - Company and Port

This service calculates IO-D service charge rate by company & ports, it accepts company ID (companyId), port ID (portId), bandwidth (bandwidth), duration value (durationValue), duration unit (durationUnit) and an optional discount code (discountCode) as query parameters and responds with calculation details based on the payload configuration provided.

I.I. Acquiring user details

The user ID, company ID, and company username is obtained upon execution of API GET /api/auth/token. This provides information to the currently authenticated user

curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:

{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
   "companies": [
        {
            "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
            "name": "Demo",
            "username": "demo",
            // other properties...
        }
    ]
    // other properties...
}

Note:

Take note of your company id (companies[0].id), and company username (companies[0].username).

I.II. Listing ports for your company

To list all ports owned by your company execute the following curl command:

curl -X GET https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of ports for the given company.
{
  "results": [
    {
      "dcpCompanyId": null,
      "name": "XXXX CONNECTIVITY",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "speedOverprovisioningFactor": 1,
      "singleService": false,
      "locationId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "popId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "status": "ACTIVE",
      "serviceStatus": "OPEN",
      "linkState": "UP",
      "linkStateUpSince": null,
      "linkStateSyncedAt": "2021-06-08T01:05:03.507Z",
      "type": "NNI",
      "isEdgePort": false,
      "edgePayload": null,
      "mediaType": "COPPER",
      "partner": {
        "type": "NONE",
        "connectionSpeeds": []
      },
      "ip": {
        "ipv4": null,
        "ipv6": null
      },
      "capabilities": {
        "model6Limit": false,
        "model6LimitNumber": null,
        "singleService": false
      },
      "activeChangedAt": "2021-06-08T01:05:33.694Z",
      "firstActiveAt": "2021-06-08T01:05:03.706Z",
      "updatedAt": "2023-01-24T02:08:29.005Z",
      "createdAt": "2021-06-08T01:04:59.457Z",
      "deleted": false,
      "deletedAt": null,
      "importedAt": null,
      "importer": null,
      "salesRecordId": "123456",
      "paymentType": "plan",
      "payg": null,
      "onboarded": true,
      "onboardedBy": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "onboardedAt": "2021-06-08T01:04:59.455Z",
      "onboardedStatus": "COMPLETE",
      "onboardedStatusDetail": null,
      "onboardedDeviceName": "usw01.pop01.hkg39",
      "onboardedInterfaceName": "GigabitEthernet0/0/11",
      "onboardedAllocatedBandwidth": 10,
      "billingId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "vlanRanges": [
        {
          "start": 1000,
          "end": 1010
        }
      ],
      "iciLink": "A",
      "reportingLabels": [
        "Meeting place port"
      ],
      "supportedServices": [
        "L2"
      ],
      "cosTransparency": null,
      "cosMapping": {
        "GOLD": [
          ""
        ],
        "SILVERPLUS": [],
        "SILVER": [
          ""
        ],
        "BRONZE": []
      },
      "externalId": "port-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "ticketLink": null,
      "crossConnectXcOwner": null,
      "crossConnectFullDemarc": null,
      "interconnectEnabled": null,
      "interconnectProvider": null,
      "interconnectOrderNumber": null,
      "interconnectCircuitId": null,
      "interconnectCompletedAt": null,
      "interconnectVlanRange": null,
      "interconnectNniPortName": null,
      "localLoopEnabled": null,
      "localLoopId": null,
      "localLoopCustomerId": null,
      "localLoopProviderName": null,
      "localLoopSalesRecordId": null,
      "localLoopBandwidth": null,
      "localLoopCompletedAt": null,
      "localLoopASideAddress": null,
      "localLoopASideXConnectId": null,
      "localLoopZSideAddress": null,
      "localLoopGsmpId": null,
      "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "accessCircuit": {
        "crossConnectMediaType": null
      },
      "companyId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "capacity": {
        "total": 1000,
        "utilised": 365,
        "remaining": 635
      },
      "company": {
        "officeAddress": null,
        "system": {
          "welcomeMessage": true
        },
        "company": {
          "industry": null,
          "companySize": null,
          "dateFounded": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "businessType": "Internet Exchange",
          "website": "sample.com",
          "registeredName": "updatedone2",
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "primary": true,
              "registered": true,
              "address": "2 Stuart Road",
              "city": "Tegucigalpa",
              "state": "hk",
              "zip": "4000",
              "country": "HN",
              "email": null,
              "phone": "01234567891"
            }
          ],
          "partnerType": null,
          "isIoTDemoCompany": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": [
              4200099007,
              4200099009
            ]
          },
          "cloudType": "vultr",
          "companyType": "B2B",
          "bgpAuthority": "PCCWGLOBAL"
        },
        "stats": {
          "members": 186,
          "interconnections": 0,
          "followers": 0,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 14,
          "events": 0,
          "posts": 29
        },
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2019-08-09T05:32:18.613Z",
        "updatedAt": "2024-07-25T06:51:06.162Z",
        "username": "qe1",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "promoted"
        ],
        "status": "ACTIVE",
        "displayOrder": 0,
        "external": [
          {
            "id": "15",
            "type": "SDWAN",
            "status": "UNSYNCED"
          }
        ],
        "groups": [],
        "location": null,
        "summary": "<p>Testing adding new image12</p>",
        "headline": "wholesale",
        "background": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "avatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "SAMPLE NAME",
        "type": "COMPANY",
        "oldAvatarId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "verifiedIdentity": true,
        "portsActive": 14,
        "categories": [
          "Analytics",
          "AI",
          "IoT"
        ],
        "overviewImage": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "isCloudProvider": true,
        "signedCompanyRefId": 4,
        "signedCompanyVerified": true,
        "billingAccount": "115475",
        "businessRegistrationNumber": "123456",
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "dataCenterFacility": {
        "system": {
          "welcomeMessage": null
        },
        "company": {
          "privacy": {
            "network": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            },
            "community": {
              "mode": "PUBLIC",
              "blackListIds": [],
              "whiteListIds": []
            }
          },
          "businessType": null,
          "partnerType": null,
          "companySize": null,
          "dateFounded": null,
          "registeredName": null,
          "businessRegistrationCertReference": null,
          "businessRegistrationCertUploadedAt": null,
          "businessRegistrationCertRejectedReason": null,
          "clientId": null,
          "first": null,
          "last": null,
          "address": null,
          "city": null,
          "state": null,
          "zip": null,
          "phone": null,
          "fax": null,
          "addresses": [
            {
              "geo": {
                "type": "Point",
                "coordinates": []
              },
              "registered": false,
              "address": "",
              "city": "Hong Kong",
              "state": "",
              "zip": "zipcode",
              "country": "HK",
              "email": null,
              "phone": null
            }
          ],
          "regionalInternetRegistry": [],
          "businessRegistrationCertVerified": "UNVERIFIED",
          "website": "http://www.company.com1",
          "emailDomains": [],
          "industry": "",
          "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
          "isIoTDemoCompany": false
        },
        "dataCenterFacility": {
          "airportCodes": [],
          "speeds": [],
          "metroId": "dataCenterFacility",
          "ready": true,
          "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
          "nniReady": true,
          "brandId": null,
          "canBundleCrossConnect": false
        },
        "cloudProviderDetails": {
          "asn": {
            "range": []
          },
          "bgpAuthority": "PCCWGLOBAL",
          "companyType": "DCP"
        },
        "stats": {
          "members": 0,
          "interconnections": 0,
          "followers": 5,
          "following": 0,
          "privateArticles": 0,
          "privateEvents": 0,
          "privatePosts": 0,
          "articles": 0,
          "events": 0,
          "posts": 0
        },
        "overviewImage": null,
        "businessRegistrationNumber": null,
        "signedCompanyRefId": null,
        "accountManagerEmail": null,
        "accountManagerId": null,
        "createdAt": "2018-02-20T04:49:09.604Z",
        "updatedAt": "2024-07-10T04:22:15.894Z",
        "username": "hkg05",
        "deletedAt": null,
        "deleted": false,
        "verified": true,
        "tags": [
          "offnet",
          "monthly-ports"
        ],
        "status": "ACTIVE",
        "displayOrder": -299,
        "groups": [],
        "location": null,
        "summary": "",
        "headline": null,
        "background": null,
        "avatarId": null,
        "name": "hkg39-Asia-HK-APAC",
        "type": "DATA_CENTER_FACILITY",
        "popIds": [
          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        ],
        "costbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "costbookLocation": {
          "name": "ASIA 1",
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "deletedAt": null,
          "createdAt": "2019-05-21T04:09:32.819Z",
          "updatedAt": "2019-11-05T01:31:28.426Z",
          "tags": [
            "generated"
          ],
          "gatewayIds": [],
          "regionIds": [
            "xxxxxxxxxxxxxxxxxxxxxxxx"
          ],
          "regions": [
            {
              "name": "APAC",
              "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
              "deletedAt": null,
              "createdAt": "2017-12-18T00:26:28.610Z",
              "updatedAt": "2018-09-11T04:15:10.124Z",
              "deleted": false,
              "priceMultiplier": 1,
              "insightRegion": "Asia"
            }
          ],
          "gateways": []
        },
        "verifiedIdentity": false,
        "provider": [
          "PCCWGLOBAL"
        ],
        "destinationPortOnly": false,
        "categories": [],
        "nnis": null,
        "isCloudProvider": false,
        "l3CostbookLocationId": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "bundleCrossConnectChargeId": null,
        "signedCompanyVerified": false,
        "selectiveQinQTunnelProvider": [],
        "companies": [],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "online": false
      },
      "connections": [
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        },
        {
          "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "SAMPLE NAME2",
          "status": "ERROR",
          "speed": 10,
          "type": "LAYER2",
          "srcConfigTag": null,
          "typeFriendly": "IBM Direct Link"
        }
      ],
      "metro": {
        "name": "Hong Kong",
        "code": "HKG",
        "country": "hk",
        "rir": "APNIC",
        "regionIds": [
          "xxxxxxxxxxxxxxxxxxxxxxxx"
        ],
        "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
        "deletedAt": null,
        "createdAt": "2017-12-18T00:45:44.120Z",
        "updatedAt": "2024-02-25T05:02:47.267Z",
        "logo": null,
        "description": "a",
        "ready": true,
        "canCreateController": false,
        "deleted": false,
        "tags": []
      }
    }
  ]
}

Note:

Take note of your port ID (Sample: results[0].id).

I.III. Calculate Pricing

Request Query Schema

  • Company ID companyId - Your company ID.

  • Port ID portId - Your port ID.

  • Bandwidth bandwidth - The desired bandwidth or rate limit (in Mbps) for the IO-D service.

  • Duration value durationValue - The desired duration value

  • Duration unit durationUnit - The duration unit

Info

durationUnit Enum values: day (d), week (w), month (m), year (y)

Note:

Maximum duration value by units: days:6 | weeks:3 | months:36 | years:3

Sample IO-D Pricing - Company and Port API execution configured with duration of less than a month::

curl -X GET "https://api.test.consoleconnect.com/v2/pricing/gia/byCompanyAndPort?companyId=xxxxxxxxxxxxxxxxxxxxxxxx&portId=xxxxxxxxxxxxxxxxxxxxxxxx&bandwidth=10&durationValue=6&durationUnit=d"`\
    -H "Authorization: Bearer <API_KEY>>"

Note

Notice the durationValue & durationUnit which is equivalent to 6 days. Response may vary based on the configured duration (more than or less than a month). See Common Response Definition for more details.

See sample response for the pricing details below:

  { 
    "onceOff": {
      "giaCost": 73.97,
      "ipCosts": {
        "ipv426Cost": 34.52,
        "ipv427Cost": 24.66,
        "ipv428Cost": 0,
        "ipv429Cost": null,
        "ipv430Cost": null
      }
    },
    "burstRate": 0.004050035038912062,
    "duration": {
      "unit": "d",
      "value": 6
    }
  }

II. Internet On-Demand Pricing - By DCF

This service calculates IO-D service charge rate by a specific DCF, it accepts DCF ID (dcfId), bandwidth (bandwidth), duration value (durationValue), duration unit (durationUnit) and an optional discount code (discountCode) and company ID (companyId) as query parameters and responds with calculation details based on the configuration provided.

II.I. Searching DCFs

This endpoint provides DCF filtering capability and it returns a list of Data Center Facilities (DCF) details.

Info

Below is a sample curl command that accepts (optional) criteria, page & page size query parameters.

curl -X GET "https://api.consoleconnect.com/v2/data-center-facility/search?criteria={}&page=1&pageSize=10"`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of DCFs.
[{
  "company": {
    "privacy": {
      "network": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      },
      "community": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      }
    },
    "addresses": [
      {
        "registered": false,
        "address": "",
        "city": "Hong Kong",
        "state": "",
        "zip": "zipcode",
        "country": "HK",
        "email": null,
        "phone": null,
        "geo": {
          "type": "Point",
          "coordinates": []
        }
      }
    ],
    "parentIds": [],
    "regionalInternetRegistry": [],
    "businessRegistrationCertVerified": "UNVERIFIED",
    "website": "http://www.company.com1",
    "emailDomains": [],
    "industry": "",
    "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
    "isIoTDemoCompany": false
  },
  "username": "DCF_COMPANY_USERNAME",
  "name": "SAMPLE-DCF-NAME",
  "tags": [
    "offnet",
    "monthly-ports"
  ],
  "dataCenterFacility": {
    "airportCodes": [],
    "speeds": [],
    "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "ready": true,
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "nniReady": true,
    "brandId": null,
    "canBundleCrossConnect": false
  },
  "stats": {
    "members": 0,
    "interconnections": 0,
    "followers": 5,
    "following": 0,
    "privateArticles": 0,
    "privateEvents": 0,
    "privatePosts": 0,
    "articles": 0,
    "events": 0,
    "posts": 0
  },
  "provider": [
    "PCCWGLOBAL"
  ],
  "selectiveQinQTunnelProvider": [],
  "externalId": null,
  "destinationPortOnly": false,
  "verified": true,
  "nnis": null,
  "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "bundleCrossConnectChargeId": null,
  "deletedAt": null,
  "createdAt": "2018-02-20T04:49:09.604Z",
  "updatedAt": "2024-07-10T04:22:15.894Z",
  "products": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "companyId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "slug": null,
      "status": "PUBLISHED",
      "transactionType": "ENQUIRE",
      "productType": "Data centers",
      "promoted": true,
      "name": "Sample Product Name",
      "headline": "Sample Headline",
      "description": "Demo description",
      "logo": null,
      "overviewImage": null,
      "background": null,
      "categories": [
        "Data Center"
      ],
      "tags": null,
      "promoTitle": "Sample Title",
      "promoHeadline": "Sample Headline",
      "callToActionLabel": "Order rack",
      "callToActionLink": null,
      "vendorUrl": null,
      "hubspotFormId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "productFamilyId": null,
      "isAddon": false,
      "productCode": null,
      "created_at": "2021-02-16T04:18:06.026Z",
      "updated_at": "2021-05-19T06:43:38.193Z"
    }
  ],
  "isFollowing": false
}]

Info

Take note of DCF company username ([0].username) and DCF ID ([0].id)

II.II. (Optional) Acquiring user details

The user ID, company ID, and company username is obtained upon execution of API GET /api/auth/token. This provides information to the currently authenticated user

curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:

{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
   "companies": [
        {
            "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
            "name": "Demo",
            "username": "demo",
            // other properties...
        }
    ]
    // other properties...
}

Note:

Take note of your company id (companies[0].id).

II.III. Calculate Pricing

Request Query Schema

  • DCF ID dcfId - Data Center Facility (DCF) ID.

  • Bandwidth bandwidth - The desired bandwidth or rate limit (in Mbps) for the IO-D service.

  • Duration value durationValue - The desired duration value.

  • Duration unit durationUnit - The duration unit.

Info

durationUnit Enum values: day (d), week (w), month (m), year (y)

Note:

Maximum duration value by units: days:6 | weeks:3 | months:36 | years:3

Sample IO-D Pricing - By DCF API execution configured with duration of more than a month:

curl -X GET "https://api.test.consoleconnect.com/v2/pricing/gia/byDcf?dcfId=xxxxxxxxxxxxxxxxxxxxxxxx&bandwidth=10&durationValue=2&durationUnit=y"`\
    -H "Authorization: Bearer <API_KEY>"

Note

Notice the durationValue & durationUnit which is equivalent to 2 years. Response may vary based on the configured duration (more than or less than a month). See Common Response Definition for more details.

See sample response for the pricing details below:

{
  "contractTotals": {
    "giaCost": 3420,
    "ipCosts": {
      "ipv426Cost": 1596,
      "ipv427Cost": 1140,
      "ipv428Cost": 0,
      "ipv429Cost": null,
      "ipv430Cost": null
    }
  },
  "unitCosts": {
    "giaCost": 142.5,
    "ipCosts": {
      "ipv426Cost": 66.5,
      "ipv427Cost": 47.5,
      "ipv428Cost": 0,
      "ipv429Cost": null,
      "ipv430Cost": null
    }
  },
  "contractTotalsAmountSaved": null,
  "unitCostsAmountSaved": null,
  "burstRate": 0.04681165489,
  "duration": {
    "unit": "y",
    "value": 2
  }
}

III. Internet On-Demand Pricing - By DCF (Bulk)

This endpoint accepts DCF ID (dcfId) and price requests (priceRequests) as query parameters and responds with an array of price calculation details associated with the price requests (priceRequests) configuration provided in the API request.

III.I. Searching DCFs

This endpoint provides DCF filtering capability and it returns a list of Data Center Facilities (DCF) details.

Info

Below is a sample curl command that accepts (optional) criteria, page & page size query parameters.

curl -X GET "https://api.consoleconnect.com/v2/data-center-facility/search?criteria={}&page=1&pageSize=10"`\
    -H "Authorization: Bearer <API_KEY>"
If the request was successful, it will respond with a detailed list of DCFs.
[{
  "company": {
    "privacy": {
      "network": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      },
      "community": {
        "mode": "PUBLIC",
        "blackListIds": [],
        "whiteListIds": []
      }
    },
    "addresses": [
      {
        "registered": false,
        "address": "",
        "city": "Hong Kong",
        "state": "",
        "zip": "zipcode",
        "country": "HK",
        "email": null,
        "phone": null,
        "geo": {
          "type": "Point",
          "coordinates": []
        }
      }
    ],
    "parentIds": [],
    "regionalInternetRegistry": [],
    "businessRegistrationCertVerified": "UNVERIFIED",
    "website": "http://www.company.com1",
    "emailDomains": [],
    "industry": "",
    "businessDevelopmentManagerTypePreference": "UNSPECIFIED",
    "isIoTDemoCompany": false
  },
  "username": "DCF_COMPANY_USERNAME",
  "name": "SAMPLE-DCF-NAME",
  "tags": [
    "offnet",
    "monthly-ports"
  ],
  "dataCenterFacility": {
    "airportCodes": [],
    "speeds": [],
    "metroId": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "ready": true,
    "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "nniReady": true,
    "brandId": null,
    "canBundleCrossConnect": false
  },
  "stats": {
    "members": 0,
    "interconnections": 0,
    "followers": 5,
    "following": 0,
    "privateArticles": 0,
    "privateEvents": 0,
    "privatePosts": 0,
    "articles": 0,
    "events": 0,
    "posts": 0
  },
  "provider": [
    "PCCWGLOBAL"
  ],
  "selectiveQinQTunnelProvider": [],
  "externalId": null,
  "destinationPortOnly": false,
  "verified": true,
  "nnis": null,
  "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "bundleCrossConnectChargeId": null,
  "deletedAt": null,
  "createdAt": "2018-02-20T04:49:09.604Z",
  "updatedAt": "2024-07-10T04:22:15.894Z",
  "products": [
    {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "companyId": null,
      "dataCenterFacilityId": "xxxxxxxxxxxxxxxxxxxxxxxx",
      "slug": null,
      "status": "PUBLISHED",
      "transactionType": "ENQUIRE",
      "productType": "Data centers",
      "promoted": true,
      "name": "Sample Product Name",
      "headline": "Sample Headline",
      "description": "Demo description",
      "logo": null,
      "overviewImage": null,
      "background": null,
      "categories": [
        "Data Center"
      ],
      "tags": null,
      "promoTitle": "Sample Title",
      "promoHeadline": "Sample Headline",
      "callToActionLabel": "Order rack",
      "callToActionLink": null,
      "vendorUrl": null,
      "hubspotFormId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "productFamilyId": null,
      "isAddon": false,
      "productCode": null,
      "created_at": "2021-02-16T04:18:06.026Z",
      "updated_at": "2021-05-19T06:43:38.193Z"
    }
  ],
  "isFollowing": false
}]

Info

Take note of DCF ID ([0].id)

III.II. Calculate Pricing

Request Query Schema

  • DCF ID dcfId - Your data center facility (DCF) of choice ID.

  • Price Requests priceRequests - A collection of different IO-D service configuration (bandwidth and duration) you desire to configure your IO-D service with.

    Price Requests item's attributes/fields:

    • Bandwidth bandwidth - The desired bandwidth or rate limit (in Mbps) for the IO-D service.
    • Duration value durationValue - The desired duration value
    • Duration unit durationUnit - The duration unit

    Info

    durationUnit Enum values: day (d), week (w), month (m), year (y)

    Note:

    Maximum duration value by units: days:6 | weeks:3 | months:36 | years:3

See below sample curl command, which passes 2 IO-D configuration items in price requests (priceRequests) query parameter:

  • Index 0 - Configured with service duration of more than a month.
  • Index 1 - Configured with service duration of less than a month.
curl -X GET "https://api.consoleconnect.com/v2/pricing/gia/bulkByDcf?dcfId=xxxxxxxxxxxxxxxxxxxxxxxx&priceRequests=[{"bandwidth":10,"durationValue":24,"durationUnit":"m"},{"bandwidth":10,"durationValue":6,"durationUnit":"d"}]"`\
    -H "Authorization: Bearer <API_KEY>"

Note

Notice the value of priceRequests, index 0's duration value and unit is equivalent to 24 months / 2 years where as index 1's duration value and unit is equivalent to 6 days.

The expected response for this API Service is an array of price calculation details - each price calculation item corellates with each of the item provided in the price requests (priceRequests) query parameter for the specified DCF ID (dcfId). See Common Response Definition for more details.

See sample response for the pricing details below.
[
  { // Recurring - with duration of more than a month
    "contractTotals": {
      "giaCost": 3420,
      "ipCosts": {
        "ipv426Cost": 1596,
        "ipv427Cost": 1140,
        "ipv428Cost": 0,
        "ipv429Cost": null,
        "ipv430Cost": null
      }
    },
    "unitCosts": {
      "giaCost": 142.5,
      "ipCosts": {
        "ipv426Cost": 66.5,
        "ipv427Cost": 47.5,
        "ipv428Cost": 0,
        "ipv429Cost": null,
        "ipv430Cost": null
      }
    },
    "contractTotalsAmountSaved": null,
    "unitCostsAmountSaved": null,
    "burstRate": 0.04681165489,
    "duration": {
      "unit": "m",
      "value": 24
    }
  },
  {  // OnceOff - with duration of less than a month
    "onceOff": {
      "giaCost": 73.97,
      "ipCosts": {
        "ipv426Cost": 34.52,
        "ipv427Cost": 24.66,
        "ipv428Cost": 0,
        "ipv429Cost": null,
        "ipv430Cost": null
      }
    },
    "burstRate": 0.004050035038912062,
    "duration": {
      "unit": "d",
      "value": 6
    }
  }
]

IV. Common Response Definition

IO-D Pricing By DCF API, IO-D Pricing By Company & Ports API and IO-D Pricing By DCF (Bulk) API share similar response structure (Recurring Response or OnceOff Response) that may vary depending on the provided duration (less than or more than a month).

IV.I. Recurring Response

Applicable charges for the service configured with duration of more than a month. See sample response above index 0.

Property/Attribute Definition

  • contractTotals - The full duration of service charge rates.
    • giaCost - The full duration of service charge rate
    • ipCost - The IP Block selection/option - each option equivalent to full duration of service charge rate, chargeable on top of giaCost.
  • unitCosts - Equivalent to monthly service charge rates.
    • giaCost - The monthly service charge rate.
    • ipCost - The IP Block selection/option - each option equivalent to monthly service charge rate, chargeable monthly on top of giaCost.
  • contractTotalsAmountSaved - The full duration computed saved amount.
  • unitCostsAmountSaved - Computed monthly saved amount.
  • burstRate - Burst rate/Mbps charge rate.
  • duration - Configured duration of service.
    • value - The configured duration value for the service.
    • unit - The configured duration unit for the service. Enum: days (d), weeks (w), months (m), years (y).

Note:

Depending on your IP Block of choice, charges may apply on top of giaCost. See [0].contractTotals.ipCost or [0].unitCosts.ipCost in the response sample above for the price details.

Notice null and 0 values in both [0].contractTotals.ipCost and [0].unitCosts.ipCost - null is equivalent to unavailable and 0 is equivalent to free of charge.

IV.II. OnceOff Response

Applicable charges for the service configured with duration of less than a month. See sample response above index 1.

Property Definition

  • onceOff - The full duration of service charge rate and IP Block options charge rate.
    • giaCost - The full duration of service charge rate
    • ipCost - The IP Block selection/option - each option equivalent to full duration of service charge rate, chargeable on top of giaCost.
  • burstRate - Burst rate/Mbps charge rate.
  • duration - Configured duration of service.
    • value - The configured duration value for the service.
    • unit - The configured duration unit for the service in day(s) (d) or in week(s) (w).

Manage Company

A detailed guideline for preparing the prerequisites for Company APIs through Console Connect API Service. This guide will show how to manage your company, by creating a new company, adding members, setting roles and removing members.

For further information you can refer to our API reference documentation.

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com

  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here.

  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.

  4. Your company has been verified on the Console Connect platform.

I. Prerequisite Procedures

Similar series of steps to perform to obtain the relevant data required for Company APIs.

I.I. Acquiring user details

The user ID, company ID, and company username is obtained upon execution of API GET /api/auth/token. This provides information to the currently authenticated user.


curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:


{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "companies": [
    {
        "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "Demo",
        "username": "demo",
        /* other properties... */,
    }
  ],
  /* other properties... */
}

Note:
Take note of your user id (id), company id (companies[0].id), and company username (companies[0].username).

II. Create Company

Note:
This section assumes you do not already have a company associated with your account. There is a limit of one company per account.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/company \
--header 'Authorization: Bearer <API_KEY>' \
--data '{
"name": "Test International",
"businessRegistrationNumber": "EXAMPLE-252",
"company": {
  "addresses": [
    {
    "primary": true,
    "country": "US",
    "address": "17 Anywhere Pl",
    "city": "Test City",
    "state": "OH",
    "zip": "44101"
    }
  ],
  "emailDomains": [
    "test.com"
  ],
  "businessType": "Data Center"
  }
}'

Note:
Once you have provisioned a new company you need to submit your Business Registration document to the Console Support team at support@consoleconnect.com for internal verification, this can take a few days to complete. If you prefer to pay by invoice on your services that you order, you will need to request from the Console Support team to enable Invoice payments. We will have to perform a credit assessment on your company to confirm your company qualifies for invoice payments.

If the request was successful, it will respond with a JSON object similar to this:
{
  "username": "testinternational",
  "name": "Test International",
  "type": "COMPANY",
  "overviewImage": null,
  "categories": [],
  "company": {
    "emailDomains": [
      "test.com"
    ],
    "businessType": "Data Center",
    "addresses": [
      {
        "primary": true,
        "country": "US",
        "address": "17 Anywhere Pl",
        "city": "Test City",
        "state": "OH",
        "zip": "44101"
      }
    ],
    "privacy":{
      "network": {
        "mode": "PRIVATE"
      },
      "community": {
        "mode": "PRIVATE"
      }
    },
    "businessDevelopmentManagerTypePreference": "UNSPECIFIED"
  },
  "portsActive": 0,
  "portsPending": 0,
  "portsDisabled": 0,
  "businessRegistrationNumber": "EXAMPLE-252",
  "id": "66bddeef730c30c4c526c679",
  "bundleCrossConnectChargeId": null,
  "deletedAt": null,
  "registered": {}, "tags": [],
  "createdAt": "2024-08-13T08:48:48.006Z",
  "online": false,
  "isFollowing": false,
  "isFollowee": false,
  "companies": [],
  "linkUserCompany": {},
  "token": null
}

III. Invite a user to a company

This section is a detailed guideline for inviting a user to your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/membership-requests/:companyName/invite \
--header 'Authorization: Bearer <API_KEY>' \
--data '{
  "invites": [
    {
    "email": "sample.email@example.com"
    }
  ]
}'

Make sure to replace :companyName with your actual company username and <API_KEY> with your API key.

If the request was successful, You should receive a statusCode: 200 and an empty JSON object similar to this:

{}

IV. List users from your company

This section is a detailed guideline for getting the list of members/users of your company.

Note:
This section requires the parameter companyId, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request GET \
--url https://api.consoleconnect.com/v2/companies/:companyId/members \
--header 'Authorization: Bearer <API KEY>'

Make sure to replace :companyId with your actual company id and <API_KEY> with your API key.

If the request was successful, it will respond with a JSON object similar to this:
{
  [
    {
      "id": "67777c03df20b3fb0a08911a",
      "createdAt": "2017-11-21T00:43:36.681Z",
      "username": "sampleusername",
      "stats": {
        "members": 0,
        "interconnections": 0,
        "followers": 5,
        "following": 3,
        "privateArticles": 0,
        "privateEvents": 0,
        "privatePosts": 0,
        "articles": 0,
        "events": 0,
        "posts": 5
      },
      "tags": [],
      "location": null,
      "summary": null,
      "headline": "SE",
      "background": "",
      "avatarId": "67777c48e16f77d35595c729",
      "avatar": null,
      "email": "sample@email.com",
      "name": "Sample Name",
      "roles": [
        {
          "name": "USER",
          "display": "Company Member",
          "icon": "user outline",
          "keyholder": false,
          "visible": true,
          "shieldOnly": false,
          "systemDefault": false,
          "unauthenticatedSystemDefault": false,
          "id": "67777c9420212e7f2c5c18f6",
          "deletedAt": null,
          "displayOrder": "300",
          "description": "A Member is associated with your company but may not edit company profile information or view company network information",
          "tags": [
            "Prod"
          ],
          "createdAt": "2015-09-03T06:48:40.377Z",
          "updatedAt": "2024-10-23T10:45:31.906Z",
          ...
        },
        {
          "name": "NETWORKCONTROL",
          "display": "Network Admin",
          "icon": "flow switch",
          "keyholder": false,
          "visible": true,
          "shieldOnly": false,
          "systemDefault": false,
          "unauthenticatedSystemDefault": false,
          "id": "67777c9ed46eeebfa8f2d90c",
          "deletedAt": null,
          "displayOrder": "-299",
          "description": "A Network Admin may create, edit, remove, and otherwise manage all of your company's ports, connections and virtual routers",
          "tags": [
            "networkadmin",
            "Prod"
          ],
          "createdAt": "2015-09-30T04:00:00.000Z",
          "updatedAt": "2024-12-18T02:11:02.999Z",
          ...
        }
      ]
    },
    ... //other user data
  ],
  "isFollowing": false,
  "joinedDate": "2020-03-02T21:00:05.390Z"
}

V. Add role to a user

This section is a detailed guideline on adding a role to a member/user of your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/company/:companyName/memberships/:targetUsername/roles/:roleName \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key, :targetUsername with the user name of your target user and :roleName with the name of the role you want to add to the user.

List of role names:

  • NETWORKCONTROL - Network Admin
  • USER - Company Member
  • Content Admin - Content Admin
  • NETWORKVIEW - Network Viewer
  • ADMIN - User Admin
If the request was successful, it will respond with a JSON object similar to this:
{
  "name": "NETWORKCONTROL",
  "display": "Network Admin",
  "icon": "flow switch",
  "keyholder": false,
  "visible": true,
  "shieldOnly": false,
  "systemDefault": false,
  "unauthenticatedSystemDefault": false,
  "id": "66bde191444fcbc2fb7359be",
  "deletedAt": null,
  "displayOrder": "-299",
  "description": "A Network Admin may create, edit, remove, and otherwise manage all of your company's ports, connections and virtual routers",
  "tags": [
    "networkadmin",
    "Prod"
  ],
  "createdAt": "2015-09-30T04:00:00.000Z",
  "updatedAt": "2024-08-12T06:44:14.616Z",
  "policyIds": [...
  ],
  "deleted": false,
  "permissions": {
    "company-actions": false,
    "company-update": false,
    "connection-create": true,
    "connection-delete": true,
    "connection-modify": true,
    "connection-read": true,
    "order-create": true,
    "order-delete": true,
    "order-modify": true,
    "order-query": true,
    "ports-edit": true,
    "ports-read": true,
    "user-moderation": false
  },
  "queryable": true,
  "permissionIds": [...
  ],
  "companyIds": [],
  "readonly": false,
  "policies": [...
  ]
}

VI. Remove a user from a company

This section is a detailed guideline on removing a member/user to your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Additional prerequisite: Your account must have a role of Account Administrator/ADMIN for the company.

Compose the API request:

curl --request DELETE \
--url https://api.test.consoleconnect.com/api/company/:companyName/memberships/:targetUsername \
--header 'Authorization: Bearer <API_KEY>'
}'

Make sure to replace <API_KEY> with your API key and :targetUsername with the user name of your target user and :companyName with your actual company username.

If the request was successful, You should receive a statusCode: 200 and an empty JSON object similar to this:

{}

Prerequisite

The following requirements must be met to perform the provided code samples.

  1. API Key - Contact the Console Connect Support team to request for an API Key Email: support@consoleconnect.com

  2. Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here.

  3. Acceptance of Agreement - API users must sign the Specific Terms for API Use.

  4. Your company has been verified on the Console Connect platform.

I. Prerequisite Procedures

Similar series of steps to perform to obtain the relevant data required for Company APIs.

I.I. Acquiring user details

The user ID, company ID, and company username is obtained upon execution of API GET /api/auth/token. This provides information to the currently authenticated user.


curl -X GET https://api.consoleconnect.com/api/auth/token\
    -H "Authorization: Bearer <API_KEY>"

If the request was successful, it will respond with a JSON object similar to this:


{
  "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
  "companies": [
    {
        "id": "xxxxxxxxxxxxxxxxxxxxxxxxxx",
        "name": "Demo",
        "username": "demo",
        /* other properties... */,
    }
  ],
  /* other properties... */
}

Note:
Take note of your user id (id), company id (companies[0].id), and company username (companies[0].username).

II. Create Company

Note:
This section assumes you do not already have a company associated with your account. There is a limit of one company per account.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/company \
--header 'Authorization: Bearer <API_KEY>' \
--data '{
"name": "Test International",
"businessRegistrationNumber": "EXAMPLE-252",
"company": {
  "addresses": [
    {
    "primary": true,
    "country": "US",
    "address": "17 Anywhere Pl",
    "city": "Test City",
    "state": "OH",
    "zip": "44101"
    }
  ],
  "emailDomains": [
    "test.com"
  ],
  "businessType": "Data Center"
  }
}'

Note:
Once you have provisioned a new company you need to submit your Business Registration document to the Console Support team at support@consoleconnect.com for internal verification, this can take a few days to complete. If you prefer to pay by invoice on your services that you order, you will need to request from the Console Support team to enable Invoice payments. We will have to perform a credit assessment on your company to confirm your company qualifies for invoice payments.

If the request was successful, it will respond with a JSON object similar to this:
{
  "username": "testinternational",
  "name": "Test International",
  "type": "COMPANY",
  "overviewImage": null,
  "categories": [],
  "company": {
    "emailDomains": [
      "test.com"
    ],
    "businessType": "Data Center",
    "addresses": [
      {
        "primary": true,
        "country": "US",
        "address": "17 Anywhere Pl",
        "city": "Test City",
        "state": "OH",
        "zip": "44101"
      }
    ],
    "privacy":{
      "network": {
        "mode": "PRIVATE"
      },
      "community": {
        "mode": "PRIVATE"
      }
    },
    "businessDevelopmentManagerTypePreference": "UNSPECIFIED"
  },
  "portsActive": 0,
  "portsPending": 0,
  "portsDisabled": 0,
  "businessRegistrationNumber": "EXAMPLE-252",
  "id": "66bddeef730c30c4c526c679",
  "bundleCrossConnectChargeId": null,
  "deletedAt": null,
  "registered": {}, "tags": [],
  "createdAt": "2024-08-13T08:48:48.006Z",
  "online": false,
  "isFollowing": false,
  "isFollowee": false,
  "companies": [],
  "linkUserCompany": {},
  "token": null
}

III. Invite a user to a company

This section is a detailed guideline for inviting a user to your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/membership-requests/:companyName/invite \
--header 'Authorization: Bearer <API_KEY>' \
--data '{
  "invites": [
    {
    "email": "sample.email@example.com"
    }
  ]
}'

Make sure to replace :companyName with your actual company username and <API_KEY> with your API key.

If the request was successful, You should receive a statusCode: 200 and an empty JSON object similar to this:

{}

IV. List users from your company

This section is a detailed guideline for getting the list of members/users of your company.

Note:
This section requires the parameter companyId, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request GET \
--url https://api.consoleconnect.com/v2/companies/:companyId/members \
--header 'Authorization: Bearer <API KEY>'

Make sure to replace :companyId with your actual company id and <API_KEY> with your API key.

If the request was successful, it will respond with a JSON object similar to this:
{
  [
    {
      "id": "67777c03df20b3fb0a08911a",
      "createdAt": "2017-11-21T00:43:36.681Z",
      "username": "sampleusername",
      "stats": {
        "members": 0,
        "interconnections": 0,
        "followers": 5,
        "following": 3,
        "privateArticles": 0,
        "privateEvents": 0,
        "privatePosts": 0,
        "articles": 0,
        "events": 0,
        "posts": 5
      },
      "tags": [],
      "location": null,
      "summary": null,
      "headline": "SE",
      "background": "",
      "avatarId": "67777c48e16f77d35595c729",
      "avatar": null,
      "email": "sample@email.com",
      "name": "Sample Name",
      "roles": [
        {
          "name": "USER",
          "display": "Company Member",
          "icon": "user outline",
          "keyholder": false,
          "visible": true,
          "shieldOnly": false,
          "systemDefault": false,
          "unauthenticatedSystemDefault": false,
          "id": "67777c9420212e7f2c5c18f6",
          "deletedAt": null,
          "displayOrder": "300",
          "description": "A Member is associated with your company but may not edit company profile information or view company network information",
          "tags": [
            "Prod"
          ],
          "createdAt": "2015-09-03T06:48:40.377Z",
          "updatedAt": "2024-10-23T10:45:31.906Z",
          ...
        },
        {
          "name": "NETWORKCONTROL",
          "display": "Network Admin",
          "icon": "flow switch",
          "keyholder": false,
          "visible": true,
          "shieldOnly": false,
          "systemDefault": false,
          "unauthenticatedSystemDefault": false,
          "id": "67777c9ed46eeebfa8f2d90c",
          "deletedAt": null,
          "displayOrder": "-299",
          "description": "A Network Admin may create, edit, remove, and otherwise manage all of your company's ports, connections and virtual routers",
          "tags": [
            "networkadmin",
            "Prod"
          ],
          "createdAt": "2015-09-30T04:00:00.000Z",
          "updatedAt": "2024-12-18T02:11:02.999Z",
          ...
        }
      ]
    },
    ... //other user data
  ],
  "isFollowing": false,
  "joinedDate": "2020-03-02T21:00:05.390Z"
}

V. Add role to a user

This section is a detailed guideline on adding a role to a member/user of your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Compose the API request:

curl --request PUT \
--url https://api.consoleconnect.com/api/company/:companyName/memberships/:targetUsername/roles/:roleName \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key, :targetUsername with the user name of your target user and :roleName with the name of the role you want to add to the user.

List of role names:

  • NETWORKCONTROL - Network Admin
  • USER - Company Member
  • Content Admin - Content Admin
  • NETWORKVIEW - Network Viewer
  • ADMIN - User Admin
If the request was successful, it will respond with a JSON object similar to this:
{
  "name": "NETWORKCONTROL",
  "display": "Network Admin",
  "icon": "flow switch",
  "keyholder": false,
  "visible": true,
  "shieldOnly": false,
  "systemDefault": false,
  "unauthenticatedSystemDefault": false,
  "id": "66bde191444fcbc2fb7359be",
  "deletedAt": null,
  "displayOrder": "-299",
  "description": "A Network Admin may create, edit, remove, and otherwise manage all of your company's ports, connections and virtual routers",
  "tags": [
    "networkadmin",
    "Prod"
  ],
  "createdAt": "2015-09-30T04:00:00.000Z",
  "updatedAt": "2024-08-12T06:44:14.616Z",
  "policyIds": [...
  ],
  "deleted": false,
  "permissions": {
    "company-actions": false,
    "company-update": false,
    "connection-create": true,
    "connection-delete": true,
    "connection-modify": true,
    "connection-read": true,
    "order-create": true,
    "order-delete": true,
    "order-modify": true,
    "order-query": true,
    "ports-edit": true,
    "ports-read": true,
    "user-moderation": false
  },
  "queryable": true,
  "permissionIds": [...
  ],
  "companyIds": [],
  "readonly": false,
  "policies": [...
  ]
}

VI. Remove a user from a company

This section is a detailed guideline on removing a member/user to your company.

Note:
This section requires the parameter companyName, which can be retrieved as shown in I.I. Acquiring user details.

Additional prerequisite: Your account must have a role of Account Administrator/ADMIN for the company.

Compose the API request:

curl --request DELETE \
--url https://api.test.consoleconnect.com/api/company/:companyName/memberships/:targetUsername \
--header 'Authorization: Bearer <API_KEY>'
}'

Make sure to replace <API_KEY> with your API key and :targetUsername with the user name of your target user and :companyName with your actual company username.

If the request was successful, You should receive a statusCode: 200 and an empty JSON object similar to this:

{}

Auth

User authentication is required before most API calls can be made.

API Key

API Keys are provisioned by Support and applied to your Console Connect User Account. Email Support to request a key.

Here is an example request using an API Key:

curl -X GET https://api.consoleconnect.com/api/company/exampleCo/ports \
-H "Authorization: Bearer [[api key]]"

Agreements

You must agree to the Specific Terms for API Use before using the Console Connect API. If you are using the Console Connect web application, you must also agree to the Console Connect Terms of Service. To view agreement information via API, you will need your companyId, which can be retrieved through the Company API.

Get Agreements

Get the agreements your company has agreed to.

Authorizations:
api-key
path Parameters
companyId
required
string

The ObjectId of your company.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Search

Search for users, companies, and data center facilities.

Pricing

Look up pricing

Ports and Connections

Calculate pricing for Ports and Layer 2 Connections

Authorizations:
api-key
Request Body schema: application/json
Array of objects

List of ports to get pricing for.

Array of objects

List of layer 2 connections to get pricing for.

discountCode
string

Apply promotion or partner code.

includeCrossConnect
boolean

Set to true to have the Cross Connect add-on with your port if your DCF supports this. Only available in a 12 month contract.

Responses

Request samples

Content type
application/json
Example
{
  • "ports": [
    ]
}

Response samples

Content type
application/json
Example
{
  • "results": [
    ]
}

Connections - Flex pricing

Retrieve flex pricing for a connection.

Authorizations:
api-key
path Parameters
username
required
string
Example: company_co

The username of the company.

Request Body schema: application/json
connectionId
required
string

The connection ID of the connection you want to get flex pricing for.

flexBandwidth
required
string

The additional bandwidth to be added to the connection.

discountCode
string

Any discount code you may have been provided.

Responses

Request samples

Content type
application/json
Example
{
  • "connectionId": "95908593icTTl895393135Y7K",
  • "flexBandwidth": "100"
}

Response samples

Content type
application/json
{
  • "connectionId": "95908593icTTl895393135Y7K",
  • "flexBandwidth": 100,
  • "flexCharge": 97
}

Internet On-Demand - Company and Port

Get Internet On-Demand pricing by company and port.

  • GIA Pricing Recurring - Applicable charges for IO-D with service duration of more than a month.
  • GIA Pricing OneOff - Applicable charges for IO-D with service duration of less than a month.
Authorizations:
api-key
query Parameters
companyId
required
string
Example: companyId=507f1f77bcf86cd799439011

The ID of the Company.

portId
required
string
Example: portId=507f191e810c19729de860ea

The ID of the Port.

bandwidth
required
string
Example: bandwidth=10

The desired bandwidth for the GIA service in Mbps.

durationValue
required
string
Example: durationValue=12

The duration the service was ordered for.

durationUnit
required
string
Example: durationUnit=m

A unit of time such as days, weeks, months, and years. Value can be one of: d, w, m, y.

discountCode
string

Optional discount code.

Responses

Response samples

Content type
application/json
Example
{
  • "contractTotals": {
    },
  • "unitCosts": {
    },
  • "contractTotalsAmountSaved": null,
  • "unitCostsAmountSaved": null,
  • "burstRate": 0.04681165489,
  • "duration": {
    }
}

Internet on Demand - DCF

Get Internet On-Demand price for a specific DCF

  • GIA Pricing Recurring - Applicable charges for IO-D with service duration of more than a month.
  • GIA Pricing OneOff - Applicable charges for IO-D with service duration of less than a month.

    Note: An error will be returned if there was no pricing found for a service with the desired bandwidth. Please contact your BDM or Support if this happens.

Authorizations:
api-key
query Parameters
dcfId
required
string
Example: dcfId=507f191e810c19729de860ea

The ID of the Data Center Facility.

bandwidth
required
string
Example: bandwidth=10

The desired bandwidth for the GIA Service in Mbps.

durationValue
required
string
Example: durationValue=12

The duration the service was ordered for.

durationUnit
required
string
Example: durationUnit=m

A unit of time such as days, weeks, months, and years. Value can be one of: d, w, m, y.

discountCode
string

Optional discount code.

companyId
string
Example: companyId=507f1f77bcf86cd799439011

The ID of the Company.

Responses

Response samples

Content type
application/json
Example
{
  • "contractTotals": {
    },
  • "unitCosts": {
    },
  • "contractTotalsAmountSaved": null,
  • "unitCostsAmountSaved": null,
  • "burstRate": 0.04681165489,
  • "duration": {
    }
}

Internet On-Demand - DCF (bulk)

Get Internet On-Demand prices for multiple DCFs in a single call.

  • GIA Pricing Recurring - Applicable charges for IO-D with service duration of more than a month.
  • GIA Pricing OneOff - Applicable charges for IO-D with service duration of less than a month.
Authorizations:
api-key
query Parameters
dcfId
required
string
Example: dcfId=507f191e810c19729de860ea

The ID of the Data Center Facility.

required
Array of objects
Example: priceRequests=[{"bandwidth":10,"durationValue":2,"durationUnit":"y"},{"bandwidth":10,"durationValue":1,"durationUnit":"y"}]

An array of objects with the price request details as a JSON serialised string.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Internet On-Demand - Flex

Retrieve flex pricing for Internet On-Demand services.

Authorizations:
api-key
path Parameters
giaServiceId
required
string
Example: ae913a22-d9ae-4022-9016-edb58575e39b

The ID of the IoD service to flex.

query Parameters
bandwidth
required
string
Example: bandwidth=10

The desired bandwidth to flex the service to.

discountCode
required
string
Example: discountCode=20PERCENT

Optional discount code.

Responses

Response samples

Content type
application/json
{
  • "flexCharge": 42.4,
  • "amountSaved": 0
}

CloudRouter

CloudRouter Base Charge

  • Customer can change site configuration on demand.
  • Site charges are billed based on time in arrears.
  • Hourly Price is displayed to the customer (customer will only be billed to fraction of a second)
  • No charge for one site. Site charge will be calculated when the second site is added.
  • The customer will be shown an hourly price for the all the sites combined.
  • If a site is added or removed the hourly price for all sites will be updated.
  • Each eligible Console Connect Data Centre record will be allocated a CR pricing Zone
  • If all the sites are within the same metro location a flat charge will be applied.
  • Metro flat rate exceptions can be added for specific locations where metro costs are too expensive, these will receive a per mbps price.
  • Pricing will be determined based on the locations of all the sites using the per mbps price for the pricing zone.
  • The maximum bandwidth allowed on a site can be restricted based on the costbook location mapped to each sites DCF.
  • Bandwidth Limit = Maximum Rate Limit
Authorizations:
api-key
Request Body schema: application/json
companyId
required
string

The ID of the company. You can check your companyId in your account on Console Connect website or you can query in Auth API

bandwidth
required
string
Enum: "500MB" "1GB" "2.5GB" "5GB" "10GB" ">10GB"

The desired bandwidth for the CloudRouter

required
object (Duration)
required
CloudRouterPriceCalcSiteStandard (object) or CloudRouterPriceCalcSiteSIMPool (object)
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "companyId": "66eb1831e49462a7c87e097e",
  • "bandwidth": "500MB",
  • "duration": {
    },
  • "sites": [
    ],
  • "discountCode": ""
}

Response samples

Content type
application/json
Example
{
  • "totalContractCost": 1200,
  • "baseL3vpnCost": 200,
  • "duration": {
    },
  • "sites": [
    ],
  • "baseL3vpnCostAmountSaved": null,
  • "totalContractCostAmountSaved": null,
  • "totalHourlySiteCostAmountSaved": 0,
  • "bandwidth": "500MB"
}

CloudRouter - Add site

Find pricing for adding a site to a CloudRouter.

Authorizations:
api-key
path Parameters
l3vpnId
required
string
Request Body schema: application/json
One of
object

Responses

Request samples

Content type
application/json
Example
{
  • "site": {
    }
}

Response samples

Content type
application/json
Example
{
  • "l3vpnId": "66f2a3dbb2ee7c6a60420863",
  • "baseL3vpnCost": 500,
  • "totalContractCost": 500,
  • "totalHourlySiteCost": 20,
  • "totalMonthlySiteCost": 14600,
  • "sites": [
    ],
  • "discount": null
}

CloudRouter - Delete site

Find pricing for deleting a CloudRouter site.

Authorizations:
api-key
path Parameters
l3vpnId
required
string
Request Body schema: application/json
siteId
string

Responses

Request samples

Content type
application/json
{
  • "siteId": "6fcac435-ce01-4fef-b316-bcf80537970f"
}

Response samples

Content type
application/json
Example
{
  • "l3vpnId": "6328f276bb71e4e4ae01e9e9",
  • "baseL3vpnCost": 500,
  • "totalContractCost": 500,
  • "totalHourlySiteCost": 20,
  • "totalMonthlySiteCost": 14600,
  • "sites": [
    ],
  • "discount": null
}

Anti-DDoS - Network-Based Protection Costs

Returns the MRC (Monthly Recurring Charge) and NRC (Non-Recurring Charge or One-off Charge) for a potential new order.

Authorizations:
api-key
query Parameters
package
string (Package)
Enum: "alwayson" "ondemand"
number_of_protected_ips
string (NumberOfProtectedIpsInQuery)
Enum: "1,8" "9,16" "17,32" "33,64"
Example: number_of_protected_ips=1,8

Number of IPv4 address prefixes to be protected. Comma separated list of minimum and maximum range.

total_inbound_traffic
string
Enum: "0,50" "51,100" "101,200" "201,500" "501,1000" "1001,2000"
Example: total_inbound_traffic=51,100

Corresponding Legitimate Traffic. Comma separated list of minimum and maximum values, in Mbps.

total_mitigated_traffic
integer (TotalMitigatedTraffic)
Enum: 20 50 100
Example: total_mitigated_traffic=50

DDoS attack traffic to be mitigated, in Mbps.

service_period
integer
Enum: 12 24
Example: service_period=12

Responses

Response samples

Content type
application/json
{
  • "mrc": 109,
  • "nrc": 450.5
}

Anti-DDoS - DNS Costs

Returns the NRC (Non-Recurring Charge or One-off Charge) for a potential new order.

Authorizations:
api-key
query Parameters
insight_customer_id
string
Example: insight_customer_id=AAA001

The Insight customer ID.

uid
string
Example: uid=123412341234123410

The account UID of the user.

plan
integer
Enum: 0 1
Example: plan=0

The package to calculate costs for, 0 for insurance, 1 for unlimited

cleanBandwidth
integer
Example: cleanBandwidth=100

The clean bandwidth in Mbps, options provided by the attributes endpoint dynamically.

functionVersion
required
integer
Enum: 0 1
Example: functionVersion=0

This known as function plan 0 = standard 1 = enhanced

domainCount
required
integer
Example: domainCount=15

The number of domains

cleanQps
required
integer
Example: cleanQps=15

The clean qps value

portCount
required
integer
Example: portCount=15

The number of ports

subscription
integer
Enum: 1 2 3 4 5 6 12 24
Example: subscription=12

The service period in month(s).

autoRenewal
boolean
Example: autoRenewal=false

Whether the order should be automatically renewed.

isAdvancedMCA
boolean
Example: isAdvancedMCA=false

Whether the order with MCA add-on.

Responses

Response samples

Content type
application/json
{
  • "price": 1000.5
}

Anti-DDoS - MCA Costs

Returns the NRC (Non-Recurring Charge or One-off Charge) for a potential new order.

Authorizations:
api-key
query Parameters
insight_customer_id
string
Example: insight_customer_id=AAA001

The Insight customer ID.

uid
string
Example: uid=123412341234123410

The account UID of the user.

plan
integer
Value: 2
Example: plan=2

The package to calculate costs for, fixed to 2 for MCA.

cleanBandwidth
integer
Example: cleanBandwidth=10

The clean bandwidth in Mbps, options provided by the attributes endpoint dynamically.

subscription
integer
Enum: 1 2 6 12
Example: subscription=12

The service period in month(s).

autoRenewal
boolean
Example: autoRenewal=false

Whether the order should be automatically renewed.

Responses

Response samples

Content type
application/json
{
  • "price": 1000.5
}

Generate PDF

Generate a PDF with pricing information.

Authorizations:
api-key
Request Body schema: application/json
sendEMail
boolean

Send pricing calculator result via email.

Array of objects

An array of ports objects.

Array of objects

An array of connection objects.

Array of objects

An array of Internet on Demand objects.

Array of objects

An array of CloudRouter site objects.

Responses

Request samples

Content type
application/json
{
  • "portsArray": [
    ],
  • "connectionsArray": [
    ],
  • "iodArray": [
    ],
  • "cloudRouterArray": [
    ]
}

Metros

Metros are the locations of DCFs on the Console Connect platform. These endpoints can be used to search for places where companies have active ports available for Layer 2 Connections.

List Metro Count for a Company

This endpoint is used to list the Metros a given Company is present at, usually with Ports.

Authorizations:
api-key
path Parameters
username
required
string
Example: consoleconnect

The username of the company you are checking.

query Parameters
hasPort
boolean
Example: hasPort=true

When true, only shows Metros the specified company has Ports in.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

List Metros for a Company

Returns a list of Metros a given Company has a presence at. This is typically in the form of Port.

Authorizations:
api-key
path Parameters
username
required
string
Example: consoleconnect

The username of the Company to query.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Get Metro by ID

Returns the basic information for a Metro.

Authorizations:
api-key
path Parameters
metroId
required
string
Example: 235014958511023495968818

Metro ObjectId

Responses

Response samples

Content type
application/json
{
  • "results": [ ],
  • "controllers": [ ],
  • "metro": {
    },
  • "ports": { },
  • "asns": { }
}

Data Center Facilities (DCFs)

Data Center Facilities (DCFs) are the hosts of Ports on the Console Connect platform. They support a range of Speeds (1Gb, 10Gb, 1000Gb) in various locations across the globe. The endpoints and examples listed in this section will help you find the right DCF for your needs.

Get DCF locations

Before diving directly into finding DCFs, it is helpful to know which locations are available to order Ports from. This endpoint returns a list of country and city pairs that can be used in search.

The criteria of the list is based on the following:

  • A DCF is ready for ordering Ports from: dataCenterFacility.ready
Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Get Cloud DCF locations

This endpoint is much like finding general DCF locations, only it narrows down the criteria even further by returning only the locations that our Cloud partners have available ports in. This endpoint is useful when you want to find DCFs to create a Layer 2 Connection to a Cloud provider (e.g. AWS).

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Search DCFs

Search for available DCFs on and off the network.

To ensure a DCF is ready for physical port orders, ensure the property dataCenterFacility.ready: true is set when searching for DCFs. To find a DCF that supports Hybrid NNI Ports, search for dataCenterFacility.nniReady: true.

See the Query Parameters section below for search examples.

Authorizations:
api-key
query Parameters
required
object (Filter)
Examples:
  • filter={ "where": { "dataCenterFacility.speeds.value": 10000, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by Speed. Value in Mbps.
  • filter={ "where": { "company.addresses.country": "AU", "company.addresses.city": "Sydney" "dataCenterFacility.speeds.value": 10000, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by Location.
  • filter={ "where": { "name": {"like": "DCF Name", "options": "i"}, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by Name.
  • filter={ "where": { "dataCenterFacility.canBundleCrossConnect": true, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by CrossConnect Add On.
  • filter={ "where": { "tags": {"in": ["free-cross-connect"]}, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by Free CrossConnect.
  • filter={ "where": { "tags": {"in": "offnet"}, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by Extended (Off-Net).
  • filter={ "where": { "tags": {"nin": "offnet"}, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs by On-Net.
  • filter={ "where": { "tags": {"in": "monthly-ports"}, "dataCenterFacility.ready": true }, "skip": 0, "limit": 10 } - Search DCFs that accept month-to-month port orders.

Criteria for searching DCFs.

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Search DCFs by criteria

Search for available DCFs on and off the network. See the Query Parameters section below for search examples.

Authorizations:
api-key
query Parameters
required
object
Examples:
  • criteria={ "speeds": [1000] } - Search DCFs by Speed. Value in Mbps.
  • criteria={ "locations": ["Sydney,AU"], "speeds": [10000] } - Search DCFs by Location.
  • criteria={ "name": "DCF Name" } - Search DCFs by Name.
  • criteria={ "crossConnect": ["addOn"] } - Search DCFs by CrossConnect Add On.
  • criteria={ "crossConnect": ["free"] } - Search DCFs by Free CrossConnect.
  • criteria={ networkStatus: ['offNet'] } - Search DCFs by Extended (Off-Net).
  • criteria={ networkStatus: ['onNet'] } - Search DCFs by On-Net.

Criteria for searching DCFs.

page
integer
Example: page=1

the page number of the results

pageSize
integer
Example: pageSize=10

the number of results per page

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Get DCF by ID

Get a single DCF by its ID.

Authorizations:
api-key
path Parameters
id
required
string
Example: 507f1f77bcf86cd799439011

The ObjectId of the DCF.

Responses

Response samples

Content type
application/json
{
  • "id": "507f1f77bcf86cd799439011",
  • "name": "Console Connect - Hermes House",
  • "username": "pccwg-hermes-house",
  • "company": {
    },
  • "dataCenterFacility": {
    },
  • "bundleCrossConnectChargeId": "65eff1e96d38598ce3cf6247"
}

Port Orders

Ordering a port

Create a port order/reservation

A port order is created in a 'dataCenterFacility'.

Please take note about the different LOA lead times for On-net & Extended (Off-net) data centers.

On-net: 24 hours.
Extended: Around 4 to 6 weeks.

Port Order Status Flow

  1. created - The initial status when this operation is called.
  2. processing - Reserving a port / the system will select the next available port.
  3. allocated - The status once the port is successfully ordered, during this status the cross connect will be installed by the Data Centner.
  4. loa_sent - (Optional) The status once the LOA was uploaded to the port and the customer can install the Cross Connect.
  5. setup_xc - (Optional) Setup Cross Connect.
  6. done - The status once the order has been completed and the order is moved to a port.

Note: The 'creditcard' payment type is only supported via the Console Connect web application. When using this payment type, you must also include 'paymentTransactionId' property in the request body.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: supernetpa4

Username of the data center facility.

Request Body schema: application/json
paymentType
required
string
Enum: "plan" "creditcard" "invoice"

The payment method used.

billingId
string

The ID of the plan subscription. Only required when paymentType is 'plan'.

paymentTransactionId
string

The ID of the payment transaction. Only required when paymentType is 'creditcard'.

dataCenterFacility
required
string

The username of the data center facility.

speed
required
string

The port speed in Mbps, e.g., 1000 = 1Gbps. 10000 = 10Gbps. Must be >= 100.

portName
required
string

The name of the port

durationUnit
required
string
Default: "y"
Enum: "m" "y"

Set to m if the Data Center accepts month-to-month port orders.

bundleCrossConnect
boolean

Set to true to have the Cross Connect add-on with your port if your Data Center supports this. Only available in a 12 month contract.

discountCode
string

Apply promotion or partner code.

Responses

Request samples

Content type
application/json
Example
{
  • "dataCenterFacility": "demodatacenter",
  • "speed": 1000,
  • "portName": "Demo Port",
  • "paymentType": "invoice",
  • "durationUnit": "y"
}

Response samples

Content type
application/json
Example
{
  • "id": "66e28efa04a4727d5387da09",
  • "portName": "Demo Port",
  • "speed": {
    },
  • "paymentType": "invoice",
  • "discountId": null,
  • "billingId": "66e28efa04a4727d5387da06",
  • "externalId": null,
  • "salesRecordId": null,
  • "paymentTransactionId": null,
  • "payg": true,
  • "status": "created",
  • "loaStatus": "TODO",
  • "isEdgePort": false,
  • "cancelled": false,
  • "edgePayload": null,
  • "requestSource": "CONSOLE_API",
  • "createdBy": "",
  • "tags": [ ],
  • "type": "PHYSICAL",
  • "isManualCreate": false,
  • "dataCenterFacilityId": "5a94a7e2091e410012cdf0b4",
  • "metroId": "21ab4746f3ba6c3462def3e8",
  • "companyId": "5d4d056242fbd3000ab4c01d",
  • "crossConnectId": null,
  • "deleted": false,
  • "deletedAt": null,
  • "createdAt": "2024-09-12T06:49:30.052Z",
  • "updatedAt": "2024-09-12T06:49:30.354Z",
  • "durationUnit": "y",
  • "dataCenterFacility": {
    },
  • "metro": {
    },
  • "capabilities": { }
}

Get all order details

Get all port orders of a company

Important Notes:

  • This is where you can find all the port orders you have created.
  • You can also find the createdPortId here which you can use to query for a port by its order ID. See Read port details API and use the createdPortId in {portId} path parameter
Authorizations:
api-key
path Parameters
companyName
required
string
Example: samplecompanyname

The username of the company that the order is for. You can find your companyName by querying Auth API under companies and look for username.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Get order details by ID

Get the details of a companies port order

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company that the order is for.

orderId
required
string
Example: 56d691309a90128d55831db1

The ID of the order.

Responses

Response samples

Content type
application/json
{
  • "billingId": "56d691309a90128d55831db2",
  • "cancelled": false,
  • "isEdgePort": false,
  • "edgePayload": { },
  • "cancelledAt": "1970-01-01T00:00:00.000Z",
  • "cancelledBy": null,
  • "company": {
    },
  • "controller": {
    },
  • "createdAt": "2016-03-02T07:07:28.195Z",
  • "createdBy": "stan",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "deletedBy": null,
  • "id": "56d691309a90128d55831db1",
  • "locationId": null,
  • "crossConnectId": null,
  • "message": null,
  • "metro": {
    },
  • "port": {
    },
  • "portName": "PORT_1",
  • "speed": {
    },
  • "status": "created",
  • "updatedAt": "2016-03-02T07:07:28.195Z",
  • "updatedBy": null
}

Perform LOA action on a port order

A Letter of Authorisation is required as part of the process to connect to a port.

  • sendloa: Resends the LOA to the user.
  • loasent: Updates port order status to 'loa_sent'.
    • Note: loasent will fail with 409 unless port order status is 'ALLOCATED'.
Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to take the port order action for.

orderId
required
string
Example: 56d691301a1a128d55831db2

The port order id you wish to take the LOA action for.

action
required
string
Examples:
  • sendloa - Resends the LOA to the user
  • loasent - Updates port order status to 'loa_sent'

The LOA action to implement on the port order.

Responses

Response samples

Content type
application/json
{
  • "billingId": "56d691309a90128d55831db2",
  • "cancelled": false,
  • "cancelledAt": "1970-01-01T00:00:00.000Z",
  • "cancelledBy": null,
  • "company": {
    },
  • "controller": {
    },
  • "createdAt": "2016-03-02T07:07:28.195Z",
  • "createdBy": "stan",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "deletedBy": null,
  • "id": "56d691309a90128d55831db1",
  • "locationId": null,
  • "crossConnectId": null,
  • "message": null,
  • "metro": {
    },
  • "port": {
    },
  • "portName": "PORT_1",
  • "speed": {
    },
  • "status": "created",
  • "updatedAt": "2016-03-02T07:07:28.195Z",
  • "updatedBy": null
}

Ports

Before configuring any network services in Console Connect, you must create a port. This is a two-step process; ordering or requesting a port, then activating that port. Console Connect manages entitlements through plan-based subscriptions associated with each port (one subscription per port). Before you can order a port, your company must have a subscription to a plan with sufficient entitlements available to complete the request. To list your company’s subscriptions and entitlements refer to Get all plans and entitlements.

List ports

Note: Reading a company’s ports is publicly visible.

A port can be in one of the following states:

Status Description
ACTIVATING In the process of being activated
READY Allocated but awaiting a physical network connection
ACTIVE Port is active
DISABLING In the process of being disabled
DISABLED The port is disabled
DELETING In the process of being deleted
DELETED The Port is deleted
UNKNOWN The status of the port cannot be determined
ONBOARDING The port is currently being on-boarded

In addition to these states, a port also has the singleService flag which indicates that the port is dedicated to a single untagged connection, so no further connections can be created on the port.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

query Parameters
deleted
string
Example: deleted=false

Set to false to exclude ports with DELETED status

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Delete port

Note: a port must be disabled using Port Actions before it can be deleted.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id

Responses

Read port details

Note: Reading a company's port details is publicly visible.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id

Responses

Response samples

Content type
application/json
{
  • "activeChangedAt": "2016-06-16T06:20:10.640Z",
  • "asn": {
    },
  • "capacity": {
    },
  • "company": {
    },
  • "companyId": "5762451982894b9b1b1a5dbc",
  • "connections": [
    ],
  • "controllers": [
    ],
  • "createdAt": "2016-06-16T06:20:10.029Z",
  • "dataCenterFacility": {
    },
  • "dataCenterFacilityId": "5126c9f1111e15a24a066130",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "id": "5762451a82894b9b1b1a5dc2",
  • "ip": {
    },
  • "locationId": "b3f5ac21-fec1-4418-9e1a-709d48da59fa",
  • "crossConnectId": "68696464-b2f7-4c90-a342-293f7385469a",
  • "metro": {
    },
  • "metroId": "1232413986c08c061dd8c45f",
  • "name": "Vicente",
  • "networkServiceProviderId": null,
  • "partner": {
    },
  • "portId": null,
  • "singleService": false,
  • "speed": {
    },
  • "status": "ACTIVE",
  • "type": "PHYSICAL",
  • "updatedAt": "2016-06-16T06:20:11.116Z",
  • "vlanRange": [
    ]
}

Update port details

Update a port

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

Request Body schema: application/json
asn
string

The ASN to attach to this port.

name
required
string

A friendly name for the port

Responses

Request samples

Content type
application/json
{
  • "asn": {
    },
  • "name": "VPort0"
}

Response samples

Content type
application/json
{
  • "activeChangedAt": "2016-06-16T06:20:10.640Z",
  • "asn": {
    },
  • "capacity": {
    },
  • "company": {
    },
  • "companyId": "5762451982894b9b1b1a5dbc",
  • "connections": [
    ],
  • "controllers": [
    ],
  • "createdAt": "2016-06-16T06:20:10.029Z",
  • "dataCenterFacility": {
    },
  • "dataCenterFacilityId": "5126c9f1111e15a24a066130",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "id": "5762451a82894b9b1b1a5dc2",
  • "ip": {
    },
  • "locationId": "b3f5ac21-fec1-4418-9e1a-709d48da59fa",
  • "crossConnectId": "68696464-b2f7-4c90-a342-293f7385469a",
  • "metro": {
    },
  • "metroId": "1232413986c08c061dd8c45f",
  • "name": "Vicente",
  • "networkServiceProviderId": null,
  • "partner": {
    },
  • "portId": null,
  • "singleService": false,
  • "speed": {
    },
  • "status": "ACTIVE",
  • "type": "PHYSICAL",
  • "updatedAt": "2016-06-16T06:20:11.116Z",
  • "vlanRange": [
    ]
}

Read port access circuit details

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

Responses

Response samples

Content type
application/json
{
  • "crossConnectConnectorType": "SC",
  • "crossConnectId": "19204",
  • "crossConnectMediaConvertor": true,
  • "crossConnectMediaType": "SMF",
  • "crossConnectProvider": "My cross connect provider",
  • "crossConnectSalesRecordId": "",
  • "id": "12345",
  • "localLoopPartnerLocalLineNo": "L93850",
  • "localLoopRemoteCarrierContactNo": "+61 3 2223 3344",
  • "localLoopRemoteLocalLineNo": "L843840384",
  • "localLoopRemoteLocalLinePartner": "Partner name",
  • "localLoopRemoteRefNo": "#980344933948",
  • "localLoopSpeed": "0",
  • "managedRouterServiceCeWanInterface": "",
  • "managedRouterServiceCeWanIpAddress": "",
  • "managedRouterServiceCpeOrder": "",
  • "managedRouterServiceDialupNo": "",
  • "managedRouterServiceManagementIp": "192.0.2.101",
  • "managedRouterServiceRemark": "",
  • "managedRouterServiceRouterName": "cds-e038kf-jhsnv",
  • "managedRouterServiceRouterOwner": "",
  • "managedRouterServiceRouterProvider": "",
  • "premiumColocationPanelNumber": "",
  • "premiumColocationRackId": "",
  • "premiumColocationSalesRecordId": ""
}

Perform a action on a port

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

action
required
string
Example: action(sendloa)

The action to take.

Responses

Response samples

Content type
application/json
{
  • "activeChangedAt": "2016-06-16T06:20:10.640Z",
  • "asn": {
    },
  • "capacity": {
    },
  • "company": {
    },
  • "companyId": "5762451982894b9b1b1a5dbc",
  • "connections": [
    ],
  • "controllers": [
    ],
  • "createdAt": "2016-06-16T06:20:10.029Z",
  • "dataCenterFacility": {
    },
  • "dataCenterFacilityId": "5126c9f1111e15a24a066130",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "id": "5762451a82894b9b1b1a5dc2",
  • "ip": {
    },
  • "locationId": "b3f5ac21-fec1-4418-9e1a-709d48da59fa",
  • "crossConnectId": "68696464-b2f7-4c90-a342-293f7385469a",
  • "metro": {
    },
  • "metroId": "1232413986c08c061dd8c45f",
  • "name": "Vicente",
  • "networkServiceProviderId": null,
  • "partner": {
    },
  • "portId": null,
  • "singleService": false,
  • "speed": {
    },
  • "status": "ACTIVE",
  • "type": "PHYSICAL",
  • "updatedAt": "2016-06-16T06:20:11.116Z",
  • "vlanRange": [
    ]
}

Get port utilization data

Obtain utilization information about a specific port using a specific time period and preferred resolution.

Utilization is based on connections attached to a port. Incoming connections (connections initiated by someone else that you accepted) are not included in utilization, but outgoing connections (connections you initiated) are included. You may not create an outgoing connection request that exceeds your port utilization.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

query Parameters
start
required
string
Example: start=1459376516

Unix timestamp for beginning of time window.

end
required
string
Example: end=1459376516

Unix timestamp for end of time window.

resolution
required
string
Example: resolution=day

Set the resolution of response ('day' | 'hour' | 'minute'). Resolution defaults to minute if not passed. Note: As minute is the smallest resolution, it will not have min/max fields in the response.

Responses

Response samples

Content type
application/json
{
  • "portId": 120391239323,
  • "results": [
    ],
  • "unit": "Mbps"
}

Get port VLAN info

Return the vlan information around the given port

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

query Parameters
detailed
string
Example: detailed=true

Retrieve available VLANs? Default: true.

service
string
Example: service=connection

The service type to retrieve the available VLANs for. Accepted values are ‘connection’ and ‘gia’. Default: ‘connection’.

Responses

Response samples

Content type
application/json
{
  • "id": 120391239323,
  • "available": [
    ],
  • "ranges": [
    ],
  • "unit": "Mbps"
}

Get all ports/regions for DCP

DCP Partner Username
AWS amazon
AZURE azure
GCE google_cloud
TENCENT tencent-cloud
ALICLOUD alibaba_cloud
Authorizations:
api-key
path Parameters
username
required
string
Example: amazon

The username of the Direct Connect Partner (DCP) for which to retrieve the ports/regionIds.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Get all DCP add-ons

Authorizations:
api-key
path Parameters
username
required
string
Example: amazon

The username of the Direct Connect Partner (DCP) for which to retrieve the add-ons.

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Get all connections for a specified port

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id.

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Check Port capabilities

Check the capabilities of a Port.

Prerequisites:

  • Your company has been verified on the Console Connect platform.
  • You have a port.
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company requesting the capabilities check.

portId
required
string
Example: 6ea4b418ab1dbe8c8476163b

The ID of the port to request the capabilities of.

Responses

Response samples

Content type
application/json
{
  • "capabilities": {
    }
}

Edge Console

Before configuring any network services in Console Connect, you must create a port. This is a two-step process; ordering or requesting a port, then activating that port. The price with all vendor details is returned and stored in the edgePayload. The difference between Edge and non-Edge order/port is that there is edgePayload present and the flag is set to isEdgePort=true. The collections in MongoDb for both are the same.

Get order details by ID

Get the details of a companies port order

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company that the order is for.

orderId
required
string
Example: 56d691309a90128d55831db1

The ID of the order.

Responses

Response samples

Content type
application/json
{
  • "billingId": "56d691309a90128d55831db2",
  • "cancelled": false,
  • "isEdgePort": false,
  • "edgePayload": { },
  • "cancelledAt": "1970-01-01T00:00:00.000Z",
  • "cancelledBy": null,
  • "company": {
    },
  • "controller": {
    },
  • "createdAt": "2016-03-02T07:07:28.195Z",
  • "createdBy": "stan",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "deletedBy": null,
  • "id": "56d691309a90128d55831db1",
  • "locationId": null,
  • "crossConnectId": null,
  • "message": null,
  • "metro": {
    },
  • "port": {
    },
  • "portName": "PORT_1",
  • "speed": {
    },
  • "status": "created",
  • "updatedAt": "2016-03-02T07:07:28.195Z",
  • "updatedBy": null
}

Read port details

Note: Reading a company's port details is publicly visible.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check the port for.

portId
required
string
Example: 55767b5652a693344a015744

The port id

Responses

Response samples

Content type
application/json
{
  • "activeChangedAt": "2016-06-16T06:20:10.640Z",
  • "asn": {
    },
  • "capacity": {
    },
  • "company": {
    },
  • "companyId": "5762451982894b9b1b1a5dbc",
  • "connections": [
    ],
  • "controllers": [
    ],
  • "createdAt": "2016-06-16T06:20:10.029Z",
  • "dataCenterFacility": {
    },
  • "dataCenterFacilityId": "5126c9f1111e15a24a066130",
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "id": "5762451a82894b9b1b1a5dc2",
  • "ip": {
    },
  • "locationId": "b3f5ac21-fec1-4418-9e1a-709d48da59fa",
  • "crossConnectId": "68696464-b2f7-4c90-a342-293f7385469a",
  • "metro": {
    },
  • "metroId": "1232413986c08c061dd8c45f",
  • "name": "Vicente",
  • "networkServiceProviderId": null,
  • "partner": {
    },
  • "portId": null,
  • "singleService": false,
  • "speed": {
    },
  • "status": "ACTIVE",
  • "type": "PHYSICAL",
  • "updatedAt": "2016-06-16T06:20:11.116Z",
  • "vlanRange": [
    ]
}

Edge supported countries

Retrieves the list of countries with provider detail if supported by Edge. (used in dropdown selectors)

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page": 1,
  • "size": 1,
  • "total": 1
}

Edge supported bandwidths

Get bandwidth list supported by Edge. (used in dropdown selectors)

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page": 1,
  • "size": 1,
  • "total": 1
}

Edge supported contract terms

Get contract term list supported by Edge.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "page": 1,
  • "size": 1,
  • "total": 1
}

Edge Quotations Deprecated

Retrieves price quotations available for a certain country which offers a particular bandwidth and terms. This has been replaced by the async version as this request will often cause a timeout.

Authorizations:
api-key
Request Body schema: application/json
required
object

The quoted country

bandwidth
required
string

The bandwidth value for the quote

bandwidthUnit
required
string

The bandwidth unit for the quote. Mbps or Gbps

contract-term
required
string

The contract term value for the quote

contractTermUnit
required
string

The contract term unit for the quote

formatted-address
required
string

A valid address format retrieved from Google Places API search.

postCode
string or null

Postcode used in address when a Singapore location is choosen.

withMetro
boolean
Default: true

Include metro details for the Quote/Order

Responses

Request samples

Content type
application/json
{
  • "country": {
    },
  • "bandwidth": "200",
  • "bandwidthUnit": "Mbps",
  • "contract-term": "12",
  • "contractTermUnit": "month",
  • "formatted-address": "Example address, Hongkong",
  • "postCode": "",
  • "withMetro": true
}

Response samples

Content type
application/json
{
  • "formatted-address": "Example address, Hong Kong",
  • "addressResult": {
    },
  • "data": [ ]
}

Edge Quotations (Async)

Generates a request token for retrieving price quotations available for a certain country which offers a particular bandwidth and terms. This is used in tandem with `GET /v2/edge/price/result/:responseId which will be polled until the result is available.

Authorizations:
api-key
Request Body schema: application/json
required
object

The quoted country

bandwidth
required
string

The bandwidth value for the quote

bandwidthUnit
required
string

The bandwidth unit for the quote. Mbps or Gbps

contract-term
required
string

The contract term value for the quote

contractTermUnit
required
string

The contract term unit for the quote

formatted-address
required
string

A valid address format retrieved from Google Places API search.

postCode
string or null

Postcode used in address when a Singapore location is choosen.

withMetro
boolean
Default: true

Include metro details for the Quote/Order

Responses

Request samples

Content type
application/json
{
  • "country": {
    },
  • "bandwidth": "200",
  • "bandwidthUnit": "Mbps",
  • "contract-term": "12",
  • "contractTermUnit": "month",
  • "formatted-address": "Example address, Hongkong",
  • "postCode": "",
  • "withMetro": true
}

Response samples

Content type
application/json
{
  • "responseId": "string",
  • "status": "string"
}

Edge Quotations (Async)

Retrieves price quotation result using the responseId from POST /v2/edge/price/search.

Authorizations:
api-key
path Parameters
responseId
required
string
Example: d40d80c8-833b-4093-9217-74a68b75a6c4

The id (quoteKey) for an external pricing result.

Responses

Response samples

Content type
application/json
{
  • "formatted-address": "Example address, Hong Kong",
  • "addressResult": {
    },
  • "data": [ ]
}

Calculate price (discount)

Calculate Edge price by discount code from the original price calculated by the original quote. The quoteKey need to be valid, otherwise it won't be possible to return any result.

Authorizations:
api-key
query Parameters
quoteKey
required
string
Example: quoteKey=d40d80c8-833b-4093-9217-74a68b75a6c4

The id (quoteKey) for an external pricing result.

discountCode
required
string
Example: discountCode=EDGE20

Discount code to lower the price (if valid).

Responses

Response samples

Content type
application/json
{
  • "formatted-address": "Example address, Hong Kong",
  • "addressResult": {
    },
  • "data": [
    ]
}

Locations

Gets the list of available locations (city and country) for Edge used in pricing calculator. These are countries from Data Center Facilities tagged for edge

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List of edge ports, orders & drafts

V2 endpoint for getting edge draft/order/port list. It replaces /api/company/{companyName}/ports/edge-orders.

Authorizations:
api-key
query Parameters
page
string
Example: page=2

(For pagination) this defines the page number. works only if size is provided

size
string
Example: size=20

(For pagination) this defines the number of items per page. works only if page is provided

status
string
Example: status=processing

Filters the result to only show a specific status

Responses

Response samples

Content type
application/json
Example
{
  • "id": "66111622acb43722f8f58a8f",
  • "speed": 500,
  • "edgePayload": {
    },
  • "companyId": "612f11859195c70015229bc",
  • "createdAt": "2024-05-08T09:30:10.947Z",
  • "updatedAt": "2024-05-08T09:30:10.947Z",
  • "portName": "Draft order 2024-05-08",
  • "objectType": "DRAFT ORDER",
  • "status": "DRAFT",
  • "daysUntilDelete": 24
}

Edge port / orders Deprecated

V1 of the Edge port / orders listing. It is replaced by /v2/edge-ports/orders

Authorizations:
api-key
path Parameters
companyName
required
string
Example: regis

Username of the company.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Edge port order

An Edge port order is created in a 'dataCenterFacility'.

The 'paymentType' field is required and needs to be 'invoice'.

When the port is provisioned, the order will change to "done" status and a new port will be created and activated.

You can create an order from Draft, you need to then pass draftOrderId in edgePayload in order to delete the draft automatically after creating the order.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: regis

Username of the company.

Request Body schema: application/json
portName
string

The name of the port

speed
string

The port speed in Mbps. Must be >= 100.

paymentType
string
Default: "invoice"

paymentType invoice is the only one currently supported

object

Includes all edge related informations, form params etc.

Responses

Request samples

Content type
application/json
{
  • "name": "PORT_1",
  • "speed": 500,
  • "paymentType": "invoice",
  • "edgePayload": {
    }
}

Response samples

Content type
application/json
{
  • "id": "663cb272ce0ce92034c111111",
  • "portName": "PORT_1",
  • "speed": {
    },
  • "paymentType": "invoice",
  • "discountId": null,
  • "billingId": "663ca271ce0ce92034c11111",
  • "externalId": null,
  • "salesRecordId": null,
  • "paymentTransactionId": null,
  • "payg": true,
  • "status": "created",
  • "isEdgePort": true,
  • "cancelled": false,
  • "requestSource": "CONSOLE_APP",
  • "createdBy": "bk",
  • "tags": [ ],
  • "type": "PHYSICAL",
  • "dataCenterFacilityId": "63ce2dsdb423cc0015f11111",
  • "metroId": "77d9f1fcbcaa906f3cd11111",
  • "companyId": "62ff65219195c7001521e9bc",
  • "crossConnectId": null,
  • "deleted": false,
  • "deletedAt": null,
  • "createdAt": "2024-05-09T11:24:33.969Z",
  • "updatedAt": "2024-05-09T11:24:34.176Z",
  • "company": {
    },
  • "dataCenterFacility": {
    }
}

Send 10G statistics

Sends statistics for 10G enquiry. Used only when client asks for 10Gbps offer.

Authorizations:
api-key
Request Body schema: application/json
required
object

The quoted country

bandwidth
required
string

The bandwidth value for the quote

bandwidthUnit
required
string

The bandwidth unit for the quote. Mbps or Gbps

contract-term
required
string

The contract term value for the quote

contractTermUnit
required
string

The contract term unit for the quote

formatted-address
required
string

A valid address format retrieved from Google Places API search.

postCode
string or null

Postcode used in address when a Singapore location is choosen.

withMetro
boolean
Default: true

Include metro details for the Quote/Order

Responses

Request samples

Content type
application/json
{
  • "country": {
    },
  • "bandwidth": "200",
  • "bandwidthUnit": "Mbps",
  • "contract-term": "12",
  • "contractTermUnit": "month",
  • "formatted-address": "Example address, Hongkong",
  • "postCode": "",
  • "withMetro": true
}

Send enquiry email

Sends email to customer support for any enquiry.

Authorizations:
api-key
Request Body schema: application/json
required
object

The quoted country

bandwidth
required
string

The bandwidth value for the quote

bandwidthUnit
required
string

The bandwidth unit for the quote. Mbps or Gbps

contract-term
required
string

The contract term value for the quote

contractTermUnit
required
string

The contract term unit for the quote

formatted-address
required
string

A valid address format retrieved from Google Places API search.

postCode
string or null

Postcode used in address when a Singapore location is choosen.

withMetro
boolean
Default: true

Include metro details for the Quote/Order

Responses

Request samples

Content type
application/json
{
  • "country": {
    },
  • "bandwidth": "200",
  • "bandwidthUnit": "Mbps",
  • "contract-term": "12",
  • "contractTermUnit": "month",
  • "formatted-address": "Example address, Hongkong",
  • "postCode": "",
  • "withMetro": true
}

Edge Draft Orders Details

Get list of edge draft orders. Only DraftOrder model object will be returned, with the deleteIn < 30 days. Any older record will not be returned.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Edge Draft Order

The endpoint allows the creation of an edge draft order. Draft orders are used to temporarily store a user's partial order form data. This data is stored for 30 days. The data in the edgePayload is later used by the frontend application to recreate the original order form. After creating the record, the user can resume their form progress and continue ordering the Edge port. Draft orders are displayed along with orders and ports.

Authorizations:
api-key
Request Body schema: application/json
name
string or null

If name is not provided, it will automatically assign name: Draft order DD-MM-YYYY.

speed
required
number

The speed of the bandwidth (in Mbps)

required
object

Contains all information needed to recreate the original form values in the frontend.

Responses

Request samples

Content type
application/json
{
  • "name": "custom name",
  • "speed": "500,",
  • "edgePayload": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "speed": 0,
  • "deleteIn": 0,
  • "edgePayload": {
    },
  • "companyId": "string",
  • "deleted": true,
  • "deletedAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Update Edge Draft Order

Update edge draft order

Authorizations:
api-key
path Parameters
draftOrderId
required
string

The id of the draft order

Request Body schema: application/json
name
string or null

If name is not provided, it will automatically assign name: Draft order DD-MM-YYYY.

speed
required
number

The speed of the bandwidth (in Mbps)

required
object

Contains all information needed to recreate the original form values in the frontend.

Responses

Request samples

Content type
application/json
{
  • "name": "custom name",
  • "speed": "500,",
  • "edgePayload": {
    }
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "speed": 0,
  • "deleteIn": 0,
  • "edgePayload": {
    },
  • "companyId": "string",
  • "deleted": true,
  • "deletedAt": "string",
  • "createdAt": "string",
  • "updatedAt": "string"
}

Delete Edge Draft Order

Deletes a draft order given its ID.

Authorizations:
api-key
path Parameters
draftOrderId
required
string

The id of the draft order

Responses

Layer 2 Connections

Once a port is active, you can provision a connection on it. You can create Layer 2 Connections between your port and another port belonging to your company (self-to-self), to a port belonging to another company (B2B), or to a DCP port.

Connections can be in one of the following states:

Status Description
PENDING The connection request is pending approval from at least one party.
CANCELLED The request was cancelled by the source/requestor.
PENDING ACCEPTANCE Pending acceptance by 3rd party service (e.g. AWS).
DENIED The request was rejected by the target.
ACCEPTED The request was accepted by the target, but the physical port has not yet come up.
ACTIVE The connection is Active and operational.
DISABLED The connection has been explicitly disabled.
DELETING The connection is in the process of being deleted.
DELETED The connection has been deleted.
MANUAL The connection is being manually provisioned.
ERROR The connection is in an error state. Refer to connection.errorReason for more information.

Create a Layer 2 connection request

Create a Layer 2 connection request to a specified destination company. Layer 2 connections require a source port ID and requested metro.

  • You may not create an outgoing connection request that exceeds your port utilization or plan entitlement.
  • Both parties must approve a connection before it is activated. When either party makes a billing or capacity change, the other party must approve the connection using the approve endpoint.
  • The 'paymentType' can only be 'invoice'. A 'paymentType' of 'creditcard' is only supported via the Console Connect web application.
  • For pay-as-you-go connections where paymentType is 'creditcard', paymentTransactionId, duration and evergreen options must be provided in the request.
  • If paymentType is 'invoice', 'destDcf', 'duration' and 'durationUnit' should be provided.
Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
type
required
string
Value: "LAYER2"

The connection type, typically "LAYER_2".

name
required
string

The name of the new connection.

portId
required
string

The source port ID.

destPortId
required
string
regionId
string
destRegionId
string
destDcf
string
speed
required
number

The port speed in Mbps.

destMetroId
required
string

The ID of the destination metro.

destCompany
required
string

The username of the destination company.

paymentType
required
string
Enum: "creditcard" "invoice"

The PAYG payment type.

duration
required
number
durationUnit
required
string

The duration unit for the connection ('d', 'w', 'm', 'y').

evergreen
boolean
classOfService
required
string
Enum: "GOLD" "SILVERPLUS" "SILVER" "BRONZE"
srcVlanRequest
number or null
destVlanRequest
number or null
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "my new connection",
  • "portId": "123",
  • "speed": 1000,
  • "paymentType": "invoice",
  • "duration": 1,
  • "durationUnit": "m",
  • "destPortId": "d466b388d3e9ee0a92177910",
  • "destCompany": "companyusername"
}

Response samples

Content type
application/json
Example
{
  • "id": "58afc0499430ab7f3666b990",
  • "type": "LAYER2",
  • "status": "CREATING",
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "speed": {
    },
  • "subconnections": [ ],
  • "vlan": {
    },
  • "name": "my new connection",
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "classOfService": "BRONZE"
}

Read a Layer 2 connection

Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Response samples

Content type
application/json
{
  • "id": "58afc0499430ab7f3666b990",
  • "name": "my connection",
  • "status": "ACTIVE",
  • "type": "LAYER2",
  • "speed": {
    },
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "tag": null,
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "subconnections": [ ],
  • "srcCompany": [
    ],
  • "destCompany": [
    ],
  • "metro": [
    ],
  • "destMetro": [
    ],
  • "port": [
    ],
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "maintenanceMode": false,
  • "srcVlanRequest": 1000,
  • "destVlanRequest": 2000,
  • "classOfService": "GOLD",
  • "vlan": [
    ],
  • "request": [
    ]
}

Delete a Layer 2 connection

Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Update a connection

Update a Layer 2 connection

This is used for both connection requests and regular connection edits.

Connection speed

To prevent unexpected costs for the other party, you may only reduce the speed of a connection to another company (either as a connection request or after it has been activated).

Self-connections can be updated to a new speed at any time.

The speed of connection groups may not be updated.

Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Request Body schema: application/json
speed
number >= 1

Speed in Mbps. You can set any speed while the connection request is PENDING. After the connection has been accepted by both parties, the connection speed can be reduced at any time, but may not be increased without a change request.

name
string

Friendly name for this connection. This is specific to your company, however when first creating a connection request this name will set for bot your company and the destination company.

portId
string

Connection request: Port ID to use for this connection. If changing the controller would change the cdrBillingType for the other person, they will need to approve this connection request again.

untagged
boolean

Connection request: Whether this connection should be untagged.

destUntagged
boolean

Connection request: Whether the destination should be untagged. Only used for self-connection.

destPortId
string

Connection request: Dest port ID to use for a self-connection.

controllerId
string

Connection request: Controller ID to use for this connection. Only allowed on Layer 3 connections. If changing the controller would change the cdrBillingType for the other person, they will need to approve this connection request again.

destControllerId
string

Connection request: Dest controller ID to use for a self-connection.

Responses

Request samples

Content type
application/json
{
  • "speed": 1,
  • "name": "string",
  • "portId": "string",
  • "untagged": true,
  • "destUntagged": true,
  • "destPortId": "string",
  • "controllerId": "string",
  • "destControllerId": "string"
}

Response samples

Content type
application/json
{
  • "id": "58afc0499430ab7f3666b990",
  • "name": "my connection",
  • "status": "ACTIVE",
  • "type": "LAYER2",
  • "speed": {
    },
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "tag": null,
  • "deleted": false,
  • "deletedAt": "1970-01-01T00:00:00.000Z",
  • "subconnections": [ ],
  • "srcCompany": [
    ],
  • "destCompany": [
    ],
  • "metro": [
    ],
  • "destMetro": [
    ],
  • "port": [
    ],
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "maintenanceMode": false,
  • "srcVlanRequest": 1000,
  • "destVlanRequest": 2000,
  • "classOfService": "GOLD",
  • "vlan": [
    ],
  • "request": [
    ]
}

Approve a connection request

When both parties have approved the connection request, the connection will be created. Connections are automatically approved when a party updates the connection request.

Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Reject a connection request

Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Disable a connection

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check is following the other.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Enable a connection

Before a connection can be enabled, the source and destination ports must both be in the 'ACTIVE' state.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check is following the other.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Change request

When you need to make a change that affects the other end of the connection, you must make a change request so that both parties can approve the change. The workflow of a change request is as follows:

  1. Company A creates a change request with a speed increase. Company A automatically approves this change. The connection.request.status will be set to PENDING.
  2. Company B can accept this change as-is and the change will be made. If company B modifies the change request, Company B automatically approves this change and company A's prior approval is removed.
  3. The change request goes back and forth between companies until it is approved by both sides, or rejected outright by one of the parties. The following connection properties are currently supported:
  • 'speed'

    Note: Speed decreases are allowed at any time. If a change request is made, the destination company can accept the change at a lower speed than the one specified.

You will need to have your 'companyId' handy. If you cannot remember your 'companyId', you can make a request to find it.

Create or update a change request

Create a change request. This will send an alert to the other party to approve.

The change request must be within the bounds of your port speed and Committed Data Rate (CDR). The bandwidth amount will be deducted from your entitlement (including global CDR) as soon as the request is made, reserving it for when the other party accepts the connection.

Use this endpoint to reduce the speed of an existing change request. If the other company has approved the change and you reduce the speed, the change will be applied automatically.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company creating the connection.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

Request Body schema: application/json
speed
number

Responses

Request samples

Content type
application/json
{
  • "speed": 250
}

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Reject or cancel a change request

Reject or cancel a change request.

After performing this action, the 'request.status' will be set to either 'WITHDRAWN' if this is a change you proposed, or 'REJECTED' if this is a change the other party proposed.

An alert will be sent to the other party advising them of this change.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company deleting the connection.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Approve the current change request

Approve a change request. If both parties have approved this change request, the change will be applied automatically.

If you wish to accept a connection at a different speed, use the Create or update a change request endpoint.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company creating the connection.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Mark the change request as read

Mark a change request as read. This does not alter the change request, and will not allow the other side to see that you have marked it as read. This is a cosmetic change, and is only used to maintain state on the front-end.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company creating the connection.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

Responses

Response samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "string",
  • "srcPortId": "string",
  • "speed": {
    },
  • "destMetroId": "string",
  • "destCompany": "string",
  • "destPortId": "string",
  • "paymentType": "creditcard",
  • "partner": {
    }
}

Sync connection with upstream provider

Sync the connection with the upstream provider. This is implemented for AzureExpressRoute, and will fetch the latest information from the Azure API. Use this when you have changed the connection speed & details in Azure and need to sync them back to Console Connect.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company syncing the connection.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

Responses

Request connection logs

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company to check.

connectionId
required
string
Example: 55783e39519d254d36f6126e

The connection id

Responses

Response samples

Content type
application/json
{
  • "results": [
    ]
}

Get connection utilization data

Authorizations:
api-key
path Parameters
companyName
required
string
Example: corp

The username of the company that owns the connection to be checked.

connectionId
required
string
Example: 55767b5652a693344a015744

The connection id

query Parameters
start
required
string
Example: start=1459376516

Unix timestamp for beginning of time window.

end
required
string
Example: end=1459376516

Unix timestamp for end of time window.

resolution
required
string
Example: resolution=day

Set the resolution of the response ('day' | 'hour' | 'minute'). If no resolution is passed, it will default to 'minute'. Note: As 'minute' is the smallest resolution, it will not have min/max fields in the response.

Responses

Response samples

Content type
application/json
{
  • "connectionId": 120391239323,
  • "results": [
    ],
  • "unit": "Mbps"
}

Alibaba Cloud

Use this Console Connect API to provision a Layer 2 connection to Alibaba Cloud.

Create a Layer 2 ALICLOUD Direct Connect Partner connection

Prerequisites

  • Your company has been verified on the Console Connect platform.
  • The authenticated user account has Network Admin permissions.
  • The source port is ACTIVE.
  • You are requesting paymentType "invoice", or, if requesting paymentType "plan", the subscription associated with the port has sufficient entitlements to complete the request.
Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company creating the connection.

Request Body schema: application/json
srcPortId
required
string

The source port ID.

destPortId
required
string

The destination port ID from Alibaba Cloud.

speed
required
integer

The speed of the connection in Mbps. Values are in increments of 10 up to a maximum of 10000.

name
required
string

Name of the L2 connection.

type
required
string

Set to LAYER2.

required
object
duration
required
integer

The duration the service was ordered for, in conjunction with durationUnit. The maximum duration by unit is, with days set at 6, weeks at 3, months at 36, and years at 3.

durationUnit
required
string

The unit of duration the service was ordered for, in conjunction with duration. d for days, w for weeks, m for months, y for years.

classOfService
required
string
Enum: "BRONZE" "SILVER" "GOLD"

The class of service for the connection. Note that if your company is an “Enterprise“ business type, your connection’s Class of Service will be BRONZE. If your company is a “Wholesaler“, you can choose from SILVER(default), or GOLD.

evergreen
required
boolean

Set to true if you wish to have your connection and payment continue on a month-to-month basis at the end of your selected duration. Otherwise, set this to false.

paymentType
required
string
Value: "invoice"

Set to invoice.

srcVlanRequest
Array of integers or null

This is the Vlan on your source port. You can specify the the Vlan ID provided that it is available. If you don’t want to specify it you can leave null then Console Connect will automatically select the next available Vlan on your port. Note that the Vlan IDs need to be unique in your response call.

Responses

Request samples

Content type
application/json
{
  • "srcPortId": "6790ae2137c97152a324ca6e",
  • "destPortId": "63758d98bb8ed30015ca477a",
  • "speed": 50,
  • "name": "Alibaba Connection",
  • "type": "LAYER2",
  • "regionId": "65c086a0fe32bccfc1859f1c",
  • "destRegionId": "5a4c7856c4deb60012408243",
  • "partner": {
    },
  • "duration": 1,
  • "durationUnit": "y",
  • "classOfService": "SILVER",
  • "evergreen": true,
  • "paymentType": "invoice"
}

Response samples

Content type
application/json
{
  • "destPortId": "63758d98bb8ed30015ca477a",
  • "srcCompanyId": "635244684806220015481db0",
  • "destCompanyId": "5ba987d40bf4f0000a7b470d",
  • "version": 2,
  • "srcRegionId": "65c086a0fe32bccfc1859f1c",
  • "destRegionId": "5a4c7856c4deb60012408243",
  • "name": "Alibaba Connection",
  • "speed": {
    },
  • "status": "CREATING\"",
  • "type": "GROUP_LAYER2",
  • "paymentType": "invoice",
  • "billingType": "PAYG",
  • "classOfService": "SILVER",
  • "payg": true,
  • "paymentTransactionId": null,
  • "networkAutomation": { },
  • "parentId": null,
  • "partner": {
    },
  • "duration": 1,
  • "durationUnit": "y",
  • "srcUntagged": false,
  • "destUntagged": false,
  • "srcQinQ": false,
  • "destQinQ": false,
  • "cdrBillingType": "GLOBAL",
  • "activeChangedAt": null,
  • "firstActiveAt": null,
  • "salesRecordId": null,
  • "maintenanceMode": false,
  • "ixPartner": { },
  • "discountId": null,
  • "request": {
    },
  • "srcVlan": {
    },
  • "destVlan": {
    },
  • "srcConfigTag": null,
  • "destConfigTag": null,
  • "subconnectionIds": {
    },
  • "importedAt": null,
  • "statusChangedAt": "2025-02-06T02:01:18.143Z",
  • "requestSource": "CONSOLE_APP",
  • "id": "67a417eeca35ff169848e833",
  • "createdAt": "2025-02-06T02:01:18.144Z",
  • "updatedAt": "2025-02-06T02:01:18.171Z",
  • "deletedAt": null,
  • "deleted": false,
  • "srcPortId": "6790ae2137c97152a324ca6e",
  • "typeFriendly": "Alicloud Direct Connect",
  • "isReceiver": false,
  • "isCreator": true,
  • "subconnections": [ ]
}

Anti-DDoS

Use this API to create, list, update or delete Anti-DDoS orders for the Console Security application.

Returns a list of termination sites.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get DNS UIDs and synonyms for the current user

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Returns sales records

Authorizations:
api-key
query Parameters
cust_id
required
string
Example: cust_id=IS0168

insight customer id

product_id
string
Example: product_id=I4E,I4P,I3E,I3W,I3P

array of product id, separate by comma

sale_status_id
string
Example: sale_status_id=OP

array of sale status id, separate by comma

limit
integer [ 0 .. 20 ]
Example: limit=4

maximum number of records

offset
required
integer >= 0
Example: offset=1

Responses

Response samples

Content type
application/json
{
  • "sr": [
    ],
  • "offset": 0,
  • "limit": 0,
  • "count": 0,
  • "total_count": 0
}

Create a new order, and create a Sales Record in Insight.

Authorizations:
api-key
Request Body schema: application/json
name
required
string

Provided by user

insight_customer_id
required
string

Provided by JWT from Console Connect, e.g. AIN001, TAN006, IS0569, TOL, TATA. Must already be an existing customer on the Insight platform.

package
required
string (Package)
Enum: "alwayson" "ondemand"
number_of_protected_ips
required
Array of arrays (NumberOfProtectedIps) = 2 items
Items Enum: [1,8] [9,16] [17,32] [33,64]

Number of IPv4 address prefixes to be protected. Array of minimum and maximum range.

total_inbound_traffic
required
Array of arrays (TotalInboundTraffic) = 2 items
Items Enum: [0,50] [51,100] [101,200] [201,500] [501,1000] [1001,2000]

Corresponding Legitimate Traffic. Array of minimum and maximum range, in Mbps.

total_mitigated_traffic
required
integer (TotalMitigatedTraffic)
Enum: 20 50 100

DDoS attack traffic to be mitigated, in Mbps.

service_period
required
integer (ServicePeriod)
Enum: 12 24
resources_behind
required
boolean

Whether the cleaned traffic shall be delivered to your existing GIA circuit.

Responses

Request samples

Content type
application/json
{
  • "name": "Anti-DDoS October Order",
  • "insight_customer_id": "AIN001",
  • "package": "alwayson",
  • "number_of_protected_ips": [
    ],
  • "total_inbound_traffic": [
    ],
  • "total_mitigated_traffic": 50,
  • "service_period": 12,
  • "resources_behind": true
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "insight_sr_id": 10211
}

Returns a single order.

Authorizations:
api-key
path Parameters
id
required
integer
Example: 1

ID of order to be fetched

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "Anti-DDoS October Order",
  • "insight_customer_id": "AIN001",
  • "package": "alwayson",
  • "number_of_protected_ips": [
    ],
  • "total_inbound_traffic": [
    ],
  • "total_mitigated_traffic": 50,
  • "service_period": 12,
  • "resources_behind": true,
  • "status": "active",
  • "time_created": "2020-11-18T14:34:53.246Z",
  • "time_readyforprovision": "2020-11-18T14:34:53.246Z",
  • "insight_sr_id": 10211,
  • "insight_so_id": 29283,
  • "circuit_id": "ASH(IPD) CAD901787",
  • "scrubbing_centre": "ashburn_us",
  • "protected_ip_addresses": [
    ],
  • "provisioning_config_active": {
    },
  • "provisioning_config_standby": {
    },
  • "termination_site_id": 44
}

Adds the network configuration information to an existing order. This progresses its status from 'new' to 'ready for provisioning'.

Authorizations:
api-key
path Parameters
id
required
integer
Example: 1

ID of order to be fetched

Request Body schema: application/json
scrubbing_centre
string (ScrubbingCentre)
Enum: "ashburn_us" "frankfurt_de" "hongkong_cn" "singapore_sg" "taiwan_tw"

Associated Scrubbing Centre

Array of objects (ProtectedIpAddresses)

IP address prefixes that will be protected by the Anti-DDoS service.

object
object
object (BasicTerminationSite)
termination_site_id
integer

To use an existing Termination Site, specify its ID

Responses

Request samples

Content type
application/json
{
  • "scrubbing_centre": "ashburn_us",
  • "protected_ip_addresses": [
    ],
  • "provisioning_config_active": {
    },
  • "provisioning_config_standby": {
    },
  • "termination_site": {
    },
  • "termination_site_id": 45
}

Response samples

Content type
application/json
{
  • "circuit_id": "ASH(IPD) CAD900000"
}

Place a new DNS order

Authorizations:
api-key
Request Body schema: application/json
resourceType
string
Enum: "mixture" "pureweb"

Type of assets to be protected:

  • mixture - IP Network
  • pureweb - Website domain
insightId
string

insight customer id

uid
string
plan
integer
Enum: 0 1 2

plan:

  • 0: insurance
  • 1: unlimited
  • 2: mca
cleanBandwidth
integer
Enum: 10 20 30 40 50 60 70 80 90 100 150 200 250 300

clean bandwidth, in Mbps.

functionVersion
integer
Enum: 0 1

function:

  • 0: standard
  • 1: enhanced
domainCount
integer multiple of 10 [ 10 .. 2000 ]
cleanQps
integer multiple of 100 [ 500 .. 100000 ]
portCount
integer multiple of 5 [ 5 .. 1000 ]
subscription
integer
Enum: 1 2 3 4 5 6 12 24

service period

autoRenewal
boolean
vendor_account
string

account UID

contactName
string

Technical Contact Name

contactEmail
string

Technical Contact Email

contactPhone
string

Technical Contact Phone

Responses

Request samples

Content type
application/json
{
  • "resourceType": "mixture",
  • "insightId": "string",
  • "uid": "string",
  • "plan": 0,
  • "cleanBandwidth": 10,
  • "functionVersion": 0,
  • "domainCount": 10,
  • "cleanQps": 500,
  • "portCount": 5,
  • "subscription": 1,
  • "autoRenewal": true,
  • "vendor_account": "string",
  • "contactName": "string",
  • "contactEmail": "string",
  • "contactPhone": "string"
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "insight_sr_id": 10211,
  • "vendor_account": "string",
  • "vendor_reference": "string"
}

Renew a DNS order

Authorizations:
api-key
path Parameters
id
required
integer
Example: 1

Anti-DDoS order ID

Request Body schema: application/json
renewPeriod
integer
Enum: 1 2 3 4 5 6 12 24

service period

Responses

Request samples

Content type
application/json
{
  • "renewPeriod": 1
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "insight_sr_id": 10211
}

Config renewal status of a DNS order

Authorizations:
api-key
path Parameters
id
required
integer
Example: 1

Anti-DDoS order ID

Request Body schema: application/json
autoRenewal
boolean

renewal status

Responses

Request samples

Content type
application/json
{
  • "autoRenewal": true
}

Returns a single order from insight (billing).

Authorizations:
api-key
path Parameters
sr_id
required
integer
Example: 1

ID of order to be fetched

Responses

Response samples

Content type
application/json
{
  • "sr_id": 260149,
  • "billing_date": "2022-05-05T00:00:00Z",
  • "contract_renew_date": "2022-05-05T00:00:00Z",
  • "onetime_revenue": "1500.00",
  • "monthly_revenue": "1500.00"
}

Returns a single order from insight (service).

Authorizations:
api-key
path Parameters
sr_id
required
integer
Example: 1

ID of order to be fetched

Responses

Response samples

Content type
application/json
{
  • "sr_id": 260149,
  • "prev_sr_id": null,
  • "next_sr_id": null
}

Validate fields in order form

Authorizations:
api-key
Request Body schema: application/json
name
required
string

Provided by user

insight_customer_id
required
string

Provided by JWT from Console Connect, e.g. AIN001, TAN006, IS0569, TOL, TATA. Must already be an existing customer on the Insight platform.

package
required
string (Package)
Enum: "alwayson" "ondemand"
number_of_protected_ips
required
Array of arrays (NumberOfProtectedIps) = 2 items
Items Enum: [1,8] [9,16] [17,32] [33,64]

Number of IPv4 address prefixes to be protected. Array of minimum and maximum range.

total_inbound_traffic
required
Array of arrays (TotalInboundTraffic) = 2 items
Items Enum: [0,50] [51,100] [101,200] [201,500] [501,1000] [1001,2000]

Corresponding Legitimate Traffic. Array of minimum and maximum range, in Mbps.

total_mitigated_traffic
required
integer (TotalMitigatedTraffic)
Enum: 20 50 100

DDoS attack traffic to be mitigated, in Mbps.

service_period
required
integer (ServicePeriod)
Enum: 12 24
resources_behind
required
boolean

Whether the cleaned traffic shall be delivered to your existing GIA circuit.

Responses

Request samples

Content type
application/json
{
  • "name": "Anti-DDoS October Order",
  • "insight_customer_id": "AIN001",
  • "package": "alwayson",
  • "number_of_protected_ips": [
    ],
  • "total_inbound_traffic": [
    ],
  • "total_mitigated_traffic": 50,
  • "service_period": 12,
  • "resources_behind": true
}

Response samples

Content type
application/json
{
  • "invalidFields": [
    ]
}

Returns a list of orders.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new MCA order, and create a Sales Record in Insight.

Authorizations:
api-key
Request Body schema: application/json
insight_customer_id
required
string

Provided by JWT from Console Connect, e.g. AIN001, TAN006, IS0569, TOL, TATA. Must already be an existing customer on the Insight platform.

uid
required
string

Account uid to create the order

cleanBandwidth
required
integer

Clean bandwidth in Mbps, options provided by the attributes endpoint dynamically

subscription
required
integer
Enum: 1 2 6 12

Service period in month(s)

autoRenewal
required
boolean

Whether the order should be automatically renewed

totalPrice
required
number

Total price for the order, calculated by the cost endpoint

technicalContactName
required
string

Name of the technical contact for the order

technicalContactPhoneNumber
required
string

Phone number of the technical contact for the order

technicalContactEmail
required
string

Email of the technical contact for the order

ruleName
required
string

Name of acceleration rule, only allows alphabet, numbers and underscore

dnsInstanceId
required
string

DNS Instance id to be binded by the acceleration rule

autoSwitchback
required
boolean

To prevent frequent traffic switchover for deactivating blackhole filtering.

switchbackTime
required
integer

Time in seconds to switch back to original traffic path, value must be 0 when autoSwitchback===true, 30-120 when autoSwitchback===false

orderName
required
string

Name for order, provided by user

Responses

Request samples

Content type
application/json
{
  • "insight_customer_id": "AIN001",
  • "uid": 123123412312341000,
  • "cleanBandwidth": 100,
  • "subscription": 1,
  • "autoRenewal": true,
  • "totalPrice": 1000,
  • "technicalContactName": "John Doe",
  • "technicalContactPhoneNumber": "123-456-7890",
  • "technicalContactEmail": "john.doe@example.com",
  • "ruleName": "MCA_Testing_Rule",
  • "dnsInstanceId": "ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc",
  • "autoSwitchback": true,
  • "switchbackTime": 0,
  • "orderName": "MCA Testing Order"
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "insight_sr_id": 10211
}

Create acceleration rules for proxy instances.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

Request Body schema: application/json
uid
required
string (Uid)

Account uid to create the order

ruleName
required
string (RuleName)

Name of acceleration rule, only allows alphabet, numbers and underscore

toInstanceId
required
string (InstanceId)

DNS Instance id to be binded by the acceleration rule

autoSwitchback
required
boolean (AutoSwitchback)

To prevent frequent traffic switchover for deactivating blackhole filtering.

switchbackTime
required
integer (SwitchbackTime)

Time in seconds to switch back to original traffic path, value must be 0 when autoSwitchback===true, 30-120 when autoSwitchback===false

Responses

Request samples

Content type
application/json
{
  • "uid": 123123412312341000,
  • "ruleName": "MCA_Testing_Rule",
  • "toInstanceId": "ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc",
  • "autoSwitchback": true,
  • "switchbackTime": 0
}

Response samples

Content type
application/json
{
  • "cname": "2131231.example001.com",
  • "ruleName": "example001"
}

Get acceleration rules for proxy instances.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Modify acceleration rules for proxy instances.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

ruleName
required
string (RuleName)
Example: MCA_Testing_Rule

The name of the acceleration rule.

Request Body schema: application/json
toInstanceId
required
string (InstanceId)

DNS Instance id to be binded by the acceleration rule

autoSwitchback
required
boolean (AutoSwitchback)

To prevent frequent traffic switchover for deactivating blackhole filtering.

switchbackTime
required
integer (SwitchbackTime)

Time in seconds to switch back to original traffic path, value must be 0 when autoSwitchback===true, 30-120 when autoSwitchback===false

Responses

Request samples

Content type
application/json
{
  • "toInstanceId": "ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc",
  • "autoSwitchback": true,
  • "switchbackTime": 0
}

Response samples

Content type
application/json
{
  • "cname": "2131231.example001.com",
  • "ruleName": "example001"
}

Get acceleration rules for proxy instances by rule name.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

ruleName
required
string (RuleName)
Example: MCA_Testing_Rule

The name of the acceleration rule.

Responses

Response samples

Content type
application/json
{
  • "cname": "2131231.example001.com",
  • "ruleName": "example001",
  • "rules": [
    ]
}

Delete acceleration rules for proxy instances by rule name.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

ruleName
required
string (RuleName)
Example: MCA_Testing_Rule

The name of the acceleration rule.

Responses

Response samples

Content type
application/json
{
  • "message": "code: 500, Internal Server Error"
}

Switch between acceleration route or normal route.

Authorizations:
api-key
path Parameters
instanceId
required
string (InstanceId)
Example: ddos-abcdabcd-1234-1234-1234-aaaabbbbcccc

The unique identifier of the instance.

ruleName
required
string (RuleName)
Example: MCA_Testing_Rule

The name of the acceleration rule.

Request Body schema: application/json
enable
boolean

The status of the acceleration rule, true: enabled, false: disabled.

Responses

Request samples

Content type
application/json
{
  • "enable": true
}

Response samples

Content type
application/json
{
  • "invalidFields": [
    ]
}

Create a web rule

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

The UID of the DNS.

Request Body schema: application/json

Request body for creating a web rule

cnameReused
required
boolean
resourceGroupId
string
domain
required
string
rsType
integer
defenseId
string
ocsp
required
integer
Enum: 0 1
required
object
required
Array of objects (Rule) non-empty
instanceIds
required
Array of strings non-empty

Responses

Request samples

Content type
application/json
{
  • "cnameReused": true,
  • "resourceGroupId": "",
  • "domain": "example.com",
  • "rsType": 0,
  • "defenseId": "",
  • "ocsp": 1,
  • "httpsExt": {
    },
  • "rules": [
    ],
  • "instanceIds": [
    ]
}

Response samples

Content type
application/json
"Unable to process request, reference id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Modify a web rule

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

The UID of the DNS.

Request Body schema: application/json
resourceGroupId
required
string
domain
required
string <uri>
required
Array of objects (ProxyType)
rsType
integer
required
object (HttpsExt)

Configuration options for HTTPS extensions.

realServers
required
Array of strings <ipv4> non-empty
ocsp
integer
Enum: 0 1
instanceIds
required
Array of strings non-empty
cnameReused
required
boolean

Responses

Request samples

Content type
application/json
{
  • "resourceGroupId": "",
  • "domain": "example.com",
  • "proxyTypes": [
    ],
  • "rsType": 0,
  • "httpsExt": {
    },
  • "realServers": [
    ],
  • "ocsp": 1,
  • "instanceIds": [
    ],
  • "cnameReused": true
}

Response samples

Content type
application/json
"Unable to process request, reference id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Delete web rules by domain

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

The UID of the order owner.

Request Body schema: application/json
domain
required
string

The domain name

resourceGroupId
string

The resource group ID

Responses

Request samples

Content type
application/json
{
  • "domain": "example.com",
  • "resourceGroupId": ""
}

Response samples

Content type
application/json
"Unable to process request, reference id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Add a SSL certificate to a domain

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account uid

Request Body schema: application/json
domain
required
string

The domain name

certName
required
string

The name of the SSL certificate. This name must be unique.

cert
required
string

The SSL certificate

key
required
string

The private key of the SSL certificate

Responses

Request samples

Content type
application/json
{
  • "domain": "example.com",
  • "certName": "ssl_cert-20240101.crt",
  • "cert": "-----BEGIN CERTIFICATE-----MIIDhjCCAm6gAwIBAgIEImTpEzANBgkqhkiG9w0BAQsFADBbMScwJQYDVQQDDB5SZWdlcnkgU2VsZi1TaWduZWQgQ2VydGlmaWNhdGUxIzAhBgNVBAoMGlJlZ2VyeSwgaHR0cHM6Ly9yZWdlcnkuY29tMQswCQYDVQQGEwJVQTAgFw0yNDA4MTkwMDAwMDBaGA8yMTI0MDgxOTA5MzgzMVowSDEUMBIGA1UEAwwLZXhhbXBsZS5jb20xIzAhBgNVBAoMGlJlZ2VyeSwgaHR0cHM6Ly9yZWdlcnkuY29tMQswCQYDVQQGEwJVQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAI/75U1FWK4EjeYe44Y8Ay43tCPK+uSHV2Vw9Akvh0q09qOGIVcWl5AJuRaGdwFkn5GZRCLe0MRBkm4kn5jN+6QyMIZieWP0OQR//sICbTYsiofp5Na8VPTQuqTRaK5ssPOS4d54X6MYRzbsJY/arKcEEyA2q1eQkk6en+CxnQLYOK7PqHsHeOPWUGCZDO3au0dnlDAVJgJHqT6t1VsjhVAnZEsYCyGyM0IpXpHeAsVxBTWW8+ri5WxvBc27GvJHx9Gg9NJP1MLkB2gMYaxg2U04E49KZ+Ah1WMA3glv1IwnTf6C5pb3fDa0iGpcdqRZguvwm2YbqdNXszngK2HOvJUCAwEAAaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJuzUcPaUHq5ZdTgXtVjkeFmeIXzMB8GA1UdIwQYMBaAFJuzUcPaUHq5ZdTgXtVjkeFmeIXzMA0GCSqGSIb3DQEBCwUAA4IBAQCL6rYsKb9DWutmLPNMzEeyEFiX1ab5wWHW7CU4HjZuYpqmXLjhMiKy+kSUVbbuDkkXhyegwHFROjUdcpD27Ve8humOPTORr5WZDNKNpM/RAjiBI58RV/00sKhFuwXp6fJZPy5BpLqjqs4AA9mfRu8aRow9x/ZcM8daJlxEHfsfbC6YcNod++5ORd5XwW2adXYa2Z+p/hETRPFvXnRS0rEv3mAcVsHyLkSnkOx3PfKEiUyZ5Hw6uxBvi5en9eBAbcl+9SQ9LmRmxbyL72f7oOwKtfyzlg55eNdheI1/jMcVa+3KOffyczsJHqqaOG5yz319QpPxbVOeTTpZ2rNAtE6/-----END CERTIFICATE-----",
  • "key": "-----BEGIN RSA PRIVATE KEY-----MIIEowIBAAKCAQEAj/vlTUVYrgSN5h7jhjwDLje0I8r65IdXZXD0CS+HSrT2o4YhVxaXkAm5FoZ3AWSfkZlEIt7QxEGSbiSfmM37pDIwhmJ5Y/Q5BH/+wgJtNiyKh+nk1rxU9NC6pNFormyw85Lh3nhfoxhHNuwlj9qspwQTIDarV5CSTp6f4LGdAtg4rs+oewd449ZQYJkM7dq7R2eUMBUmAkepPq3VWyOFUCdkSxgLIbIzQilekd4CxXEFNZbz6uLlbG8Fzbsa8kfH0aD00k/UwuQHaAxhrGDZTTgTj0pn4CHVYwDeCW/UjCdN/oLmlvd8NrSIalx2pFmC6/CbZhup01ezOeArYc68lQIDAQABAoIBADASyR0zFahIcf5O+uWTPPad96HpwDo0LAx9GaXFfjUF1cGEY7ZZnzIi5O7t52cKKzLoSvUfkvGr+RGYXccdozLP5R7BW0lxveXQPIWXXNJ1La2yfMrrp6vz0xV7q6ltNemldY+bfkcMsJ5YWzQ8LWA4PpCHYE8EwKzKTpQtiUBs4RAQWcXfEkVNOBKne3BPk5YWngCwuQMQYURODEMMZhHkqXD03Ag0LAf+U+bILSrJ9EmRyj8ctak+adftQqg9yUhhdSSO147x7g2pKPhCH6ogI5ogXka4zW1r0TSUlOp9wZFTh0xC6wn/EbNGIAtQyLqUIXRvu1ZPg4T75p/yJMMCgYEA7BI0imbN5laOPQFIrG+nk7Uc3Eu/8PjegsSGI+uajfxav/03j/j5u+mt7iMektHJqBQ2l6/hxdqVqadLKC7tOKoiXPyojfVTLDw1OfnUC3Af6DWBTXipW/ME5rZGTwsKlPNPR9l45fVEiM5i2HttoE5ttk7OQnmjqPDNPZXPwo8CgYEAnCOSLNvLdMvGHtPW0zsxAkoZNJqNzPGrCY9bQ2DkMM8PtGC1mN5wVjYHduatX8KeyAn+ib4CO0e+i0Dz5hY4m3jF7Ig1pR07oEyFKg5Lo7a2BsN+46ZoEHHP9Rjp2QCBNsaqYQjHCCZsH6lcd89aXKiyk0hGFqFJpeMh36L1EJsCgYEAmT6MKtfni0He3c0qjv2ALAti68Kkm9oCH6NRbJnx33/UrVLEMcqu2wQrqy3TF/3lSR2t/rPm/NgTVWlLCY/E4IbY/cHp7RU2471F1BfQRYiIveWVxWOxlQXhxZ7Hb2I8gUqcyYhryeN4lNJdKiidlnWzFKh9jnuF+RIwOW05zBMCgYB+kMb43eH6dwPOEWHeL+j2NiJgZbf0HSHLygzsfSn79pyAVrRdilH9UCaU10BKk3QqKw/Nj9w3OVzXfHs4U2Lng+rMZU023o9qzRxUjun5dy3uJaJB3q4URm2P+/XzFVmokTmjFn5fuOWEdMCjzc0ttwGqKbfGuE7+zTK0GWAVaQKBgFY4nwDvjICXbCKYF8sXwo733KnXuK6hjaW83QHOkAGvYepEHtGw/JRRDT037etcwEyDnJQt8+9GIhrkCzI6yL423y7/koVQoOKd4pE9ASa+Za8ZOKExVXOUw0i86314CnCfc0VjutnlPGZnWPTMGj4zpqjXij/KitX8+xTB/ZJL-----END RSA PRIVATE KEY-----"
}

Response samples

Content type
application/json
"Unable to process request, reference id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Update TLS for a domain

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account uid

Request Body schema: application/json
resourceGroupId
required
string
domain
required
string <url>
required
object

Responses

Request samples

Content type
application/json
{
  • "resourceGroupId": "",
  • "domain": "example.com",
  • "config": {
    }
}

Response samples

Content type
application/json
"Unable to process request, reference id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Configure L7 Rs Policy

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account uid

Request Body schema: application/json

Load Balancer Configuration Request

resourceGroupId
string
domain
string
object

Responses

Request samples

Content type
application/json
{
  • "resourceGroupId": "",
  • "domain": "example.com",
  • "policy": {
    }
}

Get current L7 Rs Policy settings (A.K.A back to origin settings)

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account uid

Request Body schema: application/json

Load Balancer Configuration Request

domain
string
Array of strings or Array of strings
resourceGroupId
string

Responses

Request samples

Content type
application/json
{
  • "domain": "example.io",
  • "realServers": [
    ],
  • "resourceGroupId": ""
}

Retrieve DNS instances

Get a list of DNS instances with pagination

Authorizations:
api-key
query Parameters
uid
string
Example: uid=292733187643212169

Unique ID for filtering instances

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve details of a single DNS instance

Authorizations:
api-key
path Parameters
instanceId
required
string
Example: ddos-a2dc76e8-bb13-4dab-91f9-28fafd4fc07f

The instanceId of DNS instance

Responses

Response samples

Content type
application/json
{
  • "id": 3522,
  • "circuit_id": "HKG(ABB) MPR948521",
  • "function": "standard",
  • "insight_customer_id": "ETT001",
  • "insight_sr_id": "123141",
  • "link": {
    },
  • "name": "Some DNS Instance",
  • "package": "alwayson",
  • "provider": "dns",
  • "resource_type": "pureweb",
  • "status": "active",
  • "synonym": "real-reseller",
  • "vendor_account": "292733187643212169",
  • "vendor_reference": "ddos-7e072ab2-de5a-46a9-a597-e8c322bcc53f"
}

Search for port config rules

Authorizations:
api-key
query Parameters
uid
required
string
Example: uid=292733187643212160
instanceId
string
Example: instanceId=ddos-5a46f0ed-77b8-45a4-a376-0fba87eec6cc
page
integer
Example: page=1
size
integer
Example: size=10

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "total": 1,
  • "page": 1,
  • "size": 10
}

Create a new port config rule

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
backendPort
required
integer [ 0 .. 65535 ]
realServers
required
Array of strings <ipv4>
uid
required
string
instanceId
required
string

Responses

Request samples

Content type
application/json
{
  • "protocol": "tcp",
  • "frontendPort": 8210,
  • "backendPort": 8210,
  • "realServers": [
    ],
  • "uid": "292733187643212169",
  • "instanceId": "ddos-7de04971-3fc4-422f-8e3a-eb8fd44e812a"
}

Edit a port config rule

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
backendPort
required
integer [ 0 .. 65535 ]
realServers
required
Array of strings <ipv4>
uid
required
string
instanceId
required
string

Responses

Request samples

Content type
application/json
{
  • "protocol": "tcp",
  • "frontendPort": 8210,
  • "backendPort": 8210,
  • "realServers": [
    ],
  • "uid": "292733187643212169",
  • "instanceId": "ddos-7de04971-3fc4-422f-8e3a-eb8fd44e812a"
}

Delete a port config rule

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
backendPort
required
integer [ 0 .. 65535 ]
realServers
required
Array of strings <ipv4>
uid
required
string
instanceId
required
string

Responses

Request samples

Content type
application/json
{
  • "protocol": "tcp",
  • "frontendPort": 8210,
  • "backendPort": 8210,
  • "realServers": [
    ],
  • "uid": "292733187643212169",
  • "instanceId": "ddos-7de04971-3fc4-422f-8e3a-eb8fd44e812a"
}

Configure Health Check

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
forwardProtocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
object
instanceId
required
string
uid
required
string

Responses

Request samples

Content type
application/json
{
  • "forwardProtocol": "tcp",
  • "frontendPort": 8080,
  • "healthCheck": {
    },
  • "instanceId": "ddos-25d832be-05c0-4d31-be38-e880f6d64e12",
  • "uid": 292733187643212160
}

Configure Session Persistence

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
instanceId
required
string
forwardProtocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
object
uid
required
string

Responses

Request samples

Content type
application/json
{
  • "instanceId": "ddos-6856bb46-90f4-436f-9533-3aef8a8f33db",
  • "forwardProtocol": "tcp",
  • "frontendPort": 8080,
  • "config": {
    },
  • "uid": "292733187643212169"
}

View Session Persistence

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
instanceId
required
string
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
uid
string

Responses

Request samples

Content type
application/json
{
  • "instanceId": "ddos-6856bb46-90f4-436f-9578-3a338a8f33db",
  • "protocol": "tcp",
  • "frontendPort": 8080,
  • "uid": "292733187643212169"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

View Back to Origin

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
instanceId
required
string
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
uid
required
string

Responses

Request samples

Content type
application/json
{
  • "instanceId": "ddos-6856bb46-90f4-436f-9578-3aef8a8f3312",
  • "protocol": "tcp",
  • "frontendPort": 8080,
  • "uid": "292733187643212169"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

View Health Check

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account UID

Request Body schema: application/json
instanceId
required
string
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
uid
required
string

Responses

Request samples

Content type
application/json
{
  • "instanceId": "ddos-6856bb46-90f4-436f-9578-3aef8a8f3312",
  • "protocol": "tcp",
  • "frontendPort": 8080,
  • "uid": "292733187643212169"
}

Response samples

Content type
application/json
{
  • "code": 0,
  • "data": {
    }
}

Config Back-to-origin Settings

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733187643212169

DNS account uid

Request Body schema: application/json
uid
required
string
instanceId
required
string
bakMode
required
integer
Enum: 0 1
protocol
required
string
Enum: "tcp" "udp"
frontendPort
required
integer [ 0 .. 65535 ]
backendPort
integer [ 0 .. 65535 ]
currentRsIndex
integer
Enum: 1 2
priRealServer
string
secRealServer
string

Responses

Request samples

Content type
application/json
{
  • "uid": 292733187643212160,
  • "instanceId": "ddos-25d832be-05c0-4d31-be38-e880f6d64e12",
  • "bakMode": 1,
  • "protocol": "tcp",
  • "frontendPort": 80,
  • "backendPort": 80,
  • "currentRsIndex": 1,
  • "priRealServer": "121.70.168.58",
  • "secRealServer": "121.70.168.58"
}

Retrieve Network Diagram

Authorizations:
api-key
path Parameters
uid
required
string
Example: 292733182391123140

The DNS UID.

query Parameters
instanceId
required
string
Example: instanceId=ddos-dummy

The instance ID

domain
string
Example: domain=example.com

The domain, e.g., www.example.com.

Responses

Response samples

Content type
application/json
"<html>...</html>"

Retrieve an MCA order step by DNS ID

Authorizations:
api-key
path Parameters
id
required
number

The unique DNS ID of the MCA order step to retrieve.

Responses

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Update an MCA order step by DNS ID

Authorizations:
api-key
path Parameters
id
required
number

The unique DNS ID of the MCA order step to update.

Request Body schema: application/json
mcaOrderStep
required
string
Enum: "step 1" "step 2" "step 2.5" "step 3" "step 4" "step 5" "completed"

The step in the MCA order. Must be one of the following values.

Responses

Request samples

Content type
application/json
{
  • "mcaOrderStep": "step 3"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Create a new MCA order step by DNS ID

Authorizations:
api-key
path Parameters
id
required
number

The unique DNS ID of the MCA order step.

Request Body schema: application/json
mcaOrderStep
required
string
Enum: "step 1" "step 2" "step 2.5" "step 3" "step 4" "step 5" "completed"

The step in the MCA order. Must be one of the following values.

Responses

Request samples

Content type
application/json
{
  • "mcaOrderStep": "step 3"
}

Response samples

Content type
application/json
{
  • "success": true,
  • "data": {
    }
}

Get TPC dynamic attributes(order options)

Get TPC dynamic attributes(order options)

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Describe Domain Overview

Retrieve a domain overview data for Anti-DDoS service.

Authorizations:
api-key
Request Body schema: application/json
companyIds
required
Array of strings
domains
required
Array of strings

List of domains to query

startTime
required
string <date-time>

Start time for the report

endTime
required
string <date-time>

End time for the report

interval
required
integer

Time interval in seconds

region
required
string

Region to filter the data

queryType
required
string
uid
required
string
pageSize
required
integer
pageNumber
required
integer

Responses

Request samples

Content type
application/json
{
  • "companyIds": [
    ],
  • "domains": [
    ],
  • "startTime": "2023-08-06T02:00:00.000Z",
  • "endTime": "2023-09-06T02:00:00.000Z",
  • "interval": 21600,
  • "region": "eu-west-1",
  • "queryType": "",
  • "uid": "123456789",
  • "pageSize": 10,
  • "pageNumber": 0
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

Describe Domain Status Code List

Retrieve a list of domain status code data for Anti-DDoS service.

Authorizations:
api-key
Request Body schema: application/json

Request body for describing domain status codes

companyIds
required
Array of strings
domains
required
Array of strings

List of domains to query

startTime
required
string <date-time>

Start time for the report

endTime
required
string <date-time>

End time for the report

interval
required
integer

Time interval in seconds

region
required
string

Region to filter the data

queryType
required
string
uid
required
string
pageSize
required
integer
pageNumber
required
integer

Responses

Request samples

Content type
application/json
{
  • "companyIds": [
    ],
  • "domains": [
    ],
  • "startTime": "2023-08-06T02:00:00.000Z",
  • "endTime": "2023-09-06T02:00:00.000Z",
  • "interval": 21600,
  • "region": "eu-west-1",
  • "queryType": "",
  • "uid": "123456789",
  • "pageSize": 10,
  • "pageNumber": 0
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

Describe domain QPS List

Retrieve DNS Domain QPS Report

Authorizations:
api-key
Request Body schema: application/json
companyIds
required
Array of strings
domains
required
Array of strings

List of domains to query

startTime
required
string <date-time>

Start time for the report

endTime
required
string <date-time>

End time for the report

interval
required
integer

Time interval in seconds

region
required
string

Region to filter the data

queryType
required
string
uid
required
string

Responses

Request samples

Content type
application/json
{
  • "companyIds": [
    ],
  • "domains": [
    ],
  • "startTime": "2023-08-06T02:00:00.000Z",
  • "endTime": "2023-09-06T02:00:00.000Z",
  • "interval": 21600,
  • "region": "eu-west-1",
  • "queryType": "",
  • "uid": "123456789"
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

Describe Domain Attack Events

Authorizations:
api-key
Request Body schema: application/json

Request body for Describe Domain Attack Events

companyIds
required
Array of strings
domains
required
Array of strings

List of domains to query

startTime
required
string <date-time>

Start time for the report

endTime
required
string <date-time>

End time for the report

interval
required
integer

Time interval in seconds

region
required
string

Region to filter the data

queryType
required
string
uid
required
string
pageSize
required
integer
pageNumber
required
integer

Responses

Request samples

Content type
application/json
{
  • "companyIds": [
    ],
  • "domains": [
    ],
  • "startTime": "2023-08-06T02:00:00.000Z",
  • "endTime": "2023-09-06T02:00:00.000Z",
  • "interval": 21600,
  • "region": "eu-west-1",
  • "queryType": "",
  • "uid": "123456789",
  • "pageSize": 10,
  • "pageNumber": 0
}

Response samples

Content type
application/json
{
  • "code": 200,
  • "data": {
    }
}

Retrieve signed company information based on the user's Insight reference ID

This endpoint retrieves signed company information for a specific Insight ID provided by the identity API.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "id": "123e4567-e89b-12d3-a456-426614174000",
  • "country": "US",
  • "insightId": 987654,
  • "companyName": "Tech Innovators Inc.",
  • "address": "1234 Silicon Valley Blvd, San Francisco, CA 94107",
  • "deleted_at": "2024-08-30T16:45:30Z",
  • "created_at": "2023-03-30T16:45:30Z",
  • "updated_at": "2024-07-30T16:45:30Z"
}

AWS Direct Connect

Use the generic connection Create, Read, Update and Delete (CRUD) routes for searching, updating and deleting Layer 2 AWS Direct Connect Partner connections.

Create a Layer 2 AWS Direct Connect Partner connection

Prerequisites

  • Your company has been verified on the Console Connect platform.

  • The authenticated user account has Network Admin permissions.

  • The source port is ACTIVE.

  • You are requesting paymentType "invoice", or, if requesting paymentType "plan", the subscription associated with the port has sufficient entitlement to complete the request.

Authorizations:
api-key
path Parameters
companyUsername
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
name
required
string

The name of the AWS Cloud.

srcPortId
required
string

The portId of the port from your company that you want to connect from.

destPortId
required
string

The AWS destination port ID.

speed
required
integer

The speed of the connection in Mbps.

required
object
type
required
string
Value: "LAYER2"

Type of connection.

duration
required
integer

The duration of the connection.

durationUnit
required
string
Enum: "y" "m"

The unit of duration.

classOfService
string
Value: "SILVER"

The class of service of the connection.

paymentType
required
string
Value: "invoice"

The payment method used.

evergreen
boolean

Set to true if you choose to have your connection and payment continue on a month to month basis at the end of your selected duration, else set to false.

discountCode
string

Responses

Request samples

Content type
application/json
{
  • "name": "amazon",
  • "srcPortId": "5de6f8601693740b2c852398",
  • "destPortId": "5de6f85d1693740b2c852394",
  • "speed": 100,
  • "partner": {
    },
  • "type": "LAYER2",
  • "duration": 1,
  • "durationUnit": "y",
  • "paymentType": "invoice",
  • "evergreen": true
}

Vultr Cloud

Layer 2 connections to Vultr Cloud currently work in the same way as a business-to-business Layer 2 connection. First, you will need to provision the connection to the Vultr company on Console Connect, then our Support team will complete the provisioning for you. Next, send your Vultr account email address to support@consoleconnect.com. See the following video for more information: https://www.consoleconnect.com/clouds/connect-to-vultr-cloud/#Connectivity-model

Choose source port

Request

curl 'https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false' \
--header 'Authorization: Bearer <API_KEY>' 

Make sure to replace :companyUsername with your actual company username and <API_KEY> with your API key.

Response

You may receive multiple results, but only choose one.

Take note of the id property - we will use this as the portId.

{
  "results": [
    {
      "id": "66c29b3c6dcad34e5b728c9c", // This property will be the portId of the request payload
      "name": "My-Port-1",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "tags": [],
      "dataCenterFacilityId": "5aa89b04ac86ba0012345bdf",
      "popId": "99759532-0aeb-4e02-a876-5b505e9b213a",
      "metroId": "77d9f1fbbcaa906f3cddb6d1",
      "companyId": "5d4d056242fbd3000ab4c01d",
      "status": "ACTIVE",
      "updatedAt": "2024-08-19T01:09:16.376Z",
      "createdAt": "2024-08-19T01:09:16.376Z",
      "deleted": false,
      "deletedAt": null,
      "paymentType": "invoice",
      "payg": true
      ...
    }
    ...
  ]
}

Find an available Vultr NNI

Choose destination metro

Request

curl 'https://api.consoleconnect.com/api/company/vultrcloud/metro/capabilities' \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key.

Response

You may receive multiple results, but only choose the location you wish to connect to.

Take note of the id property since we will use this as the destMetroId and firstDataCenterFacilityIdInMetro as the destDcf.

{
  "results": [
    {
      "name": "Hong Kong",
      "code": "HKG",
      "logo": null,
      "canCreateController": false,
      "tags": [],
      "description": "",
      "country": "hk",
      "rir": "APNIC",
      "regionIds": [
        "5c05cb06cad910000ae251f4"
      ],
      "ready": true,
      "id": "77d9f1fbbcaa906f3cddb6d1", // This property will be the destMetroId of the request payload
      "deletedAt": null,
      "createdAt": "2017-12-18T00:45:44.120Z",
      "updatedAt": "2024-02-25T05:02:47.267Z",
      "deleted": false,
      "capabilities": {
        "layer2": true
      },
      "firstDataCenterFacilityIdInMetro": "5aa89b04ac86ba0012345bdf" // This property will be the destDcf of the request payload
    }
  ]
}

Create a Layer 2 connection request

Create a Layer 2 connection request to a specified destination company. Layer 2 connections require a source port ID and requested metro.

  • You may not create an outgoing connection request that exceeds your port utilization or plan entitlement.
  • Both parties must approve a connection before it is activated. When either party makes a billing or capacity change, the other party must approve the connection using the approve endpoint.
  • The 'paymentType' can only be 'invoice'. A 'paymentType' of 'creditcard' is only supported via the Console Connect web application.
  • For pay-as-you-go connections where paymentType is 'creditcard', paymentTransactionId, duration and evergreen options must be provided in the request.
  • If paymentType is 'invoice', 'destDcf', 'duration' and 'durationUnit' should be provided.
Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
type
required
string
Value: "LAYER2"

The connection type, typically "LAYER_2".

name
required
string

The name of the new connection.

portId
required
string

The source port ID.

destPortId
required
string
regionId
string
destRegionId
string
destDcf
string
speed
required
number

The port speed in Mbps.

destMetroId
required
string

The ID of the destination metro.

destCompany
required
string

The username of the destination company.

paymentType
required
string
Enum: "creditcard" "invoice"

The PAYG payment type.

duration
required
number
durationUnit
required
string

The duration unit for the connection ('d', 'w', 'm', 'y').

evergreen
boolean
classOfService
required
string
Enum: "GOLD" "SILVERPLUS" "SILVER" "BRONZE"
srcVlanRequest
number or null
destVlanRequest
number or null
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "my new connection",
  • "portId": "123",
  • "speed": 1000,
  • "paymentType": "invoice",
  • "duration": 1,
  • "durationUnit": "m",
  • "destPortId": "d466b388d3e9ee0a92177910",
  • "destCompany": "companyusername"
}

Response samples

Content type
application/json
Example
{
  • "id": "58afc0499430ab7f3666b990",
  • "type": "LAYER2",
  • "status": "CREATING",
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "speed": {
    },
  • "subconnections": [ ],
  • "vlan": {
    },
  • "name": "my new connection",
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "classOfService": "BRONZE"
}

Oracle FastConnect

Connection to Oracle FastConnect is currently the same as a Business to Business Layer 2 connection. You need to provision the service to the Oracle company on Console Connect then our Support team will receive your request and complete the provisioning on Console Connect for you. You will have to send your Oracle OCID to Support so that they can complete the provisioning in Oracle for you.

Choose source port

Request

curl 'https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false' \
--header 'Authorization: Bearer <API_KEY>' 

Make sure to replace :companyUsername with your actual company username and <API_KEY> with your API key.

Response

You may receive multiple results, but only choose one.

Take note of the id property - we will use this as the portId.

{
  "results": [
    {
      "id": "66c29b3c6dcad34e5b728c9c", // This property will be the portId of the request payload
      "name": "My-Port-1",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "tags": [],
      "dataCenterFacilityId": "5aa89b04ac86ba0012345bdf",
      "popId": "99759532-0aeb-4e02-a876-5b505e9b213a",
      "metroId": "77d9f1fbbcaa906f3cddb6d1",
      "companyId": "5d4d056242fbd3000ab4c01d",
      "status": "ACTIVE",
      "updatedAt": "2024-08-19T01:09:16.376Z",
      "createdAt": "2024-08-19T01:09:16.376Z",
      "deleted": false,
      "deletedAt": null,
      "paymentType": "invoice",
      "payg": true
      ...
    }
    ...
  ]
}

Find an available Oracle NNI

Choose destination metro

Request

curl 'https://api.consoleconnect.com/api/company/oracle/metro/capabilities' \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key.

Response

You may receive multiple results, but only choose the location you wish to connect to.

Take note of the id property since we will use this as the destMetroId and firstDataCenterFacilityIdInMetro as the destDcf.

{
  "results": [
    {
      "name": "Hong Kong",
      "code": "HKG",
      "logo": null,
      "canCreateController": false,
      "tags": [],
      "description": "",
      "country": "hk",
      "rir": "APNIC",
      "regionIds": [
        "5c05cb06cad910000ae251f4"
      ],
      "ready": true,
      "id": "77d9f1fbbcaa906f3cddb6d1", // This property will be the destMetroId of the request payload
      "deletedAt": null,
      "createdAt": "2017-12-18T00:45:44.120Z",
      "updatedAt": "2024-02-25T05:02:47.267Z",
      "deleted": false,
      "capabilities": {
        "layer2": true
      },
      "firstDataCenterFacilityIdInMetro": "5aa89b04ac86ba0012345bdf" // This property will be the destDcf of the request payload
    }
  ]
}

Create a Layer 2 connection request

Create a Layer 2 connection request to a specified destination company. Layer 2 connections require a source port ID and requested metro.

  • You may not create an outgoing connection request that exceeds your port utilization or plan entitlement.
  • Both parties must approve a connection before it is activated. When either party makes a billing or capacity change, the other party must approve the connection using the approve endpoint.
  • The 'paymentType' can only be 'invoice'. A 'paymentType' of 'creditcard' is only supported via the Console Connect web application.
  • For pay-as-you-go connections where paymentType is 'creditcard', paymentTransactionId, duration and evergreen options must be provided in the request.
  • If paymentType is 'invoice', 'destDcf', 'duration' and 'durationUnit' should be provided.
Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
type
required
string
Value: "LAYER2"

The connection type, typically "LAYER_2".

name
required
string

The name of the new connection.

portId
required
string

The source port ID.

destPortId
required
string
regionId
string
destRegionId
string
destDcf
string
speed
required
number

The port speed in Mbps.

destMetroId
required
string

The ID of the destination metro.

destCompany
required
string

The username of the destination company.

paymentType
required
string
Enum: "creditcard" "invoice"

The PAYG payment type.

duration
required
number
durationUnit
required
string

The duration unit for the connection ('d', 'w', 'm', 'y').

evergreen
boolean
classOfService
required
string
Enum: "GOLD" "SILVERPLUS" "SILVER" "BRONZE"
srcVlanRequest
number or null
destVlanRequest
number or null
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "my new connection",
  • "portId": "123",
  • "speed": 1000,
  • "paymentType": "invoice",
  • "duration": 1,
  • "durationUnit": "m",
  • "destPortId": "d466b388d3e9ee0a92177910",
  • "destCompany": "companyusername"
}

Response samples

Content type
application/json
Example
{
  • "id": "58afc0499430ab7f3666b990",
  • "type": "LAYER2",
  • "status": "CREATING",
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "speed": {
    },
  • "subconnections": [ ],
  • "vlan": {
    },
  • "name": "my new connection",
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "classOfService": "BRONZE"
}

Tencent Cloud

Connections to Tencent Cloud on Console Connect currently work in the same way as a business-to-business Layer 2 connection. First, you provision the service to the Tencent company on Console Connect, then our Support team will complete the provisioning on Console Connect for you. Then you can complete the Tencent provisioning in the Tencent portal with information that the Support team will supply, such as the Provider Account ID, Shared Connection ID and the VLAN ID between Console Connect and Tencent Cloud.

Choose source port

Request

curl 'https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false' \
--header 'Authorization: Bearer <API_KEY>' 

Make sure to replace :companyUsername with your actual company username and <API_KEY> with your API key.

Response

You may receive multiple results, but only choose one.

Take note of the id property - we will use this as the portId.

{
  "results": [
    {
      "id": "66c29b3c6dcad34e5b728c9c", // This property will be the portId of the request payload
      "name": "My-Port-1",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "tags": [],
      "dataCenterFacilityId": "5aa89b04ac86ba0012345bdf",
      "popId": "99759532-0aeb-4e02-a876-5b505e9b213a",
      "metroId": "77d9f1fbbcaa906f3cddb6d1",
      "companyId": "5d4d056242fbd3000ab4c01d",
      "status": "ACTIVE",
      "updatedAt": "2024-08-19T01:09:16.376Z",
      "createdAt": "2024-08-19T01:09:16.376Z",
      "deleted": false,
      "deletedAt": null,
      "paymentType": "invoice",
      "payg": true
      ...
    }
    ...
  ]
}

Find an available Tencent NNI

Choose destination metro

Request

curl 'https://api.consoleconnect.com/api/company/tencent-cloud/metro/capabilities' \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key.

Response

You may receive multiple results, but only choose the location you wish to connect to.

Take note of the id property since we will use this as the destMetroId and firstDataCenterFacilityIdInMetro as the destDcf.

{
  "results": [
    {
      "name": "Hong Kong",
      "code": "HKG",
      "logo": null,
      "canCreateController": false,
      "tags": [],
      "description": "",
      "country": "hk",
      "rir": "APNIC",
      "regionIds": [
        "5c05cb06cad910000ae251f4"
      ],
      "ready": true,
      "id": "77d9f1fbbcaa906f3cddb6d1", // This property will be the destMetroId of the request payload
      "deletedAt": null,
      "createdAt": "2017-12-18T00:45:44.120Z",
      "updatedAt": "2024-02-25T05:02:47.267Z",
      "deleted": false,
      "capabilities": {
        "layer2": true
      },
      "firstDataCenterFacilityIdInMetro": "5aa89b04ac86ba0012345bdf" // This property will be the destDcf of the request payload
    }
  ]
}

Create a Layer 2 connection request

Create a Layer 2 connection request to a specified destination company. Layer 2 connections require a source port ID and requested metro.

  • You may not create an outgoing connection request that exceeds your port utilization or plan entitlement.
  • Both parties must approve a connection before it is activated. When either party makes a billing or capacity change, the other party must approve the connection using the approve endpoint.
  • The 'paymentType' can only be 'invoice'. A 'paymentType' of 'creditcard' is only supported via the Console Connect web application.
  • For pay-as-you-go connections where paymentType is 'creditcard', paymentTransactionId, duration and evergreen options must be provided in the request.
  • If paymentType is 'invoice', 'destDcf', 'duration' and 'durationUnit' should be provided.
Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
type
required
string
Value: "LAYER2"

The connection type, typically "LAYER_2".

name
required
string

The name of the new connection.

portId
required
string

The source port ID.

destPortId
required
string
regionId
string
destRegionId
string
destDcf
string
speed
required
number

The port speed in Mbps.

destMetroId
required
string

The ID of the destination metro.

destCompany
required
string

The username of the destination company.

paymentType
required
string
Enum: "creditcard" "invoice"

The PAYG payment type.

duration
required
number
durationUnit
required
string

The duration unit for the connection ('d', 'w', 'm', 'y').

evergreen
boolean
classOfService
required
string
Enum: "GOLD" "SILVERPLUS" "SILVER" "BRONZE"
srcVlanRequest
number or null
destVlanRequest
number or null
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "my new connection",
  • "portId": "123",
  • "speed": 1000,
  • "paymentType": "invoice",
  • "duration": 1,
  • "durationUnit": "m",
  • "destPortId": "d466b388d3e9ee0a92177910",
  • "destCompany": "companyusername"
}

Response samples

Content type
application/json
Example
{
  • "id": "58afc0499430ab7f3666b990",
  • "type": "LAYER2",
  • "status": "CREATING",
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "speed": {
    },
  • "subconnections": [ ],
  • "vlan": {
    },
  • "name": "my new connection",
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "classOfService": "BRONZE"
}

Huawei Cloud

Connections to Huawei Cloud on Console Connect currently work in the same way as a business-to-business Layer 2 connection. First, you provision the service to the Huawei company on Console Connect, then provide your Huawei Project ID to our Support team, who will complete the provisioning on both the Console Connect and Huawei ends for you.

Choose source port

Request

curl 'https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false' \
--header 'Authorization: Bearer <API_KEY>' 

Make sure to replace :companyUsername with your actual company username and <API_KEY> with your API key.

Response

You may receive multiple results, but only choose one.

Take note of the id property - we will use this as the portId.

{
  "results": [
    {
      "id": "66c29b3c6dcad34e5b728c9c", // This property will be the portId of the request payload
      "name": "My-Port-1",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "tags": [],
      "dataCenterFacilityId": "5aa89b04ac86ba0012345bdf",
      "popId": "99759532-0aeb-4e02-a876-5b505e9b213a",
      "metroId": "77d9f1fbbcaa906f3cddb6d1",
      "companyId": "5d4d056242fbd3000ab4c01d",
      "status": "ACTIVE",
      "updatedAt": "2024-08-19T01:09:16.376Z",
      "createdAt": "2024-08-19T01:09:16.376Z",
      "deleted": false,
      "deletedAt": null,
      "paymentType": "invoice",
      "payg": true
      ...
    }
    ...
  ]
}

Find an available Huawei NNI

Choose destination metro

Request

curl 'https://api.consoleconnect.com/api/company/huaweicloud/metro/capabilities' \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace <API_KEY> with your API key.

Response

You may receive multiple results, but only choose the location you wish to connect to.

Take note of the id property since we will use this as the destMetroId and firstDataCenterFacilityIdInMetro as the destDcf.

{
  "results": [
    {
      "name": "Hong Kong",
      "code": "HKG",
      "logo": null,
      "canCreateController": false,
      "tags": [],
      "description": "",
      "country": "hk",
      "rir": "APNIC",
      "regionIds": [
        "5c05cb06cad910000ae251f4"
      ],
      "ready": true,
      "id": "77d9f1fbbcaa906f3cddb6d1", // This property will be the destMetroId of the request payload
      "deletedAt": null,
      "createdAt": "2017-12-18T00:45:44.120Z",
      "updatedAt": "2024-02-25T05:02:47.267Z",
      "deleted": false,
      "capabilities": {
        "layer2": true
      },
      "firstDataCenterFacilityIdInMetro": "5aa89b04ac86ba0012345bdf" // This property will be the destDcf of the request payload
    }
  ]
}

Create a Layer 2 connection request

Create a Layer 2 connection request to a specified destination company. Layer 2 connections require a source port ID and requested metro.

  • You may not create an outgoing connection request that exceeds your port utilization or plan entitlement.
  • Both parties must approve a connection before it is activated. When either party makes a billing or capacity change, the other party must approve the connection using the approve endpoint.
  • The 'paymentType' can only be 'invoice'. A 'paymentType' of 'creditcard' is only supported via the Console Connect web application.
  • For pay-as-you-go connections where paymentType is 'creditcard', paymentTransactionId, duration and evergreen options must be provided in the request.
  • If paymentType is 'invoice', 'destDcf', 'duration' and 'durationUnit' should be provided.
Authorizations:
api-key
path Parameters
username
required
string
Example: acme

The username of the company creating the connection.

Request Body schema: application/json
type
required
string
Value: "LAYER2"

The connection type, typically "LAYER_2".

name
required
string

The name of the new connection.

portId
required
string

The source port ID.

destPortId
required
string
regionId
string
destRegionId
string
destDcf
string
speed
required
number

The port speed in Mbps.

destMetroId
required
string

The ID of the destination metro.

destCompany
required
string

The username of the destination company.

paymentType
required
string
Enum: "creditcard" "invoice"

The PAYG payment type.

duration
required
number
durationUnit
required
string

The duration unit for the connection ('d', 'w', 'm', 'y').

evergreen
boolean
classOfService
required
string
Enum: "GOLD" "SILVERPLUS" "SILVER" "BRONZE"
srcVlanRequest
number or null
destVlanRequest
number or null
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "my new connection",
  • "portId": "123",
  • "speed": 1000,
  • "paymentType": "invoice",
  • "duration": 1,
  • "durationUnit": "m",
  • "destPortId": "d466b388d3e9ee0a92177910",
  • "destCompany": "companyusername"
}

Response samples

Content type
application/json
Example
{
  • "id": "58afc0499430ab7f3666b990",
  • "type": "LAYER2",
  • "status": "CREATING",
  • "srcRegionId": "236107000000000000000001",
  • "destRegionId": "236107000000000000000001",
  • "updatedAt": "2017-02-24T05:10:44.942Z",
  • "createdAt": "2017-02-24T05:10:33.807Z",
  • "speed": {
    },
  • "subconnections": [ ],
  • "vlan": {
    },
  • "name": "my new connection",
  • "cdrBillingType": "METRO",
  • "payg": true,
  • "billingType": [
    ],
  • "classOfService": "BRONZE"
}

Azure ExpressRoute

To create an Azure connection, you will need to:

  1. In the Microsoft Azure portal you will need to generate a new S-Key in the ExpressRoute service.
  2. Use the Create an Azure Direct Connect Partner. connection endpoint to create a connection request in Console Connect using the service key from Azure.
    • The connection group will be created and the status will be CREATING.
    • After connection creation is completed, the status will become ACTIVE.
  3. Configure your peering information

Provisioning Statuses

There are several sub-statuses available for Azure connections, which can be found in the connection.partner.peering field. These statuses are listed in the following table.

Provisioning Status Description
NOT PROVISIONED Not yet provisioned.
PROVISIONING In the process of provisioning with Azure.
PROVISIONED Connection is active & ready to use.
DEPROVISIONING In the process of deprovisioning with Azure.

Create Azure Layer 2 connection

After creating a connection request via the Azure dashboard and generating a service key, create the connection by submitting the service key, speed, name and source port.

Azure DirectConnect Partner connections require redundancy - there are always two destination ports.

Because Azure connections require redundancy, this endpoint creates a 'GROUP_LAYER2' connection that groups two 'LAYER2' subconnections rather than a regular 'LAYER2' connection.

Authorizations:
api-key
path Parameters
username
string
Example: Acme

The username of the company.

Request Body schema: application/json
One of
required
Array of objects

List of source ports.

speed
required
number

Connection speed in Mbps.

azureServiceKey
required
string

Unique Azure service key.

name
required
string

Name of the connection.

srcVlanRequest
string or null

VLAN request for the source, if applicable.

classOfService
string
Enum: "SILVER" "GOLD" "BRONZE"

Class of service for the connection.

srcConfigTag
string
Enum: "CUSTOMER" "SERVICE"

When "CUSTOMER", configure regular (802.1q) VLANs with consecutively numbered IDs (in dcpPeerings) and we'll map them to the correct endpoint; primary or redundant

Responses

Request samples

Content type
application/json
Example
{
  • "srcPort": [
    ],
  • "speed": 1,
  • "azureServiceKey": "19ca18d7-0166-4190-8274-9568c50f4328",
  • "name": "AzureExpressRoute",
  • "srcVlanRequest": null,
  • "classOfService": "SILVER",
  • "srcConfigTag": "CUSTOMER"
}

Update an Azure connection's peering config

Use this endpoint to update your peering information with the two Azure services:

Type Description
PRIVATE Private Azure services, not available via public IP address. Examples include Azure virtual machines and cloud services hosted within a virtual network.
MICROSOFT Azure services available via public IP address. Examples include Azure storage, Azure SQL databases Azure Active Directory and Azure websites.

You can not call this endpoint before the connection has been provisioned (before the connection status is ACTIVE)

Authorizations:
api-key
path Parameters
username
required
string
Example: Acme

The username of the company that created the connection.

connectionId
required
string
Example: 507f1f77bcf86cd799439011

The ObjectID from the Create Azure connection endpoint.

peeringType
required
string
Example: PRIVATE

The type of peering i.e Private Azure (PRIVATE), Public Azure (PUBLIC) or Microsoft / Office365 (MICROSOFT)

Request Body schema: application/json
vlanId
integer

The VLAN ID of the connection. This is used to identify the connection on the Azure side.

peerAsn
integer

The Autonomous System Number (ASN) of the peer. This is used to identify the peer on the Azure side.

primaryPeerSubnet
string

The primary subnet of the peer. This is used to identify the primary connection endpoint on the peer side.

secondaryPeerSubnet
string

The secondary subnet of the peer. This is used to identify the secondary connection endpoint on the peer side.

Responses

Request samples

Content type
application/json
{
  • "vlanId": 10,
  • "peerAsn": 2342,
  • "primaryPeerSubnet": "111.22.3.5/30",
  • "secondaryPeerSubnet": "111.22.3.6/30"
}

Response samples

Content type
application/json
{
  • "peerAsn": 54321,
  • "vlanId": 1000,
  • "primaryPeerSubnet": "10.0.1.0/30",
  • "secondaryPeerSubnet": "10.0.2.0/30",
  • "azureAsn": 12345,
  • "primaryAzurePort": "azure1",
  • "secondaryAzurePort": "azure2",
  • "state": "Enabled"
}

Read an Azure connection's peering config

Read an Azure connection's peering config from the system. Note that if you have recently changed this information in the Azure dashboard it may take some time to propagate back to Console Connect.

syncStatus

Peering sync status can be one of the following values:

syncStatus Description
PENDING The request has been sent to the system
SYNCING The system is syncing the configuration with Azure
SYNCED The configuration is active in Azure

Note that 'advertisedPublicPrefixes' and 'routingRegistryName' are only used for configs of type MICROSOFT.

Authorizations:
api-key
path Parameters
username
required
string
Example: Acme

The username of the company that created the connection.

connectionId
required
string
Example: 507f1f77bcf86cd799439011

The ObjectID from the Create Azure connection endpoint.

peeringType
required
string
Example: PRIVATE

The type of peering i.e Private Azure (PRIVATE), Public Azure (PUBLIC) or Microsoft / Office365 (MICROSOFT)

Responses

Response samples

Content type
application/json
{
  • "peerAsn": 54321,
  • "vlanId": 1000,
  • "primaryPeerSubnet": "10.0.1.0/30",
  • "secondaryPeerSubnet": "10.0.2.0/30",
  • "azureAsn": 12345,
  • "primaryAzurePort": "azure1",
  • "secondaryAzurePort": "azure2",
  • "state": "Enabled"
}

Delete an Azure connection's peering config

Authorizations:
api-key
path Parameters
username
required
string
Example: Acme

The username of the company that created the connection.

connectionId
required
string
Example: 507f1f77bcf86cd799439011

The ObjectID from the Create Azure connection endpoint.

peeringType
required
string
Example: PRIVATE

The type of peering i.e Private Azure (PRIVATE), Public Azure (PUBLIC) or Microsoft / Office365 (MICROSOFT)

Responses

Verify the key

You can use this endpoint to verify and retrieve information from the service key before you create the connection.

Authorizations:
api-key
path Parameters
username
string
Example: Acme

The username of the company.

Request Body schema: application/json
azureServiceKey
string

Service key provided by Azure

Responses

Request samples

Content type
application/json
{
  • "azureServiceKey": "example-service-key"
}

Response samples

Content type
application/json
{
  • "azureConfig": {
    },
  • "primaryPort": { },
  • "secondaryPort": { }
}

Google Cloud Engine

Use the generic connection Create, Read, Update and Delete (CRUD) routes for searching, updating and deleting Layer 2 Google Cloud Engine Direct Connect Partner connections.

Create a new L2 Google Compute Engine Direct Connect Partner connection

Prerequisites

  • Your company has been verified on the Console Connect platform.

  • The authenticated user account has Network Admin permissions.

  • The source port is ACTIVE.

  • You are requesting paymentType "invoice", or, if requesting paymentType "plan", the subscription associated with the port has sufficient entitlements to complete the request.

Note: Google Direct Connect Partner connections require redundancy - you must specify two destination ports when creating the connection. You must also specify the region name and two pairing keys from that region.

Authorizations:
api-key
path Parameters
companyName
required
string
Example: Acme

The username of the company creating the connection.

Request Body schema: application/json
type
string

The connection type, typically 'LAYER_2'.

name
string

The name of the new connection.

srcPortId
string

The source port id.

destPortId
string

The destination port id

speed
number

The speed of the connection in Mbps.

paymentType
string
Enum: "creditcard" "invoice"

The payment method.

object
discountCode
string

Responses

Request samples

Content type
application/json
{
  • "type": "LAYER2",
  • "name": "Google Connection",
  • "srcPortId": "5de874f10d83430256e31f8c",
  • "destPortId": "5de874ee0d83430256e31f88",
  • "paymentType": "invoice",
  • "speed": 500,
  • "partner": {
    }
}

Response samples

Content type
application/json
{
  • "id": "5de874f229177602561b2bb0",
  • "version": "1",
  • "srcPortId": "5de874f10d83430256e31f8c",
  • "destPortId": "5de874ee0d83430256e31f88",
  • "srcControllerId": null,
  • "destControllerId": null,
  • "srcCompanyId": "5de874ef9c84f90256ba370f",
  • "destCompanyId": "5de874e89c84f90256ba370d",
  • "srcCompany": {
    },
  • "destCompany": {
    },
  • "srcRegionId": "",
  • "destRegionId": "",
  • "name": "Google Connection",
  • "request": {
    },
  • "status": "ACTIVE",
  • "paymentType": "plan",
  • "type": "GROUP_LAYER2",
  • "partner": {
    },
  • "durationUnit": null,
  • "duration": null,
  • "tag": null,
  • "destTag": null,
  • "srcVlan": {
    },
  • "destVlan": {
    },
  • "srcUntagged": false,
  • "destUntagged": false,
  • "srcQinQ": false,
  • "destQinQ": false,
  • "srcConfigTag": null,
  • "destConfigTag": null,
  • "speed": {
    },
  • "errorReason": null,
  • "cdrBillingType": "METRO",
  • "parentId": null,
  • "subconnectionIds": {
    },
  • "importedAt": null,
  • "importer": null,
  • "statusChangedAt": "2019-12-05T03:09:38.796Z",
  • "activeChangedAt": null,
  • "firstActiveAt": null,
  • "maintenanceMode": false,
  • "updatedAt": "2019-12-05T03:09:38.861Z",
  • "createdAt": "2019-12-05T03:09:38.861Z",
  • "deleted": false,
  • "deletedAt": null,
  • "scheduled": false,
  • "scheduledTaskList": [ ],
  • "paymentTransactionId": null,
  • "salesRecordId": null,
  • "payg": false,
  • "billingType": null,
  • "classOfService": "BRONZE",
  • "typeFriendly": "Google Direct Connect",
  • "isReceiver": false,
  • "isCreator": true,
  • "subconnections": [
    ],
  • "destPort": {
    },
  • "srcTag": null,
  • "destPorts": [
    ],
  • "srcPorts": [ ],
  • "port": {
    }
}

OVHCloud

  • This guide will show how to connect to OVHcloud using the Console Connect API.
  • For further information you can refer to our API reference documentation.
  • Prerequisites:
    • Your Service Key (partnerAccountId) is validated with OVHcloud. You will need to order a new OVHcloud Connect service to receive a Service Key.
    • For more information, please see our OVHcloud connectivity video.
    • Your company has been verified on the Console Connect platform.
    • Your user account should have the Network Admin role.

Choose source port

Request

curl 'https://api.consoleconnect.com/api/company/:companyUsername/ports?deleted=false' \
--header 'Authorization: Bearer <API_KEY>'

Make sure to replace :companyUsername with your actual company username and <API_KEY> with your API key.

Response

You may receive multiple results, but only choose one.

Take note of the id property - we will use this as the portId.

{
  "results": [
    {
      "id": "66c29b3c6dcad34e5b728c9c", // This property will be the portId of the request payload
      "name": "My-Port-1",
      "speed": {
        "value": 1000,
        "name": "1000 Mbps"
      },
      "tags": [],
      "dataCenterFacilityId": "5aa89b04ac86ba0012345bdf",
      "popId": "99759532-0aeb-4e02-a876-5b505e9b213a",
      "metroId": "77d9f1fbbcaa906f3cddb6d1",
      "companyId": "5d4d056242fbd3000ab4c01d",
      "status": "ACTIVE",
      "updatedAt": "2024-08-19T01:09:16.376Z",
      "createdAt": "2024-08-19T01:09:16.376Z",
      "deleted": false,
      "deletedAt": null,
      "paymentType": "invoice",
      "payg": true
      ...
    }
    ...
  ]
}

Find an available OVH NNI

Choose destination port

Note: You can use the validate OVH key endpoint to retrieve the destPortId.

Request

curl 'https://api.consoleconnect.com/v2/ovh-service-key/validate' \
--header 'Authorization: Bearer <API_KEY>' \
--data-raw '{"serviceKey":"<YOUR_OVH_KEY>"}'

Make sure to replace <API_KEY> with your API key.

Response

Take note of the portId property since we will use this as the destPortId in request.

{
  "bandwidth": 2000,
  "region": "par-01",
  "portId": "645c8f1b6ae4e90015d8f53b", // This property will be the destPortId of the request payload
  "bandwidthTiers": [
      {
          "type": "AUTOMATIC",
          "value": 200
      },
      {
          "value": 500,
          "type": "AUTOMATIC"
      },
      {
          "value": 1000,
          "type": "AUTOMATIC"
      },
      {
          "value": 2000,
          "type": "AUTOMATIC"
      }
  ],
  "portName": "OVH Paris",
  "dataCenterFacilityId": "5a8ba8c58195000012e9f13f"
}

Create a new OVHCloud Connection

Prerequisites

  • Your Service key is validated with OVHCloud
  • Your company has been verified on the Console Connect platform.
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company creating the connection.

Request Body schema: application/json
name
required
string

The name of the new connection.

srcPortId
required
string

The source port ID.

destPortId
required
string

The destination OVH port ID.

speed
required
number

The connection speed in Mbps.

paymentType
required
string
Enum: "creditcard" "invoice"

The payment method.

duration
required
number

The duration the service was ordered for, in conjunction with durationUnit. The maximum duration by unit is: days: 6; weeks: 3; month: 36; years: 3

durationUnit
required
string
Enum: "d" "w" "m" "y"

The unit of duration the service was ordered for, in conjunction with duration. 'd' for days, 'w' for weeks, 'm' for months, 'y' for years.

partnerAccountId
required
string

The OVH account id

discountCode
string
classOfService
required
string
Enum: "BRONZE" "SILVER" "GOLD"

Name of the class of service.

evergreen
boolean

Responses

Request samples

Content type
application/json
{
  • "partnerAccountId": "EU.81d5945e-d15f-4439-b236-1e3af7a5e014",
  • "srcPortId": "60bec23b28634d0015f872fa",
  • "paymentType": "invoice",
  • "destPortId": "645c8f1b6ae4e90015d8f53b",
  • "name": "ovh test",
  • "speed": 10,
  • "duration": 1,
  • "durationUnit": "d",
  • "classOfService": "SILVER",
  • "evergreen": true
}

Response samples

Content type
application/json
{
  • "results": {
    }
}

Post OVH Service Key Validation

Validate your OVH Service Key and recieve associated port information needed to provision a Layer 2 Connection or CloudRouter site with OVH.

Authorizations:
api-key
Request Body schema: application/json
serviceKey
string

Service Key provided by OVHCloud

Responses

Request samples

Content type
application/json
{
  • "serviceKey": "4405543e-54a1-4b6c-920a-d574b7761645"
}

Response samples

Content type
application/json
[
  • {
    }
]

Internet On-Demand (IO-D)

Prerequisites

Before you can get started working with IO-D, please ensure:

  • Your company has been verified on the Console Connect platform
  • The authenticated user account has IO-D Create permissions
  • A port with IO-D capability has been specified

    Note: checkout the IO-D guideline for more guidelines & tips related to IO-D.

Path Routes

The IO-D API endpoints reference GIA. Global Internet Access (GIA) was the internal Console Connect product name for Internet On-Demand (IO-D). The IO-D endpoints are nested under the /app-user/{companyId} path with two different roots. One is singular (gia-service) and the other is plural (gia-services). These paths are associated with the following actions:

Root Path Actions
/app-user/{companyId}/gia-service Create, Flex, Logs
/app-user/{companyId}/gia-services Search/List, Get by ID

Check IP Availability

Prerequisites

  • Your company has been verified on the Console Connect platform
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company requesting the IP availability check.

query Parameters
type
required
string
Enum: "ipv4" "ipv6"
Example: type=ipv4

IP version, either IPv4 or IPv6.

pool
required
string
Enum: "customer" "linknet"
Example: pool=customer

The IP pool to check; either customer or linknet. 'customer' for checking customer routable IP addresses, or 'linket' for link IP addresses.

mask
required
integer
Enum: 26 27 28 29 30
Example: mask=29

Specify a subnet mask to indicate the size of IP block you are looking for.

Responses

Response samples

Content type
application/json
Example
true

Get Private ASN Suggestion

Get an allocatable Private ASN suggestion.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "asn": 4200000055
}

Get Private ASN Range

Get the minimum and maximum ASN range

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "start": 4200000000,
  • "end": 4294967294
}

Validate a Private ASN

Authorizations:
api-key
Request Body schema: application/json
asn
required
number

The private asn to be validated.

Responses

Request samples

Content type
application/json
{
  • "asn": 3200000055
}

Response samples

Content type
application/json
Example
{
  • "asn": 3200000055,
  • "valid": false,
  • "reason": "ASN is out of range"
}

Provision IO-D Service

Prerequisites:

  • Your company has been verified on the Console Connect platform.
  • Access Rights - User must have role: Network Admin/NETWORKCONTROL. You may verify your role here
  • You have specified a port with IO-D capability.
  • You have provided a valid ASN configuration:
    • Public ASN: To use a Public ASN, pass in asnId, the ID of a VERIFIED ASN attached to your company.
    • Private ASN: Set privateAsn: true and either privateAsnAutoAssign: true to have the system assign an ASN for you, or privateAsnRequested to set your own.
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The id of the company

Request Body schema: application/json
accessPortId
required
string

The ID of the port to use for this IO-D service.

asnId
string

6210-4c68-82a5-f89fda2fd356 (string) - The ID of the ASN to use for this service (required for DYNAMIC GIA services).

autoAssignBgpKey
required
boolean

Whether to auto assign a BGP key for the service (only valid for DYNAMIC IO-D services). If true, a 24 character key using printable ASCII characters will be generated.

bgpKey
string

The BGP key to use for authentication of this service (required for DYNAMIC GIA services). Must be 6-24 characters long.

defaultOriginate
required
boolean

Whether to advertise only the default route (0.0.0.0/0) to the customer router. If true, only the default route is advertised; if false, the full routing table (hundreds of thousands of routes) is advertised.

required
object

The duration the service was ordered for.

enableIpv6
required
boolean

Whether this service should be IPv6-enabled.

ipv6Block
number

The mask size of a public IPv6 block to provision in addition to this service. Currently the only valid value for ipv6Block is 48.

ipblock
number

The mask size (26-30) of a public IPv4 block to provision in addition to this service. If not provided, no additional public IPv4 addresses will be provided. Larger block sizes can be requested from Console Connect support.

name
required
string

Name of the IO-D service.

privateAsn
boolean

Whether the service should be associated with a Private ASN.

privateAsnAutoAssign
boolean

Automatically generate and assign a valid Private ASN for the service.

privateAsnRequested
number

Set your own Private ASN (which will be validated against system rules).

rateLimit
required
number

The desired bandwidth of this service (in Mbps).

burstRate
number

The maximum data rate the service is capable of delivering within a short time frame (in Mbps). If burst rate is specified, the following validation rules will apply: Committed data rate limit minimum is set at 10% of remaining port capacity, also burstable bandwidth must exceed committed data rate, but not exceed remaining port capacity.

burstType
string

Burst type description, e.g. '95th Percentile'.

type
required
string

Specify the routing type; either DYNAMIC (for BGP) or STATIC.

vlanId
number

The VLAN ID of the access circuit (between the Access Port and a Console Connect Border Router). If not provided a VLAN ID will be automatically assigned.

paymentType
required
string
Value: "invoice"

The method used to make payment for this service - The only valid and supported payment type for this service is via invoice.

discountCode
string

Responses

Request samples

Content type
application/json
Example
{
  • "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  • "autoAssignBgpKey": true,
  • "defaultOriginate": true,
  • "duration": {
    },
  • "enableIpv6": false,
  • "ipblock": 29,
  • "name": "DYNAMIC IoD with private ASN",
  • "paymentType": "invoice",
  • "privateAsn": true,
  • "privateAsnAutoAssign": true,
  • "rateLimit": 100,
  • "burstRate": 150,
  • "burstType": "95th Percentile",
  • "type": "DYNAMIC",
  • "vlanId": 3001
}

Response samples

Content type
application/json
{
  • "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  • "companyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  • "name": "gia-service",
  • "vlanId": 3001,
  • "rateLimit": {
    },
  • "burstRate": {
    },
  • "burstType": "95th Percentile",
  • "type": "DYNAMIC",
  • "asnId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "ipv4BlockId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "ipv6BlockId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "enableIpv6": true,
  • "customerRouterIpv4": "182.64.64.31",
  • "customerRouterIpv6": "2001:db8:85a3:0:0:8a2e:370:7334",
  • "consoleRouterIpv4": "182.64.64.32",
  • "consoleRouterIpv6": "2001:db8:85a3:0:0:8a2e:370:7335",
  • "linknetIpV4Block": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "linknetIpV6Block": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "bgpKey": "af83Le4Y5gGP8IgA9gaJ",
  • "staticRoutes": [
    ],
  • "giaSiteId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "giaOrderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "status": "PROVISIONING",
  • "bgpStatus": null,
  • "peers": [
    ],
  • "defaultOriginate": true,
  • "defaultOriginateIpv6": true
}

Get IO-D Services

List your IO-D services.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

query Parameters
required
object (Filter)
Examples:
  • filter={ "skip": 10, "limit": 10 } - List IO-D services by page.
  • filter={ "where":{"status":"ACTIVE"}, "skip": 0, "limit": 10 } - Search for IO-D services by status.

Criteria for finding IO-D Services.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Delete IO-D service

Authorizations:
api-key
path Parameters
giaId
required
string

The id of the IO-D service that is to be deleted

Responses

Response samples

Content type
application/json
{ }

Get IO-D service by ID

Retrieves all of the details of a specific IO-D service by specifying the service ID. To obtain your service ID, refer to Get IO-D Services.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The ID of the IO-D service.

Responses

Response samples

Content type
application/json
{
  • "id": "xxxxxxxxxxxxxxxxxxxxxxxx",
  • "companyId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "accessPortId": "xxxxxxxxxxxxxxxxxxxxxxxx",
  • "name": "gia-service",
  • "vlanId": 3001,
  • "rateLimit": {
    },
  • "burstRate": {
    },
  • "burstType": "95th Percentile",
  • "type": "DYNAMIC",
  • "asnId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "ipv4BlockId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "ipv6BlockId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "enableIpv6": true,
  • "customerRouterIpv4": "182.64.64.31",
  • "customerRouterIpv6": "2001:db8:85a3:0:0:8a2e:370:7334",
  • "consoleRouterIpv4": "182.64.64.32",
  • "consoleRouterIpv6": "2001:db8:85a3:0:0:8a2e:370:7335",
  • "linknetIpV4Block": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "linknetIpV6Block": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "bgpKey": "af83Le4Y5gGP8IgA9gaJ",
  • "staticRoutes": [
    ],
  • "giaSiteId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "giaOrderId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  • "status": "PROVISIONING",
  • "bgpStatus": null,
  • "peers": [
    ],
  • "defaultOriginate": true,
  • "defaultOriginateIpv6": true
}

Get IO-D service logs

View provisioning service logs of your IO-D service

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The ID of the IO-D service.

Request Body schema: application/json
limit
required
any

The number of logs per page (for pagination).

skip
required
any

The number of logs to skip (for pagination).

Responses

Request samples

Content type
application/json
{
  • "limit": 10,
  • "skip": 0
}

Response samples

Content type
application/json
{
  • "total": 2,
  • "results": [
    ]
}

Get Flex Requests for IO-D service

Get the history of flex requests for an IO-D service.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The ID of the IO-D service.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Flex an IO-D service

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The ID of the IO-D service.

Request Body schema: application/json
bandwidth
required
number

The bandwidth to flex the service to. Must be a whole number greater than 0.

Responses

Request samples

Content type
application/json
{
  • "bandwidth": 100
}

Response samples

Content type
application/json
{
  • "id": "0b2478b1-5be8-4f29-8336-a49240acb90d",
  • "giaServiceId": "7bab11ba-11a6-45d3-90f7-4b77032dd8a0",
  • "type": "UPGRADE",
  • "status": "REQUESTED",
  • "active": false,
  • "scheduledAt": "2021-02-08T23:15:54.000Z",
  • "bandwidth": "450",
  • "lineItemId": "d38992d5-0f1a-405b-a146-8cc17f84efae",
  • "created_at": "2021-02-08T23:15:54.318Z",
  • "updated_at": "2021-02-08T23:15:54.436Z"
}

Get current IO-D service flex

The active flex is any flex that has been processed and is currently active on the service. The latest flex is the most recent flex request (which may still be processing). The active and latest flex be the same record. If there is no active flex, the active property in the response will be null. If there are no flex requests at all, the latest property in the response will be null.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The id of the company

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The id of the IO-D service

Responses

Response samples

Content type
application/json
{
  • "latest": {
    },
  • "active": {
    }
}

Get IO-D service flex history

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The id of the company

giaId
required
string
Example: 06327dfa-4e86-438b-af4c-3086be0a2467

The ID of the IO-D service.

Responses

Response samples

Content type
application/json
{
  • "contractBandwidth": 100,
  • "active": {
    },
  • "pending": {
    },
  • "results": [
    ],
  • "total": 1
}

ASNs

ASN statuses include:

  • UNVERIFIED - The initial state of a newly added ASN. The ASN will then be verified by Console Connect Support.

  • VERIFIED - This ASN is correct, as verified by Console Connect Support.

Get all ASNs

Lists ASNs associated to the specified company ID.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: xxxxxxxxxxxxxxxxxxxxxxxx

The company ID to perform this action for.

query Parameters
filter
string
Example: filter={"where":{"status":"VERIFIED","private":false}}

Used to specify criteria for filtering the data in the query string of the URL

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Search

Search for users, companies, and data center facilities.

CloudRouter

CloudRouter / L3VPN operations.

Provision a new CloudRouter

Prerequisites:

  • Obtain your company ID. You can call Search API (i.e. GET https://api.consoleconnect.com/api/search?page=1&count=20&type=companies&q={companyName}). See Search API for more details. Or you can get both companyName and companyId in Auth API
  • Use API key in the Authorization Bearer Token (see API Key)
  • The authenticated user account has L3VPN Create permissions.
    • The user account has the 'Network Admin'/'NETWORKCONTROL' role. This can be verified or assigned by a user who has 'Account Admin' or 'User Admin' permission via the user admin page in Console. You can check here.
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5ea242303962644b52fc4346

The id of the company

Request Body schema: application/json
name
required
string

Your CloudRouter name

paymentMethod
required
string

Payment Method

bandwidth
required
string

Total bandwidth of all sites you intend to attach to this CloudRouter

required
object

Minimum contract duration. Service will continue month-to-month after complete

discountCode
string

Responses

Request samples

Content type
application/json
{
  • "name": "My CloudRouter",
  • "paymentMethod": "invoice",
  • "bandwidth": "500MB",
  • "duration": {
    }
}

Response samples

Content type
application/json
{
  • "name": "My CloudRouter",
  • "status": "CREATING",
  • "id": "63e48134c3af0500151b59f3",
  • "paymentMethod": "invoice",
  • "duration": {
    },
  • "bandwidth": "500MB",
  • "companyId": "5ea242303962644b52fc4346",
  • "deletedAt": null,
  • "createdAt": "2023-02-09T05:14:28.759Z",
  • "updatedAt": "2023-02-09T05:14:28.760Z"
}

Query existing CloudRouters

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Find Valid Cloud Providers

Get the list of cloud providers.

Authorizations:
api-key
query Parameters
filter
object
Example: filter={"where":{"isCloudProvider":true}}

Should put a conditional value isCloudProvider to true to query the Valid Cloud Providers (see Example above)

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Find Valid Ports in a Cloud Provider

Get the list of valid ports for a specific cloud provider.

Note: If there are no connectionSpeeds listed under partner, this field will not be required on the create site payload.

Authorizations:
api-key
path Parameters
providerId
required
string
Example: 5aa7209defe3bc00124d075f

The ID of the Cloud Provider.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

Deprovision a CloudRouter

Prerequisites:

  • The authenticated user account has CloudRouter Destroy permissions.

  • The CloudRouter does not have any attached sites which have not been deleted.

  • The CloudRouter is in the status: CREATED.

  • The contract end date must be in the past

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

l3vpnId
required
string
Example: 61668e06e8dd60b034f3cd61

The ID of the CloudRouter

Responses

Response samples

Content type
application/json
{
  • "uuid": "4c5f6bcc-3d8b-4be7-a4a7-e44c711007d7",
  • "name": "My CloudRouter",
  • "status": "DELETING",
  • "id": "63e47974c3af0500151b59ef",
  • "companyId": "5d4d056242fbd3000ab4c01d",
  • "deletedAt": null,
  • "createdAt": "2022-01-09T04:41:24.455Z",
  • "updatedAt": "2023-02-15T03:34:16.916Z",
  • "paymentMethod": "invoice",
  • "duration": {
    },
  • "bandwidth": "500MB"
}

Provision a new Site on an existing VPN (CloudRouter)

Provision a new VPN site

Prerequisites:

  • Your company has been verified on the Console Connect platform and you have signed the Specific Terms for API use. Contact Support if you are unsure whether this has been completed for your company.
  • Use API key to authenticate Once you apply for an API key the Support team will send you the key that you will require. (See Auth)
  • The authenticated user account has L3VPN Update and L3VPN Site Create permissions.
  • Your company already has an L3VPN (CloudRouter) on the Console Connect platform. You can check this in the Web Application or use the Query existing CloudRouters APi endpoint (See Query existing CloudRouters)
  • Site Ports:
    • The port (identified with portId) must have enough remaining capacity.
    • The port needs to be Active.
  • Tier Rate Limit for DCP providers:
    • Must be one of the speed tiers marked as available on the DCP port.
    • Must be greater than or equal to the requested rateLimit.
  • My Port Site:
    • My port sites (peer.type "SELF") are sites created on one of your active Console Connect Ports.

Site Ports

The port (identified with portId) must have enough remaining capacity.

Tier Rate Limit for DCP providers

  • must be one of the speed tiers marked as available on the DCP port.
  • must be greater than or equal to the requested rateLimit

My Port Site

My port sites (peer.type "SELF") are sites created on one of your active Console Connect Ports.

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company. You can check your companyId in your account on Console Connect website or you can query in Auth API

vpnId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of your CloudRouter. You can find this from the response of the create CloudRouter endpoint, or by querying CloudRouters (see Query existing CloudRouters)

Request Body schema: application/json
One of
required
object

L2 config

name
required
string

Name for the new VPN site.

required
object

L3 peer config

discountCode
string

A valid discount code.

Responses

Request samples

Content type
application/json
Example
{
  • "accessCircuit": {
    },
  • "name": "my_cloudrouter_site_name",
  • "peer": {
    },
  • "discountCode": "CLOUDROUTER10"
}

Response samples

Content type
application/json
{
  • "service": {
    }
}

Get list of CloudRouter sites

Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5d4d056242fbd3000ab4c01d

The ID of the company.

l3vpnId
required
string
Example: 63e48134c3af0500151b59f3

The ID of an ACTIVE CloudRouter.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Deprovision a Site of an existing CloudRouter

Prerequisites:

  • The authenticated user account has permissions to delete the site of an existing CloudRouter.
Authorizations:
api-key
path Parameters
companyId
required
string
Example: 5e4cb418ab1dbe8c8476163b

The ID of the company.

l3vpnId
required
string
Example: 61668e06e8dd60b034f3cd61

The ID of the CloudRouter

siteId
required
string
Example: 61668e06e8dd60b034f3cd61

The ID of site

Responses

Entitlements

Check entitlements for network actions.

Get all plans and entitlements

Get all company plans and entitlements

Authorizations:
api-key
path Parameters
username
required
string
Example: Acme

The username of the company to retrieve the ports and entitlement details of.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Get plan and entitlement details

Get specific plan and entitlement details.

Authorizations:
api-key
path Parameters
username
required
string
Example: company_co

The username of the company.

portId
required
string
Example: 55767b5652a693344a015744

The port ID.

Responses

Response samples

Content type
application/json
{
  • "subscriptions": [ ],
  • "entitlement": {
    }
}

Companies

Manage Company business and network information.

Create a company

Authorizations:
api-key
Request Body schema: application/json
any (CompanyModel)

Responses

Request samples

Content type
application/json
{
  • "name": "Foo International",
  • "businessRegistrationNumber": "EXAMPLE-321",
  • "company": {
    }
}

Remove role from user

Remove a role from a user within a given company.

Authorizations:
api-key
path Parameters
username
required
string
Example: acmeinc

The username of the company to join.

targetUsername
required
string
Example: meg

The username of the user to respond to.

roleName
required
string
Example: ADMIN

The role to apply to or remove from the user.

Responses

Add role to user

Add a role to a user within a given company.

Authorizations:
api-key
path Parameters
username
required
string
Example: acmeinc

The username of the company to join.

targetUsername
required
string
Example: meg

The username of the user to respond to.

roleName
required
string
Example: ADMIN

The role to apply to or remove from the user.

Responses

Update user role state

Company membership requests can be in one of the following states:

  • INACTIVE - Request made by either company or user.
  • ACTIVE - Request accepted and they are a member of the company.
  • DENIED - Request denied by the company.
  • CANCELLED - Request cancelled by either company or user.
Authorizations:
api-key
path Parameters
username
required
string
Example: acmeinc

The username of the company.

targetUsername
required
string
Example: meg

The username of the user to modify.

Request Body schema: application/json
state
string

The new state for this user; INACTIVE, ACTIVE, DENIED, or CANCELLED.

Responses

Request samples

Content type
application/json
{
  • "state": "ACTIVE"
}

Remove a user from a company

Authorizations:
api-key
path Parameters
username
required
string
Example: acmeinc

The username of the company.

targetUsername
required
string
Example: meg

The username of the user to modify.

Responses

Response samples

Content type
application/json
{ }

Leave a Company

Removes the authenticated user from the company.

Authorizations:
api-key
path Parameters
username
required
string
Example: acmeinc

The username of the company to leave.

Responses

Users

Manage individual user accounts.

Get User

Retrieve user account details.

Authorizations:
api-key
path Parameters
username
required
string
Example: stan

Responses

Response samples

Content type
application/json
{
  • "id": "58980a25a77b4d7bf459d100",
  • "username": "stella",
  • "name": "Stella",
  • "email": "stella@example.com"
}

Update user

Update user account details.

Authorizations:
api-key
path Parameters
username
required
string
Example: stan
Request Body schema: application/json
tags
string
avatar
string

An avatar URL for this user. This must be the same URL as provided by a [File Upload][].

background
string
company.address
string
company.businessType
string
company.city
string
company.clientId
string
company.companySize
string
company.dateFounded
string
company.email
string
company.fax
string
company.first
string
company.industry
string
company.last
string
company.markets
string
company.phone
string
company.privacy.community.blackListIds
any

list of company ids

company.privacy.community.whiteListIds
any

list of company ids

company.privacy.network.blackListIds
any

list of company ids

company.privacy.network.whiteListIds
any

list of company ids

company.regionalInternetRegistry
string
company.state
string
company.website
string
company.zip
string
headline
string
location
string
name
string

The new name for this user account

optIntoMarketingEmail
boolean
phone
string
role
string
settings
object

Settings object, corresponding with the settings retrieved from the GET method.

summary
string

Responses

Request samples

Content type
application/json
{
  • "tags": "",
  • "avatar": "",
  • "background": "",
  • "company.address": "",
  • "company.businessType": "",
  • "company.city": "",
  • "company.clientId": "",
  • "company.companySize": "",
  • "company.dateFounded": "",
  • "company.email": "",
  • "company.fax": "",
  • "company.first": "",
  • "company.industry": "",
  • "company.last": "",
  • "company.markets": "",
  • "company.phone": "",
  • "company.privacy.community.blackListIds": [ ],
  • "company.privacy.community.whiteListIds": [ ],
  • "company.privacy.network.blackListIds": [ ],
  • "company.privacy.network.whiteListIds": [ ],
  • "company.regionalInternetRegistry": "",
  • "company.state": "",
  • "company.website": "",
  • "company.zip": "",
  • "headline": "",
  • "location": "",
  • "name": "",
  • "optIntoMarketingEmail": false,
  • "phone": "",
  • "role": "",
  • "settings": { },
  • "summary": ""
}

Response samples

Content type
application/json
{
  • "id": "58980a25a77b4d7bf459d100",
  • "username": "stella",
  • "name": "Stella",
  • "email": "stella@example.com"
}

Support Tickets

Create and view tickets for the Console Connect Support team.

Get support tickets for the logged in users company

Get a list of support tickets.

Authorizations:
api-key
query Parameters
status
required
string
Enum: "open" "closed"
Example: status=open

Criteria for searching support tickets.

page
integer
Example: page=1

The "page" of results from a query.

pageSize
integer
Example: pageSize=200

The number of results to be returned in a query.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create support ticket

Create a support ticket for the logged in users company.

Authorizations:
api-key
Request Body schema: application/json
name
string
description
string
issueType
string
Enum: "Application" "Circuit Down" "Circuit Flapping" "Circuit taking errors" "High Latency" "Operational Request" "Others" "Packet Loss/Drops" "Request Reason of Outage" "Slow Response" "Unstable"
object
object

Responses

Request samples

Content type
application/json
Example

An example payload when raising a ticket for a service available in the /support-tickets/services list.

{
  • "name": "My ConsoleConnect speed issue",
  • "description": "My port has slow speeds between 8am and 9am GMT+7",
  • "issueType": "Slow Response",
  • "service": {
    },
  • "customerContact": {
    }
}

Response samples

Content type
application/json
{
  • "id": "INC000001234567",
  • "name": "Ticket Name Label",
  • "description": "This is the description of the ticket",
  • "priority": [
    ],
  • "status": "Acknowledged",
  • "ticketType": "Incident",
  • "creationDate": "2023-01-01T01:02:03.000+0000",
  • "notes": [
    ],
  • "relatedParty": [
    ],
  • "relatedEntity": [
    ],
  • "channel": {
    },
  • "@type": "troubleTicket"
}

Get support ticket by Id

Get a single support ticket.

Authorizations:
api-key
path Parameters
id
required
string
Example: INC000001234567

The id of the support ticket.

Responses

Response samples

Content type
application/json
{
  • "id": "INC000001234567",
  • "name": "Ticket Name Label",
  • "description": "This is the description of the ticket",
  • "priority": [
    ],
  • "status": "Acknowledged",
  • "ticketType": "Incident",
  • "creationDate": "2023-01-01T01:02:03.000+0000",
  • "notes": [
    ],
  • "relatedParty": [
    ],
  • "relatedEntity": [
    ],
  • "channel": {
    },
  • "@type": "troubleTicket"
}

List Console Services

Provides a list of Console Connect services that a support ticket can be created for.

Authorizations:
api-key

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Add Note to support ticket

Adds a note to an existing support ticket.

Authorizations:
api-key
path Parameters
id
required
string
Example: INC000001234567

The id of the support ticket.

Request Body schema: application/json

The note text.

noteText
string

The text comment to be added to the ticket.

Responses

Request samples

Content type
application/json
{
  • "noteText": "My connection is experiencing packet loss between 0800 and 0807 every day."
}

Response samples

Content type
application/json
{
  • "id": "INC000001234567",
  • "name": "Ticket Name Label",
  • "description": "This is the description of the ticket",
  • "priority": [
    ],
  • "status": "Acknowledged",
  • "ticketType": "Incident",
  • "creationDate": "2023-01-01T01:02:03.000+0000",
  • "notes": [
    ],
  • "relatedParty": [
    ],
  • "relatedEntity": [
    ],
  • "channel": {
    },
  • "@type": "troubleTicket"
}

Heartbeat

Retrieve status information for the Console Connect API service.

Heartbeat

Get the current deployed version on the server

Authorizations:
api-key

Responses

Response samples

Content type
application/json
{
  • "name": "@iixlabs/portal-node-api",
  • "now": 1444957362993,
  • "uptime": 437874,
  • "humanUptime": "7 minutes ago",
  • "uptimeSeconds": 438,
  • "version": "3.14.34"
}

Internet of Things (IoT)

  • Simplify the ordering, deployment, and change management of your entire global Internet of Things (IoT) network with Console Connect.
  • From real-time activation and deactivation of devices to service configuration, and traffic monitoring, you benefit from end-to-end control and visibility over your global Internet of Things (IoT) assets.
  • The Console Connect Internet of Things (IoT) service is delivered via our extensive worldwide mobile 2G, 3G, and 4G partner networks and supported by our extensive private global MPLS infrastructure.
  • End-to-end Internet of Things (IoT) connectivity can be extraordinarily complex, often involving a combination of local and international connections, leased lines, public internet, mobile and Wi-Fi networks, and private and public clouds.
  • Console Connect Internet of Things (IoT) simplifies the ordering, deployment, and change management of your entire global Internet of Things (IoT) network.

Edge SIM

  1. Edge SIM enables end to end connectivity from the customer’s edge mobile device to the Customer’s designated Cloud or data center.
  • Edge devices can be distributed worldwide and connected to the Cloud via local mobile networks in over 180 countries (note: ~120 countries are offered on the Console Connect portal; other countries are available on request) where there are Service Coverage and grouped into several Pricing Zones.
  • Bypassing the public Internet, the end-to-end connection from the mobile device is secured over a private path direct from the mobile device into the CloudRouter
  • Groups of SIMs called “SIMPools” act as an individual site in Cloud Router, allowing for easy configuration for the customer to build private networks to multiple clouds and data centers.
  • Configuration of Edge SIM is totally automated, allowing customers to build their own networks in minutes.
  1. An ordering service is provided in Console Connect together with a SIM management portal
  • Edge SIM can be ordered by the customer anytime over the console ordering portal, similar to other Console Connect services.

  • The newly ordered Edge SIMs can be added to any of the existing SIMPool or if require, the customer can setup a new SIMPool. SIMPools can be added to the Customer’s existing or newly defined sites on Cloud Router.

Frequently Asked Questions (FAQs)

  • What is Edge SIM?

    • Edge SIM allows you to extend the connectivity of your mobile devices to connect directly with your own CloudRouter network. This allows for the creation of new and novel configurations; and use cases that are more secure, reliable, and scalable as the Internet is bypassed entirely. Edge SIM is entirely automated. Networks can be configured with a few clicks, and working within minutes.
  • What are the major differences between the Console Connect Edge SIM and the Console Connect IoT SIM solution?

    • Existing Console Connect IoT SIMs essentially provide services via simple internet connectivity, whereas Edge SIMs bypass the Internet entirely, allowing for direct connections to Clouds and data centers globally, through CloudRouter. The Edge SIM solution is suitable for more sophisticated IoT applications, as shown in the table below:.

This is aimed at simplifying the ordering, deployment and change management of your entire global IoT network with Console Connect.

  • A SIMPool is a group of SIMs that share the same service gateway and configurations, such as IP addresses, subnets, and DNS servers.
  • SIMs can be added to a SIMPool or moved to another SIMPool
  • A SIMPool has to be added to the Cloud Router before the traffic can be routed to the customer network
  • The SIMPool will also be used to direct traffic to a managed firewall for customers requiring internet access in the future.

Get Edge SIM orders

Retrieves all Edge SIM orders enlisted under provided id field and filtered accordingly based on the Filter parameter

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

This correlates to the current API user's id.

query Parameters
filter
string
Example: filter={ fields: simPoolName | ["simPoolName","connectivityType"], include: company | ["company","apn"], limit: 10, order: asc | desc, skip: 10, where: {"companyId":"5f97d3d2d85fbe0014fd1812"}}

This field helps us filter, sort, limit and order the returned data.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create Edge SIM order

Creates a new Edge SIM order of this model type and returns it as a response

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

This correlates to the current API user's id.

Request Body schema: application/json
object

This object contains all the necessary information required to create a new Edge SIM order.

Responses

Request samples

Content type
application/json
{
  • "name": "test 123456",
  • "orderType": "PAYG",
  • "simPoolName": "test 123456",
  • "companyId": "5f97d3d2d85fbe0014fd1812",
  • "apnId": "e3f8ae76-3b1a-40e0-ae29-4ed336b143e3",
  • "connectivityType": "PRIVATE",
  • "simQuantity": 1,
  • "simType": "PHYSICAL-SIM",
  • "dnsAlternate": "100.100.1.0",
  • "dnsPreferred": "100.100.2.0",
  • "useDefaultDNS": "true",
  • "paymentType": "INVOICE"
}

Response samples

Content type
application/json
{
  • "id": "0433187-29b2-40d6-97de-69b3cb4f7a0f",
  • "friendlyId": "IOTC38C11E9BD",
  • "simPoolId": null,
  • "simPoolName": "test 123456",
  • "companyId": "5f97d3d2d85fbe0014fd1812",
  • "apnId": "e3f8ae76-3b1a-40e0-ae29-4ed336b143e3",
  • "connectivityType": "PRIVATE",
  • "name": "test 123456",
  • "simQuantity": 1,
  • "deliveryAddress": null,
  • "companyAddress": "Lorem , Ipsum Text",
  • "orderType": "PAYG",
  • "dnsPreferred": "10.100.1.1",
  • "dnsAlternate": "10.100.1.2",
  • "useDefaultDNS": true,
  • "status": "ORDERED",
  • "error": null,
  • "userEmail": "user@pccwglobal.com",
  • "deliveryEmail": null,
  • "paymentType": "INVOICE",
  • "offerType": null,
  • "endUser": null,
  • "skipUserEmail": false,
  • "skipAdminEmail": false,
  • "skipSupportEmail": false,
  • "skipCompliance": false,
  • "skipSlack": false,
  • "skipInsightSr": false,
  • "sourceEnterpriseId": null,
  • "simType": "PHYSICAL-SIM",
  • "productId": 1143474,
  • "description": "Lorem , Ipsum Text",
  • "manufacturer": "Thales (MADE IN CHINA)",
  • "purchaseDate": "2020-05-26T00:00:00.000Z",
  • "originalPurchaseOrder": "ZM1124438",
  • "purchaseProject": "IoT",
  • "eccn": "EAR99",
  • "hkHsCode": 85235200,
  • "currency": "USD",
  • "unitPrice": null,
  • "imsiProfileId": null,
  • "createdAt": "2024-07-08T11:09:19.386Z",
  • "updatedAt": "2024-07-15T12:38:48.933Z",
  • "deletedAt": null,
  • "updatedById": null,
  • "company_id": "5f97d3d2d85fbe0014fd1412",
  • "deleted_at": null,
  • "created_at": "2024-07-08T11:09:19.386Z",
  • "updated_at": "2024-07-15T12:38:48.933Z"
}

Get an Edge SIM order by id

Get an Edge SIM order by id

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

This correlates to the current API user's id.

orderId
required
string
Example: 115973a6-f372-4ab5-a171-f3a52d334f48

Edge SIM order id.

Responses

Response samples

Content type
application/json
{
  • "id": "0433187-29b2-40d6-97de-69b3cb4f7a0f",
  • "friendlyId": "IOTC38C11E9BD",
  • "simPoolId": null,
  • "simPoolName": "test 123456",
  • "companyId": "5f97d3d2d85fbe0014fd1812",
  • "apnId": "e3f8ae76-3b1a-40e0-ae29-4ed336b143e3",
  • "connectivityType": "PRIVATE",
  • "name": "test 123456",
  • "simQuantity": 1,
  • "deliveryAddress": null,
  • "companyAddress": "Lorem , Ipsum Text",
  • "orderType": "PAYG",
  • "dnsPreferred": "10.100.1.1",
  • "dnsAlternate": "10.100.1.2",
  • "useDefaultDNS": true,
  • "status": "ORDERED",
  • "error": null,
  • "userEmail": "user@pccwglobal.com",
  • "deliveryEmail": null,
  • "paymentType": "INVOICE",
  • "offerType": null,
  • "endUser": null,
  • "skipUserEmail": false,
  • "skipAdminEmail": false,
  • "skipSupportEmail": false,
  • "skipCompliance": false,
  • "skipSlack": false,
  • "skipInsightSr": false,
  • "sourceEnterpriseId": null,
  • "simType": "PHYSICAL-SIM",
  • "productId": 1143474,
  • "description": "Lorem , Ipsum Text",
  • "manufacturer": "Thales (MADE IN CHINA)",
  • "purchaseDate": "2020-05-26T00:00:00.000Z",
  • "originalPurchaseOrder": "ZM1124438",
  • "purchaseProject": "IoT",
  • "eccn": "EAR99",
  • "hkHsCode": 85235200,
  • "currency": "USD",
  • "unitPrice": null,
  • "imsiProfileId": null,
  • "createdAt": "2024-07-08T11:09:19.386Z",
  • "updatedAt": "2024-07-15T12:38:48.933Z",
  • "deletedAt": null,
  • "updatedById": null,
  • "company_id": "5f97d3d2d85fbe0014fd1412",
  • "deleted_at": null,
  • "created_at": "2024-07-08T11:09:19.386Z",
  • "updated_at": "2024-07-15T12:38:48.933Z"
}

Lists all Edge SIM SIMPools.

List Edge SIM SIMPools for the logged-in user's company based on the given Company Id.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

query Parameters
filter
string
Example: filter={ fields: asn | ["asn","orderId"], include: asn | ["asn","orderId"], limit: 10, order: asc | desc, skip: 10, where: {"apnId":"238094-4546-2323-5687879-234"}}

Filter string object containing keys and properties to filter by.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Creates a new instance of an Edge SIM SIMPool.

Creates a new instance of an Edge SIM SIMPool under current Company Id.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

Request Body schema: application/json

Field contains Information on Edge SIM SIMPool to be created.

id
string
name
required
string
apnId
required
string
subnet
string

Gets assigned to the SIM pool on creation

firewall
string
Default: "DISABLED"
Enum: "ENABLED" "DISABLED" "CUSTOM"

CUSTOM is not supported yet

firewallStatus
string
Default: "SUCCESS"
Enum: "SUCCESS" "PROCESSING" "FAILED"
status
string
Default: "SUCCESS"
Enum: "SUCCESS" "PROCESSING" "FAILED"
error
string
primaryDNS
string
secondaryDNS
string
companyId
required
string
defaultPrimaryDNS
string
defaultSecondaryDNS
string
useDefaultDNS
boolean
customFirewallEnabled
boolean
customFirewallPolicies
string
created_at
string <date-time>

A date time format.

updated_at
string <date-time>

A date time format.

Responses

Request samples

Content type
application/json
{
  • "name": "Test SIM Pool",
  • "apnId": "e3408b3b-6d67-4983-3db2-ae0ddd4837df",
  • "useDefaultDNS": true
}

Response samples

Content type
application/json
{
  • "id": "022bbd4d-42ae-4d2f-a563-7c517d50daaa",
  • "name": "Test SIM Pool",
  • "apnId": "e3408b3b-6d67-4983-3db2-ae0ddd4837df",
  • "companyId": "5f97d3d2d85fbe0014fd1812",
  • "subnet": "10.10.10.10/18",
  • "firewall": "DISABLED",
  • "firewallStatus": "SUCCESS",
  • "status": "CREATED",
  • "error": null,
  • "simCount": 2,
  • "primaryDNS": null,
  • "secondaryDNS": null,
  • "defaultPrimaryDNS": "1.1.1.1",
  • "defaultSecondaryDNS": "2.2.2.2",
  • "useDefaultDNS": true,
  • "customFirewallEnabled": false,
  • "customFirewallPolicies": [ ],
  • "apn": { },
  • "company_id": "5f97d3d2d85fbe0014fd1812",
  • "apn_id": "e3408b3b-6d67-4983-3db2-ae0ddd4837df",
  • "created_at": "2024-08-16T08:46:45.476Z",
  • "updated_at": "2024-08-16T08:46:45.476Z"
}

Update a related item by id for Edge SIM SIMPool.

Updates a related item by id on respective Edge SIM SIMPool for the logged-in user's company based on the given Company Id.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

iotSimPoolId
required
string
Example: e3408b4b-3d67-4953-3db2-ae3ddd483745

Edge SIM SimPool Id for the respective Edge SIM SIMPool.

Request Body schema: application/json

Field contains Information on Edge SIM SIMPool to be updated.

id
string
name
string
apnId
string
subnet
string

Gets assigned to the sim pool on creation

firewall
string
Default: "DISABLED"
Enum: "ENABLED" "DISABLED" "CUSTOM"

CUSTOM is not supported yet

firewallStatus
string
Default: "SUCCESS"
Enum: "SUCCESS" "PROCESSING" "FAILED"
status
string
Default: "SUCCESS"
Enum: "SUCCESS" "PROCESSING" "FAILED"
error
string
primaryDNS
string
secondaryDNS
string
companyId
string
defaultPrimaryDNS
string
defaultSecondaryDNS
string
useDefaultDNS
boolean
customFirewallEnabled
boolean
customFirewallPolicies
string
created_at
string <date-time>

A date time format.

updated_at
string <date-time>

A date time format.

Responses

Request samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "apnId": "string",
  • "subnet": "string",
  • "firewall": "ENABLED",
  • "firewallStatus": "SUCCESS",
  • "status": "SUCCESS",
  • "error": "string",
  • "primaryDNS": "string",
  • "secondaryDNS": "string",
  • "companyId": "string",
  • "defaultPrimaryDNS": "string",
  • "defaultSecondaryDNS": "string",
  • "useDefaultDNS": true,
  • "customFirewallEnabled": true,
  • "customFirewallPolicies": "string",
  • "created_at": "2019-08-24T14:15:22Z",
  • "updated_at": "2019-08-24T14:15:22Z"
}

Response samples

Content type
application/json
{
  • "id": "022bbd4d-42ae-4d2f-a563-7c517d50daaa",
  • "name": "Test SIM Pool",
  • "apnId": "e3408b3b-6d67-4983-3db2-ae0ddd4837df",
  • "companyId": "5f97d3d2d85fbe0014fd1812",
  • "subnet": "10.10.10.10/18",
  • "firewall": "DISABLED",
  • "firewallStatus": "SUCCESS",
  • "status": "CREATED",
  • "error": null,
  • "simCount": 2,
  • "primaryDNS": null,
  • "secondaryDNS": null,
  • "defaultPrimaryDNS": "1.1.1.1",
  • "defaultSecondaryDNS": "2.2.2.2",
  • "useDefaultDNS": true,
  • "customFirewallEnabled": false,
  • "customFirewallPolicies": [ ],
  • "apn": { },
  • "company_id": "5f97d3d2d85fbe0014fd1812",
  • "apn_id": "e3408b3b-6d67-4983-3db2-ae0ddd4837df",
  • "created_at": "2024-08-16T08:46:45.476Z",
  • "updated_at": "2024-08-16T08:46:45.476Z"
}

Deletes a related item from the respective Edge SIM SIMPool by Id.

Deletes a related item from the respective Edge SIM SIMPool by Id from logged-in user's company based on the given Company Id.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

iotSimPoolId
required
string
Example: e3408b4b-3d67-4953-3db2-ae3ddd483745

Iot SimPool Id for the respective Edge SIM SIMPool.

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Adds new SIM to an Edge SIM SIMPool.

Updates a related item by id on respective Edge SIM SIMPool for the logged-in user's company based on the given Company Id.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

destinationSimPoolId
required
string
Example: 022bbd4d-42ae-4d2f-a563-7c517d50daaa

Destination SIMPool Id where to inject the respective Edge SIM SIMs.

Request Body schema: application/json

SIMs to be moved.

object

Responses

Request samples

Content type
application/json
{
  • "sims": {
    }
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get a list of Edge SIMs for the logged in users company

Get a list of Edge SIM.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

Company Id of currently logged in user.

query Parameters
filter
string
Example: filter={ fields: asn | ["asn","orderId"], include: asn | ["asn","orderId"], limit: 10, order: asc | desc, skip: 10, where: {"apnId":"238094-4546-2323-5687879-234"}}

Filter string object containing keys and properties to filter by.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get a SIM item of Edge SIM.

Get single Edge SIM.

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

User ID of currently logged in user.

iotSimId
required
string
Example: 0433187-29b2-40d6-97de-69b3cb4f7a0f

IoT SIM identifier

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "iotSimPoolId": "string",
  • "iotOrderId": "string",
  • "state": "string",
  • "iccid": "string",
  • "imsi": "string",
  • "msisdn": "string",
  • "detectedImei": "string",
  • "ipAddress": "string",
  • "companyId": "string",
  • "label": "string",
  • "status": "string",
  • "simTransferId": "string",
  • "createdAt": "2024-08-13T09:38:50.268Z",
  • "updatedAt": "2024-08-13T09:38:50.268Z",
  • "simProvider": "string",
  • "company_id": "string",
  • "iot_order_id": "string",
  • "created_at": "2024-08-13T09:38:50.268Z",
  • "updated_at": "2024-08-13T09:38:50.268Z",
  • "iot_sim_pool_id": "string"
}

Update Edge SIM.

Attributes of the SIM can be updated(one or multiple together).

Authorizations:
api-key
path Parameters
id
required
string
Example: 5f97d3d2d85fbe0014fd1812

User ID of currently logged in user.

iotSimId
required
string
Example: 0433187-29b2-40d6-97de-69b3cb4f7a0f

IoT SIM identifier

Request Body schema: application/json

Further details for some of the field.

status
string
Enum: "ACTIVE" "PAUSED"
label
string

It is a description for the SIM.

Responses

Request samples

Content type
application/json
{
  • "status": "PAUSED"
}

Response samples

Content type
application/json
{
  • "id": "string",
  • "iotSimPoolId": "string",
  • "iotOrderId": "string",
  • "state": "string",
  • "iccid": "string",
  • "imsi": "string",
  • "msisdn": "string",
  • "detectedImei": "string",
  • "ipAddress": "string",
  • "companyId": "string",
  • "label": "string",
  • "status": "string",
  • "simTransferId": "string",
  • "createdAt": "2024-08-13T09:38:50.268Z",
  • "updatedAt": "2024-08-13T09:38:50.268Z",
  • "simProvider": "string",
  • "company_id": "string",
  • "iot_order_id": "string",
  • "created_at": "2024-08-13T09:38:50.268Z",
  • "updated_at": "2024-08-13T09:38:50.268Z",
  • "iot_sim_pool_id": "string"
}

Description

This API Spec is complaint with MEF LSO Sonata Grace Version

Supported product type:

  • UNI (DC port)

  • Access Eline (DC port)

List of supported use cases:

  • Validate Address

  • Retrieve Address by Identifier

  • Create UNI quote (sync, firm)

  • Create Access Eline quote (sync, firm)

  • Query quote by id

  • Create UNI ADD order

  • Create Access Eline ADD order

  • Query UNI order by id

  • Query Access Eline order by id

  • Create UNI delete order

  • Create Access Eline delete order

  • query UNI product instance by product order id

  • query Access Eline product instance by product order id

  • query UNI product instance by id

  • query Access Eline product instance by id

Authentication

Users must authenticate successfully before any further API calls can be made. There are two authentication headers required for authenticating to api outlined in this section.

Console Connect API key

CC api key are provisioned by Support against your Console Connect User Account. Email Support to request a key.

x-sonata-buyer-key

Another layer of Authentication, Contact Support for x-sonata-buyer-key in the meantime.

Example request

curl -X GET https://api.consoleconnect.com/Sonata/mefApi/sonata/productInventory/v7/product/{id} \
-H "Authorization: Bearer [[Console Connect api key]]"
-H "x-sonata-buyer-key: Bearer [[x-sonata-buyer-key]]"

Geographic Address Management

Geographic Address Management

Creates a GeographicAddressValidation

This operation creates a GeographicAddressValidation entity.

Authorizations:
x-sonata-buyer-key-and-api-key
query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. Reference: MEF 79 (Sn 8.8)

Request Body schema: application/json;charset=utf-8

The GeographicAddressValidation to be created

provideAlternative
required
boolean

Indicator provided by the requester to specify if alternate addresses must be provided in case of partial or fail result. MEF: The attribute is kept for TMF API compliance. MEF requires this attribute always to be set to 'true'. Alternatives should be provided regardless of whether best match was found. The Seller is allowed not to implement the support for 'false'

required
object (GeographicAddress)

Structured textual way of describing how to find a property in an urban area (country properties are often defined differently). Note: Address corresponds to SID UrbanPropertyAddress

Responses

Request samples

Content type
application/json;charset=utf-8
{
  • "provideAlternative": true,
  • "submittedGeographicAddress": {
    }
}

Response samples

Content type
application/json;charset=utf-8

Notes:

address id will be used in quote

address keyName will be used in order

{
  • "validationResult": "partial",
  • "alternateGeographicAddress": [
    ],
  • "provideAlternative": true,
  • "submittedGeographicAddress": {
    }
}

Retrieves a GeographicAddress by ID

This operation retrieves a GeographicAddress entity.

Authorizations:
x-sonata-buyer-key-and-api-key
path Parameters
id
required
string

Identifier of the GeographicAddress

query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. Reference: MEF 79 (Sn 8.8)

Responses

Response samples

Content type
application/json;charset=utf-8
{
  • "id": "5a25e13b0c23371f1cd5f7ff",
  • "@type": "FieldedAddress",
  • "associatedGeographicAddress": {
    }
}

Quote Management

Quote Management

Send request to perform a quotation

This operation creates a Quote entity.

Authorizations:
x-sonata-buyer-key-and-api-key
query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller.

Reference: MEF 79 (Sn 8.8)

Request Body schema: application/json;charset=utf-8

The Quote to be created

Array of objects (Note)

Free form text associated with the quote. Only useful in processes involving human interaction. Not applicable for the automated process.

requestedQuoteCompletionDate
string <date-time>

This is requested date - from quote requester - to get a complete response for this quote

Array of objects (RelatedContactInformation)

Party playing a role for this quote. If instantSyncQuote equals false then the Buyer MUST specify Buyer Contact Information ('role: buyerContactInformation') and the Seller MUST specify Seller Contact Information ('role: sellerContactInformation')

description
string

Description of the quote

externalId
string

ID given by the consumer and only understandable by him (to facilitate his searches afterwards)

buyerRequestedQuoteLevel
required
string (MEFBuyerQuoteLevel)
Enum: "budgetary" "firm"

An indication of whether the Buyer's Quote Request is for a Budgetary or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level contains the possible values and may be set by the Buyer on the Request. All Quote Items in a Quote have the same Quote Level.

projectId
string

An identifier that is used to group Quotes that represent a unit of functionality that is important to a Buyer. A Project can be used to relate multiple Quotes together.

instantSyncQuote
required
boolean

If this flag is set to true, the Buyer requests an immediate Quote to be provided in the response to the creation of a Quote.

required
Array of objects (MEFQuoteItem_Create) non-empty

An item of the quote - used to describe an operation on a product to be quoted

Responses

Request samples

Content type
application/json;charset=utf-8
{
  • "note": [
    ],
  • "requestedQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "relatedContactInformation": [
    ],
  • "description": "string",
  • "externalId": "string",
  • "buyerRequestedQuoteLevel": "budgetary",
  • "projectId": "string",
  • "instantSyncQuote": true,
  • "quoteItem": [
    ]
}

Response samples

Content type
application/json;charset=utf-8
{
  • "note": [
    ],
  • "requestedQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "relatedContactInformation": [
    ],
  • "description": "string",
  • "externalId": "string",
  • "buyerRequestedQuoteLevel": "budgetary",
  • "projectId": "string",
  • "instantSyncQuote": true,
  • "effectiveQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "expectedQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "validFor": {
    },
  • "quoteLevel": "budgetary",
  • "quoteItem": [
    ],
  • "stateChange": [
    ],
  • "id": "string",
  • "href": "string",
  • "state": "accepted",
  • "quoteDate": "2019-08-24T14:15:22Z"
}

Retrieves a Quote by ID

This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes.

Authorizations:
x-sonata-buyer-key-and-api-key
path Parameters
id
required
string

Identifier of the Quote

query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller.

Reference: MEF 79 (Sn 8.8)

Responses

Response samples

Content type
application/json;charset=utf-8
{
  • "note": [
    ],
  • "requestedQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "relatedContactInformation": [
    ],
  • "description": "string",
  • "externalId": "string",
  • "buyerRequestedQuoteLevel": "budgetary",
  • "projectId": "string",
  • "instantSyncQuote": true,
  • "effectiveQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "expectedQuoteCompletionDate": "2019-08-24T14:15:22Z",
  • "validFor": {
    },
  • "quoteLevel": "budgetary",
  • "quoteItem": [
    ],
  • "stateChange": [
    ],
  • "id": "string",
  • "href": "string",
  • "state": "accepted",
  • "quoteDate": "2019-08-24T14:15:22Z"
}

Product Order Management

Product Order Management

Creates a ProductOrder

This operation creates a ProductOrder entity.

Authorizations:
x-sonata-buyer-key-and-api-key
query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. Reference: MEF 79 (Sn 8.8)

Request Body schema: application/json;charset=utf-8

The ProductOrder to be created

externalId
string

An identifier for this order within the Buyer's enterprise.

Array of objects (Note)

Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time.

projectId
string

An identifier that is used to group Product Orders that is important to the Buyer. A projectId can be used to relate multiple Product Orders together.

required
Array of objects (RelatedContactInformation) non-empty

Contact information of an individual or organization playing a role in this context. (e.g. Product Order Contact: role=productOrderContact; Seller Contact: role=sellerContact) Providing the Product Order Contact in the request is mandatory.

required
Array of objects (MEFProductOrderItem_Create) non-empty

Items contained in the Product Order.

Responses

Request samples

Content type
application/json;charset=utf-8
{
  • "externalId": "string",
  • "note": [
    ],
  • "projectId": "string",
  • "relatedContactInformation": [
    ],
  • "productOrderItem": [
    ]
}

Response samples

Content type
application/json;charset=utf-8
{
  • "externalId": "string",
  • "note": [
    ],
  • "projectId": "string",
  • "relatedContactInformation": [
    ],
  • "cancellationCharge": [
    ],
  • "cancellationDate": "2019-08-24T14:15:22Z",
  • "cancellationReason": "string",
  • "completionDate": "2019-08-24T14:15:22Z",
  • "href": "string",
  • "id": "string",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "productOrderItem": [
    ],
  • "state": "acknowledged",
  • "stateChange": [
    ]
}

Retrieves a ProductOrder by ID

This operation retrieves a ProductOrder entity.

Authorizations:
x-sonata-buyer-key-and-api-key
path Parameters
id
required
string

Identifier of the ProductOrder

query Parameters
buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 79 (Sn 8.8)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. Reference: MEF 79 (Sn 8.8)

Responses

Response samples

Content type
application/json;charset=utf-8
{
  • "externalId": "string",
  • "note": [
    ],
  • "projectId": "string",
  • "relatedContactInformation": [
    ],
  • "cancellationCharge": [
    ],
  • "cancellationDate": "2019-08-24T14:15:22Z",
  • "cancellationReason": "string",
  • "completionDate": "2019-08-24T14:15:22Z",
  • "href": "string",
  • "id": "string",
  • "orderDate": "2019-08-24T14:15:22Z",
  • "productOrderItem": [
    ],
  • "state": "acknowledged",
  • "stateChange": [
    ]
}

Product Inventory Management

Product Inventory Management

List or find Product objects

This operation lists or finds Product entities

Authorizations:
x-sonata-buyer-key-and-api-key
query Parameters
status
string
Enum: "active" "active.pendingChange" "cancelled" "pendingActive" "pendingTerminate" "suspended" "suspendedPendingTerminate" "terminated"

The status of the product

productSpecificationId
string

A reference to a Product specification by id

productOfferingId
string

A reference to a Product offering by id

externalId
string

A reference to the externalId provided in the order

geographicalSiteId
string

A site identifier which is associated to the Product

relatedProductId
string

This criteria allows to retrieve all Product records with a Product Relationship to a specified Product. E.g. All Products related to Product with ID 5

billingAccountId
string

The Billing Account associated with the Product.

productOrderId
string

Identifies Product Order associated with the Product

startDate.lt
string <date-time>

Less than the date that is the initial install date for the Product

startDate.gt
string <date-time>

Greater than the date that is the initial install date for the Product

lastUpdateDate.lt
string <date-time>

Less than date that the last change affecting this Product was completed

lastUpdateDate.gt
string <date-time>

Greater than the date that the last change affecting this Product was completed

buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 81 (Sn 8.3)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. Reference: MEF 81 (Sn 8.3)

offset
integer <int32>

Requested index for start of item to be provided in response requested by client. Note that the index starts with "0".

limit
integer <int32>

Requested number of items to be provided in response requested by client

Responses

Response samples

Content type
application/json;charset=utf-8
[
  • {
    }
]

Retrieves a Product by ID

This operation retrieves a Product entity.

Authorizations:
x-sonata-buyer-key-and-api-key
path Parameters
id
required
string

Identifier of the Product

query Parameters
fields
string

Comma-separated properties to provide in response

buyerId
string

The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. Reference: MEF 81 (Sn 8.3)

sellerId
string

The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. Reference: MEF 81 (Sn 8.3)

Responses

Response samples

Content type
application/json;charset=utf-8
{
  • "productSpecification": {
    },
  • "relatedSite": [
    ],
  • "productOffering": {
    },
  • "lastUpdateDate": "2019-08-24T14:15:22Z",
  • "relatedContactInformation": [
    ],
  • "@type": "string",
  • "externalId": "string",
  • "statusChange": [
    ],
  • "billingAccount": {
    },
  • "productOrderItem": [
    ],
  • "productTerm": [
    ],
  • "terminationDate": "2019-08-24T14:15:22Z",
  • "productConfiguration": {
    },
  • "productRelationship": [
    ],
  • "id": "string",
  • "href": "string",
  • "startDate": "2019-08-24T14:15:22Z",
  • "productPrice": [
    ],
  • "status": "active"
}