A detailed guideline for provisioning Internet On-Demand (IO-D) Service with client system through Console Connect API Service.
The following requirements must be met to perform the provided code samples.
Similar series of steps to perform to obtain the relevant data required for provisioning IO-D Service.
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
).
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>"
{
"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
).
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 istrue
, then your port is IO-D enabled.
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.
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.
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": ""
}'
If privateAsn
property value is true
& type
property value is DYNAMIC
:
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
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.
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.
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>"
[
{
"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.
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": ""
}'
If privateAsn
property value is false
& type
property value is DYNAMIC
:
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.
autoAssignBgpKey
property value to true
or supply a 6-24 characters long string value to bgpKey
.privateAsnRequested
in the request body.privateAsnAutoAssign
in the request body.A detailed guideline for provisioning Internet On-Demand (IO-D) Service for a specified company (through company ID) configured with STATIC routing type.
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": ""
}'
If privateAsn
property value is false
& type
property value is DYNAMIC
:
privateAsn
property value to true
.privateAsnAutoAssign
property value to trueipBlock
If enableIpv6
property value is true
ipv6Block
Note:
Currently the only valid value for
ipv6Block
is 48.
asnId
in the request body.privateAsnRequested
in the request body.bgpKey
in the request body.autoAssignBgpKey
in the request body.