Introduction
Use these endpoints to perform a service plan change.
Request Specifications
| Version | Header | Changes |
|---|---|---|
1 (Deprecated) |
X-API-VERSION=1 |
Initial Version |
2 (Deprecated) |
X-API-VERSION=2 |
No change |
3 |
X-API-VERSION=3 |
No change |
4 |
X-API-VERSION=4 |
No change |
5 |
X-API-VERSION=5 |
No change |
6 |
X-API-VERSION=6 |
Optional field |
7 |
X-API-VERSION=7 |
No change |
8 |
X-API-VERSION=8 |
Contact details are mandatory when ntdOption is set |
ALL |
ALL |
New fields added for FTTP and HFC access technologies to support September high speed plans |
ALL |
ALL |
New contact detail fields for NTD installation have been added |
API Version 6 and 7
Request Lifecycle
Changing a service’s plan and/or restoration SLA is a two step process. It allows you to do:
Plan Change |
You need to pass in new Plan (price may change based on new Plan and pricing changes of current SLA) |
SLA Change |
You need to pass in existing Plan, new SLA (price may change based on pricing changes of current Plan and new SLA) |
Plan Change plus SLA change |
You need to pass in new Plan, new SLA (price may change based on new Plan and new SLA) |
-
Create a service-plan-change-request resource, by sending a POST request to
/api/connect/services/plan-changes/requestwith the body of the request containing the serviceId, the planName , term, restorationSla (optional), ntdOption (when plan speed greater than 1000 MBit/s), and contact details if ntdOption is set. The response’s http status will be 201 with a blank response body. There will be a Location response header with a URL. This URL is where the request outcome can be obtained.-
If contact details have not been provided for API Version < 8 when ntdOption is set, we set the Order contact details. See Example
-
-
Make a GET request to the URL returned in 1. to retrieve the outcome of the request. While the request is in progress, the response’s http status will be 202. This means that the request has not finished yet, but will in a moment. If the request was successful a service-plan-change resource will be returned. If the request failed a 422 will be returned with the body containing details on why it failed in the standard error format.
POST Request
Verb |
POST |
URI |
/api/connect/services/plan-changes/request |
| Name | Description |
|---|---|
|
The OAuth bearer access token |
|
The version of the endpoint you are accessing |
| Path | Type | Description | Required |
|---|---|---|---|
|
|
The id of the service. |
Required |
|
|
The plan name. |
Required |
|
|
The plan term. |
Required |
|
|
The service restoration SLA |
|
|
|
The ntd option. |
Required for plans with speeds greater than 1000 MBit/s |
|
|
Contact name for NTD installation. |
Required when ntdOption is set, starting from version 8 onwards |
|
|
Contact phone for NTD installation. |
Required when ntdOption is set, starting from version 8 onwards |
|
|
Contact email for NTD installation. |
Required when ntdOption is set, starting from version 8 onwards |
POST Response
| Status Code | Meaning |
|---|---|
201 |
The request was created successfully |
401 |
Bearer token is missing or invalid |
404 |
You do not have permission to perform this task |
422 |
There are validation errors on the request you made. Check the response body to see what fields had issues. |
500 |
There was an unexpected error processing the request |
502 |
There was an unexpected error with one or more of the upstream services |
| Name | Description |
|---|---|
|
The URL of the service-plan-change-request resource |
GET Request
|
Note
|
The URI will be given to you in the Location header of the POST request of the Service Plan Change request. |
Verb |
GET |
URI |
/api/connect/services/plan-changes/requests/{id} |
Path Variable |
Purpose |
|
The id of the service-plan-change-request resource to poll for completion status |
| Name | Description |
|---|---|
|
The OAuth bearer access token |
|
The version of the endpoint you are accessing |
GET Response
| Status Code | Meaning |
|---|---|
200 |
The request is complete. The body contains the service-plan-change resource |
202 |
The request is in progress |
401 |
Bearer token is missing or invalid |
404 |
You are not authorised or The id (of the service-plan-change-request resource) provided does not exist |
422 |
The service-plan-change resource failed to be created. Check the response body to see why |
500 |
There was an unexpected error processing the request |
502 |
There was an unexpected error with one or more of the upstream services |
| Path | Type | Description |
|---|---|---|
|
|
The Connect identifier of the plan change request resource. |
|
|
The Connect identifier of the service resource. |
|
|
Service Restoration SLA fee applied for the service plan change. |
|
|
Name of the SLA. |
|
|
Applied charge for the addon type. |
|
|
Attributes of the addon type. Typically includes the sla name |
|
|
One time charge of the addon type. |
|
|
Currency of the addon type charge. |
|
|
Symbol of the addon type charge currency. |
|
|
Monthly recurring charge of the addon type. |
|
|
Currency of the monthly recurring charge. |
|
|
Symbol of the monthly recurring charge currency. |
|
|
Information of the service plan change. |
|
|
The source type of the connection (e.g., NBN). |
|
|
Access technology type (e.g., FTTP, FTTN). |
|
|
Name of the plan. |
|
|
Term of the plan. |
|
|
Download speed details. |
|
|
Download speed value. |
|
|
Unit of download speed (e.g., MBit/s). |
|
|
Upload speed details. |
|
|
Upload speed value. |
|
|
Unit of upload speed (e.g., MBit/s). |
|
|
Indicates whether an additional NTD is required. |
|
|
The reason for requiring an additional NTD, if applicable. |
|
|
Applied fee for the service plan change. |
|
|
Attributes of the changed plan. Typically includes a plan and a term |
|
|
One time charge for the changed plan. |
|
|
Currency of the one time charge. |
|
|
Symbol of the one time charge currency. |
|
|
Monthly recurring charge of the ordered plan. |
|
|
Currency of the monthly recurring charge. |
|
|
Symbol of the monthly recurring charge currency. |
|
|
NFAS Commitment fee for the service plan change if applied else null |
|
|
The date/time, including UTC offset, when service plan change requested |
|
|
Contact name for NTD installation if applicable |
|
|
Contact phone for NTD installation if applicable |
|
|
Contact email for NTD installation if applicable |
|
|
List of available NTD (Network Termination Device) options for the plan. |
|
|
NTD option type (e.g., 4_PORT_RESIDENTIAL). |
|
|
Whether this NTD option is recommended. |
|
|
Fee details for the NTD option. |
|
|
Attributes related to the NTD installation fee. |
|
|
The type of NTD installation fee (e.g., 4_PORT_RESIDENTIAL). |
|
|
One-time installation charge for the NTD option. |
|
|
Amount of the one-time NTD charge. |
|
|
Currency of the one-time charge. |
|
|
Symbol of the currency. |
|
|
Monthly recurring charge for the NTD option. |
|
|
Amount of the monthly recurring charge. |
|
|
Currency of the monthly recurring charge. |
|
|
Symbol of the currency. |
Webhook - ServicePlanChanged
The ServicePlanChanged notification is sent when a service plan change you have requested has been accepted by
the nbn, to find more information click here
Currently sent ServiceModified notification for a successful plan change request is deprecated and will be removed shortly. Please move to dedicated ServicePlanChanged webhook event.
Webhook - ServicePlanChangeRejected
The ServicePlanChangeRejected notification is sent when a service plan change you have requested has been rejected by
the nbn, to find more information click here
Currently sent ServiceModificationRejected notification for a failed plan change request is deprecated and will be removed shortly. Please move to dedicated ServicePlanChangeRejected webhook event.
Webhook - ServiceRestorationSlaChanged
The ServiceRestorationSlaChanged notification is sent when a service restoration sla change you have requested has been accepted by
the nbn, to find more information click here
API Version 8 - Examples
Successful Request
Plan Change only
A service-plan-change-request resource is created by sending a POST request to /api/connect/services/plan-changes/request.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 196
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/40",
"term" : 1,
"restorationSla" : null,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 237
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Hyperfast 2000/200",
"term" : 1,
"restorationSla" : null,
"ntdOption" : "1_PORT",
"contactName" : "Bruce Wayne",
"contactPhone" : "0456789456",
"contactEmail" : "bruce@wayne.com"
}
If all required fields were given, then the response to the request will have:
-
a http status of 201
-
a
Locationheader with the URI of the service-plan-change-request resource.
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Once you have the URI from the Location header, poll that URI every so often by making a GET request. While the plan
change is in progress, the GET request’s response will have a http status of 202. Keep polling the URL until it finishes,
once the request is completed successfully the GET request’s response will have a http status of 200.
|
Note
|
Please keep the polling to a sensible rate. |
GET /api/connect/services/plan-changes/requests/2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1264
{
"id" : 2,
"serviceId" : 1500,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1766
{
"id" : 12,
"serviceId" : 1600,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Hyperfast 2000/200",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Hyperfast 2000/200",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "115.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ {
"option" : "4_PORT_RESIDENTIAL",
"recommended" : false,
"fee" : {
"attributes" : {
"ntd_installation_fee" : "4_PORT_RESIDENTIAL"
},
"oneTimeCharge" : {
"amount" : "100.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
} ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : "Bruce Wayne",
"contactPhone" : "0456789456",
"contactEmail" : "bruce@wayne.com"
}
SLA Change Only
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/20",
"term" : 1,
"restorationSla" : "Enhanced - 12",
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
GET /api/connect/services/plan-changes/requests/8 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1273
{
"id" : 8,
"serviceId" : 2300,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/20",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/20",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "65.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Enhanced - 8",
"fee" : {
"attributes" : {
"sla" : "Enhanced - 8"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "28.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Plan Plus SLA Change
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/40",
"term" : 1,
"restorationSla" : "Enhanced - 12",
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
GET /api/connect/services/plan-changes/requests/9 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1273
{
"id" : 9,
"serviceId" : 2400,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Enhanced - 8",
"fee" : {
"attributes" : {
"sla" : "Enhanced - 8"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "28.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Plan Change NFAS Commitment Fee Applied
GET /api/connect/services/plan-changes/requests/10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1580
{
"id" : 10,
"serviceId" : 1200,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : {
"attributes" : {
"nfas_commitment_fee" : true
},
"oneTimeCharge" : {
"amount" : "25.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Invalid Request
If the request is invalid for any reason, a http status of 422 is returned and the body of the
response will list the problems with the request.
This example is of submitting a service plan change request with an invalid planName field.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 189
Host: 360-api.superloop.com
{
"serviceId" : 1500,
"planName" : "Plan-Name",
"term" : 1,
"restorationSla" : null,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 396
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.plan.change.plan.name.invalid",
"message" : "The Plan is unavailable",
"object" : "ServicePlanChange",
"field" : "planName",
"rejectedValue" : "Plan-Name"
} ],
"timestamp" : "2025-10-29T04:13:00.253474289Z"
}
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1500,
"planName" : "Home Hyperfast 2000/200",
"term" : 1,
"restorationSla" : null,
"ntdOption" : "4_PORT",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 961
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "method.argument.not.valid",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.not.blank.if.another.field.not.blank",
"message" : "must not be blank when ntdOption has a value",
"object" : "connectRequestServicePlanChangeCommandV8",
"field" : "contactEmail",
"rejectedValue" : null
}, {
"code" : "constraints.not.blank.if.another.field.not.blank",
"message" : "must not be blank when ntdOption has a value",
"object" : "connectRequestServicePlanChangeCommandV8",
"field" : "contactPhone",
"rejectedValue" : null
}, {
"code" : "constraints.not.blank.if.another.field.not.blank",
"message" : "must not be blank when ntdOption has a value",
"object" : "connectRequestServicePlanChangeCommandV8",
"field" : "contactName",
"rejectedValue" : null
} ],
"timestamp" : "2025-10-29T04:13:02.71645474Z"
}
Resource failed to be created
If the service-plan-change resource failed to be created, a http status of 422 is returned and the body of the
response will list the reason why
GET /api/connect/services/plan-changes/requests/3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 8
Host: 360-api.superloop.com
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 403
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.service.plan.change.status.in.error",
"message" : "Plan is no longer available",
"object" : "ServicePlanChange",
"field" : "status",
"rejectedValue" : "IN_ERROR"
} ],
"timestamp" : "2025-10-29T04:13:16.332483065Z"
}
API Version 6 and 7 - Examples
Successful Request
Plan Change only
A service-plan-change-request resource is created by sending a POST request to /api/connect/services/plan-changes/request.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 196
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/40",
"term" : 1,
"restorationSla" : null,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Hyperfast 2000/200",
"term" : 1,
"restorationSla" : null,
"ntdOption" : "1_PORT",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
If all required fields were given, then the response to the request will have:
-
a http status of 201
-
a
Locationheader with the URI of the service-plan-change-request resource.
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Once you have the URI from the Location header, poll that URI every so often by making a GET request. While the plan
change is in progress, the GET request’s response will have a http status of 202. Keep polling the URL until it finishes,
once the request is completed successfully the GET request’s response will have a http status of 200.
|
Note
|
Please keep the polling to a sensible rate. |
GET /api/connect/services/plan-changes/requests/2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1264
{
"id" : 2,
"serviceId" : 1500,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1783
{
"id" : 11,
"serviceId" : 1600,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Hyperfast 2000/200",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Hyperfast 2000/200",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "115.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ {
"option" : "4_PORT_RESIDENTIAL",
"recommended" : false,
"fee" : {
"attributes" : {
"ntd_installation_fee" : "4_PORT_RESIDENTIAL"
},
"oneTimeCharge" : {
"amount" : "100.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
} ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : "Order Contact Name",
"contactPhone" : "0400000000",
"contactEmail" : "order@contactemail.com.au"
}
SLA Change Only
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/20",
"term" : 1,
"restorationSla" : "Enhanced - 12",
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
GET /api/connect/services/plan-changes/requests/8 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1273
{
"id" : 8,
"serviceId" : 2300,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/20",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/20",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "65.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Enhanced - 8",
"fee" : {
"attributes" : {
"sla" : "Enhanced - 8"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "28.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Plan Plus SLA Change
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 207
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/40",
"term" : 1,
"restorationSla" : "Enhanced - 12",
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
GET /api/connect/services/plan-changes/requests/9 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1273
{
"id" : 9,
"serviceId" : 2400,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : null,
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Enhanced - 8",
"fee" : {
"attributes" : {
"sla" : "Enhanced - 8"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "28.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Plan Change NFAS Commitment Fee Applied
GET /api/connect/services/plan-changes/requests/10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1580
{
"id" : 10,
"serviceId" : 1200,
"plan" : {
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"plan" : "Home Fast 100/40",
"term" : "1",
"speedDown" : {
"speed" : 100,
"unit" : "MBit/s"
},
"speedUp" : {
"speed" : 20,
"unit" : "MBit/s"
},
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"planFee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"nfasFee" : {
"attributes" : {
"nfas_commitment_fee" : true
},
"oneTimeCharge" : {
"amount" : "25.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
},
"ntdOptions" : [ ]
},
"sla" : {
"sla" : "Standard",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
Invalid Request
If the request is invalid for any reason, a http status of 422 is returned and the body of the
response will list the problems with the request.
This example is of submitting a service plan change request with an invalid planName field.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 189
Host: 360-api.superloop.com
{
"serviceId" : 1500,
"planName" : "Plan-Name",
"term" : 1,
"restorationSla" : null,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 396
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.plan.change.plan.name.invalid",
"message" : "The Plan is unavailable",
"object" : "ServicePlanChange",
"field" : "planName",
"rejectedValue" : "Plan-Name"
} ],
"timestamp" : "2025-10-29T04:12:10.252998463Z"
}
Resource failed to be created
If the service-plan-change resource failed to be created, a http status of 422 is returned and the body of the
response will list the reason why
GET /api/connect/services/plan-changes/requests/3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 403
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.service.plan.change.status.in.error",
"message" : "Plan is no longer available",
"object" : "ServicePlanChange",
"field" : "status",
"rejectedValue" : "IN_ERROR"
} ],
"timestamp" : "2025-10-29T04:12:24.590062775Z"
}
API Version 1, 2, 3, 4 and 5
Request Lifecycle
Changing a service’s plan is a two step process as follows:
-
Create a service-plan-change-request resource, by sending a POST request to
/api/connect/services/plan-changes/requestwith the body of the request containing the service id, the plan name and term. The response’s http status will be 201 with a blank response body. There will be a Location response header with a URL. This URL is where the request outcome can be obtained. -
Make a GET request to the URL returned in 1. to retrieve the outcome of the request. While the request is in progress, the response’s http status will be 202. This means that the request has not finished yet, but will in a moment. If the request was successful a service-plan-change resource will be returned. If the request failed a 422 will be returned with the body containing details on why it failed in the standard error format.
POST Request
Verb |
POST |
URI |
/api/connect/services/plan-changes/request |
| Name | Description |
|---|---|
|
The OAuth bearer access token |
|
The version of the endpoint you are accessing |
| Path | Type | Description | Required |
|---|---|---|---|
|
|
The id of the service. |
Required |
|
|
The plan name. |
Required |
|
|
The plan term. |
Required |
|
|
The ntd option. |
|
|
|
Contact name for NTD installation if applicable |
|
|
|
Contact phone for NTD installation if applicable |
|
|
|
Contact email for NTD installation if applicable |
POST Response
| Status Code | Meaning |
|---|---|
201 |
The request was created successfully |
401 |
Bearer token is missing or invalid |
404 |
You do not have permission to perform this task |
422 |
There are validation errors on the request you made. Check the response body to see what fields had issues. |
500 |
There was an unexpected error processing the request |
502 |
There was an unexpected error with one or more of the upstream services |
| Name | Description |
|---|---|
|
The URL of the service-plan-change-request resource |
GET Request
|
Note
|
The URI will be given to you in the Location header of the POST request of the Service Plan Change request. |
Verb |
GET |
URI |
/api/connect/services/plan-changes/requests/{id} |
Path Variable |
Purpose |
|
The id of the service-plan-change-request resource to poll for completion status |
| Name | Description |
|---|---|
|
The OAuth bearer access token |
|
The version of the endpoint you are accessing |
GET Response
| Status Code | Meaning |
|---|---|
200 |
The request is complete. The body contains the service-plan-change resource |
202 |
The request is in progress |
401 |
Bearer token is missing or invalid |
404 |
You are not authorised or The id (of the service-plan-change-request resource) provided does not exist |
422 |
The service-plan-change resource failed to be created. Check the response body to see why |
500 |
There was an unexpected error processing the request |
502 |
There was an unexpected error with one or more of the upstream services |
| Path | Type | Description |
|---|---|---|
|
|
The Connect identifier of the plan change request resource. |
|
|
The Connect identifier of the service resource. |
|
|
List of additional fees applied for the service plan change. |
|
|
Name of the addon type. |
|
|
Applied charge for the addon type. |
|
|
Attributes of the addon type. Varies depending on the addon type. For instance, an SLA addon type would include the sla name |
|
|
One time charge of the addon type. |
|
|
Currency of the addon type charge. |
|
|
Symbol of the addon type charge currency. |
|
|
Monthly recurring charge of the addon type. |
|
|
Currency of the monthly recurring charge. |
|
|
Symbol of the monthly recurring charge currency. |
|
|
Applied fee for the service plan change. |
|
|
Source type of the service (e.g., NBN). |
|
|
Access technology used (e.g., FTTP, FTTN). |
|
|
Indicates whether an additional NTD is required. |
|
|
The reason for requiring an additional NTD, if applicable. |
|
|
Attributes of the changed plan. Typically includes a plan and a term |
|
|
One time charge for the changed plan. |
|
|
Currency of the one time charge. |
|
|
Symbol of the one time charge currency. |
|
|
Monthly recurring charge of the ordered plan. |
|
|
Currency of the monthly recurring charge. |
|
|
Symbol of the monthly recurring charge currency. |
|
|
The date/time, including UTC offset, when service plan change requested |
Webhook - ServicePlanChanged
The ServicePlanChanged notification is sent when a service plan change you have requested has been accepted by
the nbn, to find more information click here
Currently sent ServiceModified notification for a successful plan change request is deprecated and will be removed shortly. Please move to dedicated ServicePlanChanged webhook event.
Webhook - ServicePlanChangeRejected
The ServicePlanChangeRejected notification is sent when a service plan change you have requested has been rejected by
the nbn, to find more information click here
Currently sent ServiceModificationRejected notification for a failed plan change request is deprecated and will be removed shortly. Please move to dedicated ServicePlanChangeRejected webhook event.
API Version 1, 2, 3, 4 and 5 - Examples
Successful Request
Plan Change only
A service-plan-change-request resource is created by sending a POST request to /api/connect/services/plan-changes/request.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Content-Length: 169
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Fast 100/40",
"term" : 1,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Content-Length: 210
Host: 360-api.superloop.com
{
"serviceId" : 1600,
"planName" : "Home Hyperfast 2000/200",
"term" : 1,
"ntdOption" : "1_PORT",
"contactName" : "Bruce Wayne",
"contactPhone" : "0456789456",
"contactEmail" : "bruce@wayne.com"
}
If all required fields were given, then the response to the request will have:
-
a http status of 201
-
a
Locationheader with the URI of the service-plan-change-request resource.
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/requests/13
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Once you have the URI from the Location header, poll that URI every so often by making a GET request. While the plan
change is in progress, the GET request’s response will have a http status of 202. Keep polling the URL until it finishes,
once the request is completed successfully the GET request’s response will have a http status of 200.
|
Note
|
Please keep the polling to a sensible rate. |
GET /api/connect/services/plan-changes/requests/2 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Host: 360-api.superloop.com
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1017
{
"id" : 2,
"serviceId" : 1500,
"additionalFees" : [ {
"addOnTypeName" : "SLA",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
} ],
"fee" : {
"attributes" : {
"plan" : "Home Fast 100/40",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "73.00",
"currency" : "AUD",
"symbol" : "$"
},
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"ntdOptions" : [ ]
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 200 OK
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 1529
{
"id" : 11,
"serviceId" : 1600,
"additionalFees" : [ {
"addOnTypeName" : "SLA",
"fee" : {
"attributes" : {
"sla" : "Standard"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
} ],
"fee" : {
"attributes" : {
"plan" : "Home Hyperfast 2000/200",
"term" : "1"
},
"oneTimeCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "115.00",
"currency" : "AUD",
"symbol" : "$"
},
"sourceType" : "NBN",
"accessTechnology" : "FTTP",
"requiresAdditionalNtd" : null,
"requiresAdditionalNtdReason" : null,
"ntdOptions" : [ {
"option" : "4_PORT_RESIDENTIAL",
"recommended" : false,
"fee" : {
"attributes" : {
"ntd_installation_fee" : "4_PORT_RESIDENTIAL"
},
"oneTimeCharge" : {
"amount" : "100.00",
"currency" : "AUD",
"symbol" : "$"
},
"monthlyRecurringCharge" : {
"amount" : "0.00",
"currency" : "AUD",
"symbol" : "$"
}
}
} ]
},
"requestedOn" : "2020-07-01T04:32:58Z",
"contactName" : "Order Contact Name",
"contactPhone" : "0400000000",
"contactEmail" : "order@contactemail.com.au"
}
Invalid Request
If the request is invalid for any reason, a http status of 422 is returned and the body of the
response will list the problems with the request.
This example is of submitting a service plan change request with an invalid planName field.
POST /api/connect/services/plan-changes/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Content-Length: 162
Host: 360-api.superloop.com
{
"serviceId" : 1500,
"planName" : "Plan-Name",
"term" : 1,
"ntdOption" : null,
"contactName" : null,
"contactPhone" : null,
"contactEmail" : null
}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 396
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.plan.change.plan.name.invalid",
"message" : "The Plan is unavailable",
"object" : "ServicePlanChange",
"field" : "planName",
"rejectedValue" : "Plan-Name"
} ],
"timestamp" : "2025-10-29T04:11:40.242296698Z"
}
Resource failed to be created
If the service-plan-change resource failed to be created, a http status of 422 is returned and the body of the
response will list the reason why
GET /api/connect/services/plan-changes/requests/3 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Host: 360-api.superloop.com
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
Content-Length: 403
{
"httpStatusCode" : 422,
"type" : "client.validation",
"code" : "validation",
"message" : "Validation error",
"apiSubErrors" : [ {
"code" : "constraints.service.plan.change.status.in.error",
"message" : "Plan is no longer available",
"object" : "ServicePlanChange",
"field" : "status",
"rejectedValue" : "IN_ERROR"
} ],
"timestamp" : "2025-10-29T04:11:44.869512546Z"
}