Connect or Disconnect Cloud Access Port

Introduction

This page describes how to use the IX-API to provision and deprovision a Cloud Access Port.

Cloud Access Ports can be:

  • "standalone", a single cloud access port.

  • "lag_lacp", linking a group of ports together to form a single aggregated group.

Cloud Access Ports can be requested with a letter of authorisation (LOA hereafter) or an inclusive cross connect (also referred to as Cloud Access Port with Cross Connect):

  1. Letter of Authorisation.

    • This is available now.

    • This is know as a subscriber initiated Cloud Access Port where the provider (Digital Realty) issues an LOA allowing the subscriber (or their customer) to cross connect to consume the Cloud Access Port.

  2. Cloud Access Port with Cross Connect.

    • The feature is coming soon.

    • This is known as an exchange initiated Cloud Access Port where the provider (Digital Realty) cross connects to the subscriber side.

Relevant URL

The code examples shown below reference these parameters.

The value for production LOGIN_SERVICE_URL is https://login.digitalrealty.com/connect/token.

The value for production SERVICE_URL is https://api.interxion.com/ixapi/v2

2. Provision a Cloud Access Port

Please refer to the V2 IX-API open api specification here https://docs-staging.ix-api.net (latest) and https://docs.ix-api.net (officially published)

Step 1: Use client credentials to generate an access token

Make the following request to generate an access token:

curl --request POST \

  --url {LOGIN_SERVICE_URL} \

  --header 'Content-Type: application/x-www-form-urlencoded' \

  --data grant_type=client_credentials \

  --data client_id={YOUR_CLIENT_ID} \

  --data client_secret={YOUR_CLIENT_SECRET}

The response is an HTTP 200 OK with response body containing the access token

{

    "access_token": "{YOUR_ACCESS_TOKEN}",

    "expires_in": 3600,

    "token_type": "Bearer",

    "scope": "resource.api resource.ixapi resource.productcatalogapi"

}

Step 2: Read all metro areas

Cloud Access Ports are available at Pops which are in metro-area-networks which in turn are in metro areas. For each metro area, the facilities in the metro area are returned.

Make the following request to retrieve all the metro areas where a Cloud Access Port can be ordered.

curl --request GET \

  --url {SERVICE_URL}/metro-areas \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

  --header 'cache-control: no-cache'


The response is a HTTP 200 OK with response body containing metro areas

[

    {

        "id": "AMS",

        "display_name": "Amsterdam",

        "facilities": [

            "AMS1",

            "AMS3",

            "AMS4",

            "AMS5",

            "AMS6",

            "AMS7",

            "AMS8",

            "AMS9",

            "AMS10"

        ],

        "iata_code": "AMS",

        "metro_area_networks": [

            "AMS"

        ],

        "un_locode": "NL AMS"

    }, 

  ...

]

Step 3: Read all metro area networks

Within metro-areas are metro-area-networks. The metro-area-networks have pops and Cloud Access Ports can be requested at these pop locations.

Make the following request (numbered 3 in the Postman collection) to retrieve all the metro area networks where a Cloud Access Port can be ordered.

curl --request GET \

  --url {SERVICE_URL}/metro-area-networks \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

  --header 'cache-control: no-cache'

The response is a HTTP 200 OK with response body containing metro area networks

[   

   {

        "id": "AMS",

        "metro_area": "AMS",

        "name": "Amsterdam",

        "pops": [

            "AMS5-B",

            "AMS7-A"

        ],

        "service_provider": "Interxion"

    }

,,,

]

Step 4: Read all the Pops (points of presence)

Cloud Access Ports are ordered at Pops (within metro-area-networks which are within metro-areas).

Make the following request to retrieve all the pops where a Cloud Access Port can be ordered.

curl --request GET \

  --url {SERVICE_URL}/pops \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

  --header 'cache-control: no-cache'

The response is a HTTP 200 OK with response body containing pops

[

    {

        "id": "AMS5-B",

        "devices": [

            "jr4-j240-testlab"

        ],

        "facility": "AMS5",

        "metro_area_network": "AMS",

        "name": "AMS5"

    }

...

]

Step 5: Read all your Accounts

A cloud access port has to be associated to a managing_account (the account that manages the resource), a consuming_account (the account that consumes the resource) and a billing_account (the account that is billed for the resource). The accounts available for the scope of YOUR_ACCESS_TOKEN are read using the following query. The id's of the relevant account should be used.

curl --request GET \

--url {SERVICE_URL}/accounts \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is a http 200 OK with response body containing accounts

[

    {

        "id": "A0087999",

        "status": null,

        "address": {

            "country": "GB",

            "locality": "London",

            "post_office_box_number": null,

            "postal_code": "E1 6QL",

            "region": null,

            "street_address": "5th Floor 91-95 Brick Lane"

        },

        "billing_information": {

            "address": {

                "country": "GB",

                "locality": "London",

                "post_office_box_number": null,

                "postal_code": "EC2M 5TQ",

                "region": null,

                "street_address": "5th Floor 60 London Wall"

            },

            "name": "TEST COMPANY 1 UK",

            "vat_number": null

        },

        "metro_area_network_presence": [],

        "state": "production",

        "discoverable": false,

        "external_ref": null,

        "legal_name": "TEST COMPANY 1 UK",

        "managing_account": "A0087999",

        "name": "TEST COMPANY 1 UK"

    }

,,,

]

Step 6: Read Product Offerings

When requesting a Cloud Access Port, a Product Offering has to be included. The Product Offering describes the characteristics of the Cloud Access Port you are ordering, where these include bandwidth and location (that is to say, Pop). Make the following request to read Product Offerings for Cloud Access Ports. Note in IX-API, the type of the Product Offering for a Cloud Access Port is "connection".

curl --request GET \

  --url '{SERVICE_URL}/product-offerings?type=connection' \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is a HTTP 200 OK with response body containing the product-offerings.

[

    {

        "id": "503233.AMS7-A.S",

        "handover_pop": "AMS7-A",

        "maximum_port_quantity": 4,

        "physical_port_speed": 1000,

        "cross_connect_initiator": "subscriber",

        "resource_type": "connection",

        "display_name": "AMS7-Cloud Connect : Cloud Access - 1GE User Port - No Restriction-S",

        "downgrade_allowed": false,

        "handover_metro_area": "AMS",

        "handover_metro_area_network": "AMS",

        "name": "AMS7-Cloud Connect : Cloud Access - 1GE User Port - No Restriction-S",

        "required_contact_roles": [

            "4699403D-B264-4A47-9BBB-2C956DCD1A12",

            "9A442FEF-FF8F-4C2E-93E5-46425C00FD4B",

            "30806BE6-5856-41FB-8106-890474D1BA04"

        ],

        "service_provider": "Interxion",

        "type": "connection",

        "upgrade_allowed": false

    } ...

]

The products relevant for Cloud Access Port LOA are those whose property "cross_connect_initiator" has a value of "subscriber". Only these products can be used to request a Cloud Access Port currently.

Additional points to note are:

  • The property "handover_pop" tells which Pop this Product shall provision a Cloud Access Port at

  • The property "required_contact_roles" lists the contacts the Connection must include when using this Product. In the above sample response, the required contact roles are Requestor, Implementation and NoC.

Step 7: Read Roles

Where the Product Offering response includes id references to "required_contact_roles", these can be de-referenced by reading Roles.

Make the following request to retrieve all roles. This request uses the client credentials access token.

curl --request GET \

  --url '{SERVICE_URL}/ixapi/v2/roles' \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is a http 200 OK with response body containing roles

[

    {

        "id": "4699403d-b264-4a47-9bbb-2c956dcd1a12",

        "name": "Implementation",

        "required_fields": [

            "name",

            "email",

            "telephone"

        ]

    }

    ...

]

Step 8: Create Contact

Where a Contact is required with a role and does not exist it can be created using the following request. Once the Contact is created, it shall need to be associated to a role in the next step.

curl --location --request POST '{SERVICE_URL}/contacts' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

--data-raw '{

    "managing_account": "A0087999",

    "consuming_account": "A0087999",

    "name": "Panda Lion",

    "email": "dummy2@dummy.com",

    "telephone": "+2314412333223"

}'

The response is a HTTP 201 Created

{

    "id": "0092d959-6f47-478e-d2e2-08d9b8c2e666",

    "consuming_account": "A0087999",

    "email": "dummy2@dummy.com",

    "external_ref": null,

    "managing_account": "A0087999",

    "name": "Panda Lion",

    "telephone": "+2314412333223"

}

A single contact can be assigned to multiple role assignments. Please create as many Contacts as needed for the role assignments required by the Product Offering chosen.

Step 9: Create Role Assignment

To assign a Contact to a Role, a Role Assignment can be created using the following request which references a Contact id and a Role id. 

curl --location --request POST '{SERVICE_URL}/role-assignments' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

--data-raw '{

    "role": "4699403D-B264-4A47-9BBB-2C956DCD1A12",

    "contact": "7b1bf663-e8e5-4493-29f5-08d9ba38d667",

}

The response is an http 201 Created with response body containing an id for the role assignment.

{

    "id": "15c2001a-9bc8-4236-c560-08d9ba38e2ec",

    "contact": "7b1bf663-e8e5-4493-29f5-08d9ba38d667",

    "role": "4699403d-b264-4a47-9bbb-2c956dcd1a12"

}

Create as many Role Assignments as are needed.

Step 10: Create Cloud Access Port (Connection)

As mentioned, two types for Cloud Access Port can be requested

  1. Standalone, a single Cloud Access Port, and

  2. Lag_lacp, a logical aggregation group of upto 8 Cloud Access Ports

    • A single request allows upto 8 Cloud Access Ports to be requested.

    • Cloud Access Ports can be added / removed from a lag_lacp port upto the limit of eight Cloud Access Ports

    • The Product Offering (i.e. bandwidth / location) of each Cloud Access Port on a lag_lacp are the same.

Step 10a: Request a Standalone Cloud Access Port

Make the following request to create a Cloud Access Port (Connection). The request uses:

  • client credentials access token

  • "managing_account" a mandatory property which is the account id that will manage the the Cloud Access Port

  • "consuming_account" a mandatory property which is the account id that will consume the Cloud Access Port

  • "external_reference" an optional property which is a free text value for the client to provide a customer reference value

  • "purchase_order" an optional property which is a free text value for the client to provide a purchase order number value

  • "contract_ref" an optional property which is free text value for the client to provide a contract reference value

  • "billing_account" a mandatory property which is the account id that will be billed for the Cloud Access Port.

  • "role_assignments" where mandated by the product-offering selected  and whose values are the id values for each applicable Role Assignment.

  • "mode" is mandatory and is set to the value "Standalone"

  • "lacp_timeout" is mandatory and can be set to "slow" or "fast"

  • "product-offering" is mandatory and is the product-offering which determines the location and bandwidth of the Cloud Access Port

  • "port_quantity" is mandatory and the value must be "1" when the "mode" is "standalone"

  • "connecting_party" is an optional property and allows a reseller to specify the customer who they will resell the cloud access port to and this value will be included in the generated PDF LOA if populated

curl --location --request POST '{SERVICE_URL}/connections' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

--header 'Content-Type: text/plain' \

--data-raw '{

    "managing_account": "A0087999",

    "consuming_account": "A0087999",

    "external_ref": "Ext Ref Test",

    "purchase_order": "PO Test",

    "contract_ref": "Owais Test",

    "billing_account": "A0087999",

    "role_assignments": [

       "af94ae93-c387-461f-2374-08d9b0f3961e",

       "3c4b453b-f5a1-4435-2375-08d9b0f3961e",

       "f7f73ff8-f658-45d6-2376-08d9b0f3961e"

    ],

    "mode": "standalone",

    "lacp_timeout": "slow",

    "product_offering": "503233.LON1-A.S",

    "port_quantity": 1,

    "connecting_party": "Test Connecting Party"

}'

This will result in an http 201 Created response with response body as follows:

{

    "id": "CAUK-051665",

    "mode": "standalone",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "allocated",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

    "billing_account": "A0087999",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 10000,

    "consuming_account": "A0087999",

    "contract_ref": "Owais Test",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0087999",

    "name": "CAUK-051665",

    "pop": "LON1-A",

    "port_quantity": 1,

    "port_reservations": [

        "CAUK-051665"

    ],

    "ports": [

        "CAUK-051665"

    ],

    "product_offering": "503234.LON1-A.S",

    "purchase_order": "PO Test",

    "role_assignments": [

        "f7f73ff8-f658-45d6-2376-08d9b0f3961e",

        "af94ae93-c387-461f-2374-08d9b0f3961e",

        "3c4b453b-f5a1-4435-2375-08d9b0f3961e"

    ],

    "speed": 10000

}

Note the state is "Allocated" meaning the Cloud Access Port is in the process of being installed. The id value represents the Cloud Access Port.

Step 10b: Request a LAG Cloud Access Port

Make the following request to create a Cloud Access Port (Connection). The request uses:

  • client credentials access token

  • "managing_account" a mandatory property which is the account id that will manage the the Cloud Access Port

  • "consuming_account" a mandatory property which is the account id that will consume the Cloud Access Port

  • "external_reference" an optional property which is a free text value for the client to provide a customer reference value

  • "purchase_order" an optional property which is a free text value for the client to provide a purchase order number value

  • "contract_ref" an optional property which is free text value for the client to provide a contract reference value

  • "billing_account" a mandatory property which is the account id that will be billed for the Cloud Access Port.

  • "role_assignments" where mandated by the product-offering selected  and whose values are the id values for each applicable Role Assignment.

  • "mode" is mandatory and is set to the value "lag_lacp"

  • "lacp_timeout" is mandatory and can be set to "slow" or "fast"

  • "product-offering" is mandatory and is the product-offering which determines the location and bandwidth of the Cloud Access Port

  • "port_quantity" is mandatory and the value can be in the range "1" (minimum) and "8" (maximum) for mode "lag_lacp"

  • "connecting_party" is an optional property and allows a reseller to specify the customer who they will resell the cloud access port to and this value will be included in the generated PDF LOA if populated

curl --request POST \

  --url {SERVICE_URL}/connections \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

  --header 'Content-Type: application/json' \

  --data '{

    "managing_account": "A0073476",

    "consuming_account": "A0073476",

    "external_ref": "Ext Ref Test",

    "purchase_order": "PO Test",

    "contract_ref": "Test Contract Reference",

    "billing_account": "A0073476",

    "role_assignments": [

    ],

    "mode": "lag_lacp",

    "lacp_timeout": "slow",

    "product_offering": "503234.AMS5-B.S",

    "port_quantity": 2,

    "connecting_party": "American Airlines"

}'

The response is a HTTP 201 created with response body:

{

    "id": "LAGNL-051653",

    "lacp_timeout": "slow",

    "mode": "lag_lacp",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "allocated",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

    "billing_account": "A0073476",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 20000,

    "consuming_account": "A0073476",

    "contract_ref": "Owais Test",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0073476",

    "name": "LAGNL-051653",

    "pop": "AMS5-B",

    "port_quantity": 2,

    "port_reservations": [

        "CANL-051651",

        "CANL-051652"

    ],

    "ports": [

        "CANL-051651",

        "CANL-051652"

    ],

    "product_offering": "503234.AMS5-B.S",

    "purchase_order": "PO Test",

    "role_assignments": [],

    "speed": 20000,

    "status": [],

    "subscriber_side_demarcs": []

}

Each Cloud Access Port of the LAG is described within the property "port_reservations". In the above, the request asked for two Cloud Access Ports and the response details:

  • Identifier for LAG is "id": "LAGNL-051653"

  • Each Cloud Acess Port in the LAG is in the property "port_reservations" and in this example there are two Cloud Access Ports. A LAG can have upto eight Cloud Access Port.

Step 11: Read Cloud Access Port to check it is installed

Step 11a: Standalone Cloud Access Port

For the standalone Cloud Access Port, make the following request to check provisioning progress.

curl --request GET \

  --url {SERVICE_URL}/connections/CANL-051647 \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is a HTTP 200 OK with the following response body. The "state" value changing from "allocated" to "production" represents the provisioning of the Cloud Access Port has been completed.

{

    "id": "CANL-051647",

    "mode": "standalone",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "production",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

    "billing_account": "A0073476",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 10000,

    "consuming_account": "A0073476",

    "contract_ref": "Owais Test",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0073476",

    "name": "CANL-051647",

    "pop": "AMS5-B",

    "port_quantity": 1,

    "port_reservations": [

        "CANL-051647"

    ],

    "ports": [

        "CANL-051647"

    ],

    "product_offering": "503234.AMS5-B.S",

    "purchase_order": "PO Test",

    "role_assignments": [],

    "speed": 10000,

    "status": [],

    "subscriber_side_demarcs": []

}

Step 11b: LAG Cloud Access Port - Read the LAG to check provisioning status

For a LAG Cloud Access Port, provisioning progress can be reviewed by

  • querying the LAG which will provide an overall status for each Cloud Access Port in the LAG, or,

  • querying each Cloud Access Port in the LAG

Query the LAG

For querying the LAG provisioning status, make the following request

curl --request GET \

  --url {SERVICE_URL}/connections/LAGNL-051653 \

  --header 'Authorization: Bearer {YOUR_ACCCESS_CODE}'

The response is an HTTP 200 OK with response body as below. The "state" value changing from "allocated" to "production" represents the provisioning of the LAG Cloud Access Port completing.

{

    "id": "LAGNL-051653",

    "lacp_timeout": "slow",

    "mode": "lag_lacp",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "production",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

    "billing_account": "A0073476",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 20000,

    "consuming_account": "A0073476",

    "contract_ref": "Owais Test",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0073476",

    "name": "LAGNL-051653",

    "pop": "AMS5-B",

    "port_quantity": 2,

    "port_reservations": [

        "CANL-051651",

        "CANL-051652"

    ],

    "ports": [

        "CANL-051651",

        "CANL-051652"

    ],

    "product_offering": "503234.AMS5-B.S",

    "purchase_order": "PO Test",

    "role_assignments": [],

    "speed": 20000,

    "status": [],

    "subscriber_side_demarcs": []

}

Query individual Cloud Access Ports in the LAG

For each Cloud Access Port in a LAG, provisioning progress can also be reviewed by reading each Port Reservation using the following request.

curl --request GET \

  --url {SERVICE_URL}/port-reservations/CANL-051654 \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is an HTTP 200 OK with response body as below. The change of property "state" value from "allocated" to "production" occurs when provisioning is completed.

{

    "connecting_party": "HS2 Leg 2",

    "contract_ref": "Owais Test",

    "state": "production",

    "connection": "LAGNL-051655",

    "external_ref": "Ext Ref Test",

    "id": "CANL-051654",

    "exchange_side_demarc": "NL.AMS.AMS5.L99.999.A.B02.U28.X03/04",

    "port": "CANL-051654",

    "purchase_order": "PO Test"

}

Additionally note, all Cloud Access Ports have a Port Reservation resource representation and within this the following property name and values are bought to attention:

  • "exchange_side_demarc" is the demarcation which will appear in an LOA that can be downloaded for the Cloud Access Port to which the "consuming_account" or the "connecting_party" is authorised to request a cross connect to.

Step 12: Retrieve the Letter of Authority for the Cloud Access Port

Step 12a: Retrieve Letter of Authority for Cloud Access Port

A letter of authority (LOA) can be retrieved for standalone or LAG Cloud Access Port. Where requested for a LAG Cloud Access Port, this is currently not supported but when made available the LOA shall reference all Cloud Access Ports in the LAG.

Make this request to retrieve the Letter of Authority for the Cloud Access Port (standalone or LAG) which can be used to request a cross connect(s).

curl --location --request GET '{SERVICE_URL}/connections/CAUK-051658/loa' \

--header 'Content-Type: application/pdf' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN' 

This shall result in an http 200 OK response and shall return a PDF Letter of Authority. 

Step 12b: Retrieve Letter of Authority for Cloud Access Port in a LAG

A letter of authority (LOA) can be retrieved for an individual Cloud Access Port in a LAG.

Make this request to retrieve the Letter of Authority for a single Cloud Access Port in a LAG.

curl --location --request GET '{SERVICE_URL}/port-reservations/CAUK-051658/loa' \

--header 'Content-Type: application/pdf' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN' 

This shall result in an http 200 OK response and shall return a PDF Letter of Authority.

Step 13: Add a Cloud Access Port to a LAG

A LAG Cloud Access Port can have up to eight Cloud Access Ports. To add an additional Cloud Access Port to a LAG, make the following request. This includes a reference to the "connection" to which a Cloud Access Port should be added.

curl --request POST \

  --url {SERVICE_URL}/port-reservations \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' \

  --header 'Content-Type: application/json' \

  --data '{

    "connecting_party": "HS2 Leg 2333",

    "contract_ref": "Owais Test",

    "state": "production",

    "connection": "LAGNL-051655",

    "external_ref": "Ext Ref Test",

    "purchase_order": "PO Test"

}'

The response is an HTTP 201 Created with response body as follows. 

{

    "state": "allocated",

    "connecting_party": "HS2 Leg 2333",

    "connection": "LAGNL-051655",

    "contract_ref": "Owais Test",

    "external_ref": "Ext Ref Test",

    "id": "CANL-051656",

    "exchange_side_demarc": "NL.AMS.AMS5.L99.999.A.B02.U28.X19/20",

    "port": "CANL-051656",

    "purchase_order": "PO Test"

}

The above Cloud Access Port can be polled using the following read request to check the state changing from "allocated" to "production" indicating the Cloud Access Port has been provisioned and has been added to the LAG.

curl --request GET \

  --url {SERVICE_URL}/port-reservations/CANL-051656 \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is an HTTP 200 OK with response body as below. The change of property "state" value from "allocated" to "production" occurs when provisioning is completed.

{

    "connecting_party": "HS2 Leg 2333",

    "contract_ref": "Owais Test",

    "state": "production",

    "connection": "LAGNL-051655",

    "external_ref": "Ext Ref Test",

    "id": "CANL-051656",

    "exchange_side_demarc": "NL.AMS.AMS5.L99.999.A.B02.U28.X19/20",

    "port": "CANL-051656",

    "purchase_order": "PO Test"

}

4. Disconnect a Cloud Access Port

It is possible to 

  • disconnect a standalone Cloud Access Port

  • disconnect a LAG Cloud Access Port where the LAG (Connection) and all Cloud Access Ports (Port Reservations) of the LAG are disconnected

  • remove a Cloud Access Port from a LAG

Step 14 Check cancellation policy for a Cloud Access Port / LAG

Make this request to understand when a Cloud Access Port will be disconnected and when billing will stop

curl --request GET \

  --url {SERVICE_URL}/connections/LAGNL-051655/cancellation-policy \

  --header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response shall be an http 200 OK and shall contain two values.

  • "decommission_at" value is the date on which  the Cloud Access Port service shall stop.

  • "charged_until" value is the date until which the Cloud Access Port is billed/charged.

Where the Cloud Access Port is a LAG, the cancellation policy is applicable to all Cloud Access Ports (Port Reservations) in the LAG.

{

    "charged_until": "2021-12-09",

    "decommission_at": "2021-12-09"

}

Step 15 Disconnect standalone or LAG Cloud Access Port

To disconnect a standalone or LAG Cloud Access Port, use the following request. In the case of a LAG all Cloud Access Ports in the LAG will be disconnected.

curl --location --request DELETE '{SERVICE_URL}/connections/CANL-051113' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is an http 202 Accepted with response body as below. The disconnect request has been accepted.

{

    "id": "CANL-051113",

    "mode": "standalone",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "decommission_requested",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

"billing_account": "A0087999",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 1000,

    "charged_until": "2021-12-10",

    "consuming_account": "A0087999",

    "contract_ref": "Owais Test",

    "decommission_at": "2021-12-10",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0087999",

"name": "CANL-051113",

"pop": "AMS7-A",

    "port_quantity": 1,

"port_reservations": [],

    "ports": [

        "CANL-051113"

    ],

    "product_offering": "503233.AMS7-A.S",

    "purchase_order": "PO Test",

    "role_assignments": [

        "af94ae93-c387-461f-2374-08d9b0f3961e",

        "f7f73ff8-f658-45d6-2376-08d9b0f3961e",

        "3c4b453b-f5a1-4435-2375-08d9b0f3961e"

    ],

    "speed": 1000

}

Note:

  • "state" has value "decommission-requested"

  • "charged_until" property is set to a date value until when the Cloud Access Port is billed.

  • "decommission_at" property is set with a value of the date on which the Cloud Access Port shall be disconnected.

To check the disconnect has completed, read the cloud access port using the request here:

curl --location --request GET '{SERVICE_URL}/connections/CAUK-051665' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' 

When the Cloud Access Port has been disconnected the above request shall return an HTTP 404 Not Found.

Step 16 Remove a Cloud Access Port from a LAG

To disconnect a Cloud Access Port from a LAG, use the following request. Note, you can only remove a Cloud Access Port from a LAG when it has at least two Cloud Access Ports. If a LAG has one Cloud Access Port only, then you should make the request described in the previous step.

curl --location --request DELETE '{SERVICE_URL}/port-reservations/CANL-051113' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}'

The response is an http 202 Accepted with response body as below. The disconnect request has been accepted.

{

    "id": "CANL-051113",

    "mode": "standalone",

    "outer_vlan_ethertypes": [

        "0x8100"

    ],

    "state": "decommission_requested",

    "vlan_types": [

        "dot1q",

        "qinq"

    ],

    "billing_account": "A0087999",

    "capacity_allocated": 0,

    "capacity_allocation_limit": 1000,

    "charged_until": "2021-12-10",

    "consuming_account": "A0087999",

    "contract_ref": "Owais Test",

    "decommission_at": "2021-12-10",

    "external_ref": "Ext Ref Test",

    "managing_account": "A0087999",

    "name": "CANL-051113",

    "pop": "AMS7-A",

    "port_quantity": 1,

    "port_reservations": [],

    "ports": [

        "CANL-051113"

    ],

    "product_offering": "503233.AMS7-A.S",

    "purchase_order": "PO Test",

    "role_assignments": [

        "af94ae93-c387-461f-2374-08d9b0f3961e",

        "f7f73ff8-f658-45d6-2376-08d9b0f3961e",

        "3c4b453b-f5a1-4435-2375-08d9b0f3961e"

    ],

    "speed": 1000

}

Note:

  • "state" has value "decommission-requested"

  • "charged_until" property is set to a date value until when the Cloud Access Port is billed.

  • "decommission_at" property is set with a value of the date on which the Cloud Access Port shall be disconnected.

To check the disconnect has completed, read the cloud access port using the request here:

curl --location --request GET '{SERVICE_URL}/connections/CAUK-051665' \

--header 'Authorization: Bearer {YOUR_ACCESS_TOKEN}' 

When the Cloud Access Port has been disconnected from the LAG the above request shall return an HTTP 404 Not Found.