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

Path Routes

The IO-D API endpoints reference GIA. Global Internet Access (GIA) was the internal PCCW Global 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
Request
path Parameters
companyId
required
string

The ID of the company requesting the IP availability check.

Example: 5e4cb418ab1dbe8c8476163b
query Parameters
type
required
string

IP version, either IPv4 or IPv6.

Enum: "ipv4" "ipv6"
Example: type=ipv4
pool
required
string

The IP pool to check; either customer or linknet. 'customer' for checking customer routable IP addresses, or 'linket' for link IP addresses.

Enum: "customer" "linknet"
Example: pool=customer
mask
required
integer

Specify a subnet mask to indicate the size of IP block you are looking for.

Enum: 26 27 28 29 30
Example: mask=29
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/check-ip-availability
Response samples
application/json
true

Check Port IO-D capability

Check whether a Port supports provisioning of an IO-D Service.

Prerequisites:

  • Your company has been verified on the Console Connect platform.
  • You have a port.
Request
path Parameters
companyId
required
string

The ID of the company requesting the IP availability check.

Example: 5e4cb418ab1dbe8c8476163b
portId
required
string

The ID of the port to request the capabilities of.

Example: 6ea4b418ab1dbe8c8476163b
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/ports/{portId}/info
Response samples
application/json
{
  • "multiservice": true
}

Get Private ASN Suggestion

Get an allocatable Private ASN suggestion.

Request
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/api/private-asn/suggestion
Response samples
application/json
{
  • "asn": 4200000055
}

Get Private ASN Range

Request
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/api/private-asn/range
Response samples
application/json
{
  • "start": 4200000000,
  • "end": 4294967294
}

Validate a Private ASN

Request
header Parameters
portal-token
required
string

Authentication token.

Request Body schema: application/json
asn
required
number

The private asn to be validated.

Responses
200

OK

post/api/private-asn/validate
Request samples
application/json
{
  • "asn": 3200000055
}
Response samples
application/json
{
  • "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.
  • The authenticated user account has IO-D Create permissions.
  • 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.
Request
path Parameters
companyId
required
string

The id of the company

Example: 5e4cb418ab1dbe8c8476163b
header Parameters
portal-token
required
string

Authentication token.

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.

billingtype
required
string

The type of plan the IO-D Service is on; one of "payg", "free" or "bespoke".

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.

duration
required
number

The duration the service was ordered for, in conjunction with durationUnit.

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.

enableIpv6
required
boolean

Whether this service should be IPv6-enabled.

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).

type
required
string

Specify the routing type; either DYNAMIC (for BGP) or STATIC.

vlanId
string

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.

Responses
200

OK

post/app-user/{companyId}/gia-service
Request samples
application/json
{
  • "accessPortId": "5e4cb418ab1dbe8c8476163b",
  • "asnId": "b72d84b5",
  • "autoAssignBgpKey": true,
  • "bgpKey": "af83Le4Y5gGP8IgA9gaJ",
  • "billingtype": "invoice",
  • "defaultOriginate": true,
  • "duration": 4,
  • "durationUnit": "m",
  • "enableIpv6": true,
  • "ipblock": 29,
  • "name": "gia_service",
  • "privateAsn": true,
  • "privateAsnAutoAssign": true,
  • "privateAsnRequested": 0,
  • "rateLimit": 100,
  • "type": "DYNAMIC",
  • "vlanId": "3001"
}
Response samples
application/json
{
  • "companyId": "7cffc346-12a6-4147-8246-a3de09533e68",
  • "accessPortId": "5e4cb418ab1dbe8c8476163b",
  • "name": "gia-service",
  • "vlanId": 3001,
  • "rateLimit": {
    },
  • "type": "DYNAMIC",
  • "asnId": "98dd7337-fb0b-4ff3-959f-ea78a920b192",
  • "ipv4BlockId": "b40d4741-6d38-46cd-9db4-9a0178145b31",
  • "ipv6BlockId": "be83ae3c-cddd-4874-9dde-88318ea91471",
  • "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": "0638779d-2c48-433a-9869-545ded06f576",
  • "linknetIpV6Block": "e6c79137-0b9f-407a-be27-a75e942dbabf",
  • "bgpKey": "af83Le4Y5gGP8IgA9gaJ",
  • "staticRoutes": [
    ],
  • "salesRecordId": "6d8011d7-59c6-4edd-b1c2-ff1eaf822002",
  • "giaSiteId": "cbaa830a-991b-4e9d-a90d-63d90df99199",
  • "giaOrderId": "65849700-36f6-40b9-b0a6-fbfb6ee5b5a5",
  • "status": "PROVISIONING",
  • "peers": [
    ],
  • "defaultOriginate": true
}

Get IO-D Services

List your IO-D services.

Request
path Parameters
companyId
required
string

The ID of the company.

Example: 5e4cb418ab1dbe8c8476163b
query Parameters
required
object (LoopBackFilter)

Criteria for finding IO-D Services.

Examples:
filter={ "skip": 10, "limit": 10 }
filter={ "where": { "name": { "like": "My IO-D Service", options: "i" }, }, "skip": 0, "limit": 10 } # this example doesn't seem to use location? A more exhaustive list of options/arguments might be useful here.
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/gia-services
Response samples
application/json
[
  • {
    }
]

Delete IO-D service

Request
path Parameters
giaId
required
string

The id of the IO-D service that is to be deleted

header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

404

Not Found

delete/v2/gia-services/{giaId}

Get IO-D service by ID

Request
path Parameters
companyId
required
string

The id of the company

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The ID of the IO-D service.

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

404

Not Found

get/app-user/{companyId}/gia-services/{giaId}
Response samples
application/json
{
  • "companyId": "7cffc346-12a6-4147-8246-a3de09533e68",
  • "accessPortId": "5e4cb418ab1dbe8c8476163b",
  • "name": "gia-service",
  • "vlanId": 3001,
  • "rateLimit": {
    },
  • "type": "DYNAMIC",
  • "asnId": "98dd7337-fb0b-4ff3-959f-ea78a920b192",
  • "ipv4BlockId": "b40d4741-6d38-46cd-9db4-9a0178145b31",
  • "ipv6BlockId": "be83ae3c-cddd-4874-9dde-88318ea91471",
  • "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": "0638779d-2c48-433a-9869-545ded06f576",
  • "linknetIpV6Block": "e6c79137-0b9f-407a-be27-a75e942dbabf",
  • "bgpKey": "af83Le4Y5gGP8IgA9gaJ",
  • "staticRoutes": [
    ],
  • "salesRecordId": "6d8011d7-59c6-4edd-b1c2-ff1eaf822002",
  • "giaSiteId": "cbaa830a-991b-4e9d-a90d-63d90df99199",
  • "giaOrderId": "65849700-36f6-40b9-b0a6-fbfb6ee5b5a5",
  • "status": "PROVISIONING",
  • "peers": [
    ],
  • "defaultOriginate": true
}

Get IO-D service logs

Request
path Parameters
companyId
required
string

The ID of the company.

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The ID of the IO-D service.

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

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
200

OK

post/app-user/{companyId}/gia-service/{giaId}/logs
Request samples
application/json
{
  • "limit": 10,
  • "skip": 0
}
Response samples
application/json
{
  • "total": 2,
  • "results": [
    ]
}

Get Flex Requests for IO-D service

Get the history of flex requests for an IO-D service.

Request
path Parameters
companyId
required
string

The ID of the company.

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The ID of the IO-D service.

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/gia-service/{giaId}/flex
Response samples
application/json
[
  • {
    }
]

Flex an IO-D service

Request
path Parameters
companyId
required
string

The ID of the company.

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The ID of the IO-D service.

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

Request Body schema: application/json
bandwidth
required
number

The bandwidth to flex the service to. Must be a whole number greater than 0.

Responses
200

OK

400

Bad Request

422

Unprocessable Entity

post/app-user/{companyId}/gia-service/{giaId}/flex
Request samples
application/json
{
  • "bandwidth": 100
}
Response samples
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.

Request
path Parameters
companyId
required
string

The id of the company

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The id of the IO-D service

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/gia-service/{giaId}/flex/current
Response samples
application/json
{
  • "latest": {
    },
  • "active": {
    }
}

Get IO-D service flex history

Request
path Parameters
companyId
required
string

The id of the company

Example: 5e4cb418ab1dbe8c8476163b
giaId
required
string

The ID of the IO-D service.

Example: 06327dfa-4e86-438b-af4c-3086be0a2467
header Parameters
portal-token
required
string

Authentication token.

Responses
200

OK

get/app-user/{companyId}/gia-service/{giaId}/flex/history
Response samples
application/json
{
  • "contractBandwidth": 100,
  • "active": {
    },
  • "pending": {
    },
  • "results": [
    ],
  • "total": 1
}