Introduction

Use these endpoints to get the service’s plan and/or restoration SLA change options for a service.

Request Lifecycle

Obtaining the service plan change options (service-plan-change-options resource) for a service is a two step process as follows:

  1. Create a service-plan-changes-options-request resource, by sending a POST request to /api/connect/services/plan-changes/options/request with the body of the request containing the service id. 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.

  2. 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-options 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.

Request Specifications

Table 1. API Versions
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

Plan change options response updated

7

X-API-VERSION=7

No change

API Version 6 and 7

POST Request

Table 2. POST Request

Verb

POST

URI

/api/connect/services/plan-changes/options/request

Table 3. POST HTTP Request Headers
Name Description

Authorization

The OAuth bearer access token

X-API-VERSION

The version of the endpoint you are accessing

Table 4. POST Request Body Fields
Path Type Description Required

serviceId

Number

The id of the service.

Required

POST Response

Table 5. POST HTTP Status Codes
Status Code Meaning

201

The request was created successfully

404

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

Table 6. POST HTTP Response Headers
Name Description

Location

The URL of the service-plan-change-options-request resource

GET Request

Note
The URI will be given to you in the Location header of the POST request.
Table 7. GET Request

Verb

GET

URI

/api/connect/services/plan-changes/options/requests/{id}

Table 8. GET Request Path Variables

Path Variable

Purpose

id

The id of the service-plan-change-options-request resource. This was generated by the POST request

Table 9. GET HTTP Request Headers
Name Description

Authorization

The OAuth bearer access token

X-API-VERSION

The version of the endpoint you are accessing

GET Response

Table 10. GET HTTP Status Codes
Status Code Meaning

200

The request is complete. The body contains the service-plan-change-options resource

202

The request is in progress

401

You are not authorized to make this request

404

You are not authorised or The id (of the service-plan-change-options-request resource) provided does not exist

422

The service-plan-change-options 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

Table 11. GET Response Body Fields
Path Type Description

plans

Array

List of fees for the plans

plans.[].plan

String

Name of the plan.

plans.[].term

String

Term of the plan.

plans.[].planFee

Object

Fee of the plan.

plans.[].planFee.attributes

Object

Attributes of the plan. Typically includes a plan and a term

plans.[].planFee.oneTimeCharge.amount

String

One time charge for the plan.

plans.[].planFee.oneTimeCharge.currency

String

Currency of the one time charge.

plans.[].planFee.oneTimeCharge.symbol

String

Symbol of the one time charge currency.

plans.[].planFee.monthlyRecurringCharge.amount

String

Monthly recurring charge of the plan.

plans.[].planFee.monthlyRecurringCharge.currency

String

Currency of the monthly recurring charge.

plans.[].planFee.monthlyRecurringCharge.symbol

String

Symbol of the monthly recurring charge currency.

plans.[].nfasFee

Object

NFAS Commitment Fee of the plan if applies else null

plans.[].nfasFee.attributes

Object

Attributes of the NFAS Commitment fee.

plans.[].nfasFee.oneTimeCharge.amount

String

One time charge of the NFAS Commitment fee.

plans.[].nfasFee.oneTimeCharge.currency

String

Currency of the NFAS Commitment fee.

plans.[].nfasFee.oneTimeCharge.symbol

String

Symbol of the NFAS Commitment fee currency.

plans.[].nfasFee.monthlyRecurringCharge.amount

String

Monthly recurring charge of theN FAS Commitment fee.

plans.[].nfasFee.monthlyRecurringCharge.currency

String

Currency of the monthly recurring charge.

plans.[].nfasFee.monthlyRecurringCharge.symbol

String

Symbol of the monthly recurring charge currency.

slas

Array

List of Service Restoration SLA fees will be applied for the service plan change

slas.[].sla

String

Name of the SLA.

slas.[].fee

Object

Fee for the addon type.

slas.[].fee.attributes

Object

Attributes of the addon type. Typically includes the sla name

slas.[].fee.oneTimeCharge.amount

String

One time charge of the addon type.

slas.[].fee.oneTimeCharge.currency

String

Currency of the addon type charge.

slas.[].fee.oneTimeCharge.symbol

String

Symbol of the addon type charge currency.

slas.[].fee.monthlyRecurringCharge.amount

String

Monthly recurring charge of the addon type.

slas.[].fee.monthlyRecurringCharge.currency

String

Currency of the monthly recurring charge.

slas.[].fee.monthlyRecurringCharge.symbol

String

Symbol of the monthly recurring charge currency.

API Version 6 and 7 - Examples

Successful Request

A service-plan-change-options-request resource is created by sending a POST request to /api/connect/services/plan-changes/options/request.

POST Request
POST /api/connect/services/plan-changes/options/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 24
Host: 360-api.superloop.com

{
  "serviceId" : 1200
}

If all required fields were given, then the response to the request will have:

  1. a http status of 201

  2. a Location header with the URI of the service-plan-change-options-request resource.

Successful POST Response
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/options/requests/2d03f6b7-8932-496a-a8a2-6c6f9f8e1da7
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 determination of the options 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 Request
GET /api/connect/services/plan-changes/options/requests/2259b05a-7b8c-4887-a193-0a37087a3988 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
Successful GET Response
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: 7173

{
  "plans" : [ {
    "plan" : "Home Fast 25/5",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Fast 25/5",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "42.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Fast 25/10",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Fast 25/10",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "42.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Fast 50/20",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Fast 50/20",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "50.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Fast 100/40",
    "term" : "1",
    "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" : "$"
      }
    }
  }, {
    "plan" : "Home Superfast 250/100",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Superfast 250/100",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "112.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Superfast 500/200",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Superfast 500/200",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "145.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Ultrafast 1000/400",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Ultrafast 1000/400",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "200.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  }, {
    "plan" : "Home Fast 12/1",
    "term" : "1",
    "planFee" : {
      "attributes" : {
        "plan" : "Home Fast 12/1",
        "term" : "1"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "25.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    },
    "nfasFee" : null
  } ],
  "slas" : [ {
    "sla" : "Standard",
    "fee" : {
      "attributes" : {
        "sla" : "Standard"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 12",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 12"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "17.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 12 (24/7)",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 12 (24/7)"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "45.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 8",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 8"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "28.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 8 (24/7)",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 8 (24/7)"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "62.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 6",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 6"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "37.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 6 (24/7)",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 6 (24/7)"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "73.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 4",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 4"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "45.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  }, {
    "sla" : "Enhanced - 4 (24/7)",
    "fee" : {
      "attributes" : {
        "sla" : "Enhanced - 4 (24/7)"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "84.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  } ]
}

Once you have a list of available options you can request to change a service’s plan and/or restoration SLA by choosing one option and making a request with the service id, plan name, term and restoration SLA (optional).

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 options request, where a plan change is not available.

POST Request
POST /api/connect/services/plan-changes/options/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Content-Length: 24
Host: 360-api.superloop.com

{
  "serviceId" : 2100
}
POST Response with validation errors
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: 415

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.nbn.traffic.class.required",
    "message" : "nbn TC4 Technology Type attribute is required",
    "object" : "ServicePlanChange",
    "field" : "nbnTrafficClass",
    "rejectedValue" : null
  } ],
  "timestamp" : "2025-05-26T05:51:09.762398185Z"
}

Resource failed to be created

If the service-plan-change-options resource failed to be created, a http status of 422 is returned and the body of the response will list the reason why

GET Request
GET /api/connect/services/plan-changes/options/requests/3159b05a-7b8c-4887-a193-0a37087a3988 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 7
Host: 360-api.superloop.com
GET Response with validation errors
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: 447

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.service.plan.change.options.request.in.error",
    "message" : "The given data was invalid",
    "object" : "ServicePlanChangeOptions",
    "field" : "request",
    "rejectedValue" : "3159b05a-7b8c-4887-a193-0a37087a3988"
  } ],
  "timestamp" : "2025-05-26T05:51:12.165550418Z"
}

Upstream Service Unavailable

If one of the services that Connect API uses for getting service plan change options is down or unreachable, Connect API will return a http status of 422.

GET Response with Gateway Error
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: 452

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.service.plan.change.options.request.in.error",
    "message" : "getService to Nbn Portal failed",
    "object" : "ServicePlanChangeOptions",
    "field" : "request",
    "rejectedValue" : "94f14009-9ede-460d-b2c7-9f07e02d12be"
  } ],
  "timestamp" : "2025-05-26T05:51:15.268158484Z"
}

API Version 1, 2, 3, 4 and 5

POST Request

Table 12. POST Request

Verb

POST

URI

/api/connect/services/plan-changes/options/request

Table 13. POST HTTP Request Headers
Name Description

Authorization

The OAuth bearer access token

X-API-VERSION

The version of the endpoint you are accessing

Table 14. POST Request Body Fields
Path Type Description Required

serviceId

Number

The id of the service.

Required

POST Response

Table 15. POST HTTP Status Codes
Status Code Meaning

201

The request was created successfully

404

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

Table 16. POST HTTP Response Headers
Name Description

Location

The URL of the service-plan-change-options-request resource

GET Request

Note
The URI will be given to you in the Location header of the POST request.
Table 17. GET Request

Verb

GET

URI

/api/connect/services/plan-changes/options/requests/{id}

Table 18. GET Request Path Variables

Path Variable

Purpose

id

The id of the service-plan-change-options-request resource. This was generated by the POST request

Table 19. GET HTTP Request Headers
Name Description

Authorization

The OAuth bearer access token

X-API-VERSION

The version of the endpoint you are accessing

GET Response

Table 20. GET HTTP Status Codes
Status Code Meaning

200

The request is complete. The body contains the service-plan-change-options resource

202

The request is in progress

401

You are not authorized to make this request

404

You are not authorised or The id (of the service-plan-change-options-request resource) provided does not exist

422

The service-plan-change-options 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

Table 21. GET Response Body Fields
Path Type Description

additionalFees

Array

List of additional fees will be applied for the service plan change

additionalFees.[].addOnTypeName

String

Name of the addon type.

additionalFees.[].fee

Object

Fee for the addon type.

additionalFees.[].fee.attributes

Object

Attributes of the addon type. Varies depending on the addon type. For instance, an SLA addon type would include the sla name

additionalFees.[].fee.oneTimeCharge.amount

String

One time charge of the addon type.

additionalFees.[].fee.oneTimeCharge.currency

String

Currency of the addon type charge.

additionalFees.[].fee.oneTimeCharge.symbol

String

Symbol of the addon type charge currency.

additionalFees.[].fee.monthlyRecurringCharge.amount

String

Monthly recurring charge of the addon type.

additionalFees.[].fee.monthlyRecurringCharge.currency

String

Currency of the monthly recurring charge.

additionalFees.[].fee.monthlyRecurringCharge.symbol

String

Symbol of the monthly recurring charge currency.

fees

Array

List of fees for the plans

fees.[].attributes

Object

Attributes of the plan. Typically includes a plan and a term

fees.[].oneTimeCharge.amount

String

One time charge for the plan.

fees.[].oneTimeCharge.currency

String

Currency of the one time charge.

fees.[].oneTimeCharge.symbol

String

Symbol of the one time charge currency.

fees.[].monthlyRecurringCharge.amount

String

Monthly recurring charge of the plan.

fees.[].monthlyRecurringCharge.currency

String

Currency of the monthly recurring charge.

fees.[].monthlyRecurringCharge.symbol

String

Symbol of the monthly recurring charge currency.

API Version 1, 2, 3, 4 and 5 - Examples

Successful Request

A service-plan-change-options-request resource is created by sending a POST request to /api/connect/services/plan-changes/options/request.

POST Request
POST /api/connect/services/plan-changes/options/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Content-Length: 24
Host: 360-api.superloop.com

{
  "serviceId" : 1200
}

If all required fields were given, then the response to the request will have:

  1. a http status of 201

  2. a Location header with the URI of the service-plan-change-options-request resource.

Successful POST Response
HTTP/1.1 201 Created
Location: /api/connect/services/plan-changes/options/requests/cfa3ae42-c843-4062-8f3c-0c9094985425
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 determination of the options 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 Request
GET /api/connect/services/plan-changes/options/requests/2259b05a-7b8c-4887-a193-0a37087a3988 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Host: 360-api.superloop.com
Successful GET Response
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: 2911

{
  "fees" : [ {
    "attributes" : {
      "plan" : "Home Fast 25/5",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "42.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Fast 25/10",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "42.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Fast 50/20",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "50.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Fast 100/40",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "73.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Superfast 250/100",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "112.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Superfast 500/200",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "145.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Ultrafast 1000/400",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "200.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  }, {
    "attributes" : {
      "plan" : "Home Fast 12/1",
      "term" : "1"
    },
    "oneTimeCharge" : {
      "amount" : "0.00",
      "currency" : "AUD",
      "symbol" : "$"
    },
    "monthlyRecurringCharge" : {
      "amount" : "25.00",
      "currency" : "AUD",
      "symbol" : "$"
    }
  } ],
  "additionalFees" : [ {
    "addOnTypeName" : "SLA",
    "fee" : {
      "attributes" : {
        "sla" : "Standard"
      },
      "oneTimeCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      },
      "monthlyRecurringCharge" : {
        "amount" : "0.00",
        "currency" : "AUD",
        "symbol" : "$"
      }
    }
  } ]
}

Once you have a list of available options you can request a service plan change by choosing one option and making a request with the service id, plan name and term.

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 options request, where a plan change is not available.

POST Request
POST /api/connect/services/plan-changes/options/request HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Content-Length: 24
Host: 360-api.superloop.com

{
  "serviceId" : 2100
}
POST Response with validation errors
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: 415

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.nbn.traffic.class.required",
    "message" : "nbn TC4 Technology Type attribute is required",
    "object" : "ServicePlanChange",
    "field" : "nbnTrafficClass",
    "rejectedValue" : null
  } ],
  "timestamp" : "2025-05-26T05:50:57.571160997Z"
}

Resource failed to be created

If the service-plan-change-options resource failed to be created, a http status of 422 is returned and the body of the response will list the reason why

GET Request
GET /api/connect/services/plan-changes/options/requests/3159b05a-7b8c-4887-a193-0a37087a3988 HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer **token**
X-API-VERSION: 5
Host: 360-api.superloop.com
GET Response with validation errors
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: 447

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.service.plan.change.options.request.in.error",
    "message" : "The given data was invalid",
    "object" : "ServicePlanChangeOptions",
    "field" : "request",
    "rejectedValue" : "3159b05a-7b8c-4887-a193-0a37087a3988"
  } ],
  "timestamp" : "2025-05-26T05:51:00.717010996Z"
}

Upstream Service Unavailable

If one of the services that Connect API uses for getting service plan change options is down or unreachable, Connect API will return a http status of 422.

GET Response with Gateway Error
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: 452

{
  "httpStatusCode" : 422,
  "type" : "client.validation",
  "code" : "validation",
  "message" : "Validation error",
  "apiSubErrors" : [ {
    "code" : "constraints.service.plan.change.options.request.in.error",
    "message" : "getService to Nbn Portal failed",
    "object" : "ServicePlanChangeOptions",
    "field" : "request",
    "rejectedValue" : "94f14009-9ede-460d-b2c7-9f07e02d12be"
  } ],
  "timestamp" : "2025-05-26T05:51:01.957016306Z"
}