Skip to content

Fibre Cafe : Tenant API (1.17)

Introduction

The Fibre Cafe is a scalable, unified platform to support L2C provisioning, in-life modification/cease and T2R trouble resolution between communication providers (CP) and network operators or aggregators.

CPs are known as 'tenants' on the Fibre Cafe and communicate with this API - the Fibre Cafe's Tenant API. The network operators and aggregators providing the underlying services are known as 'suppliers'.

The Fibre Cafe will route requests from this API to appropriate supplier(s). Tenants will be configured to use suppliers based on requirements and commercial agreements.

Initial availability and appointing requests are synchronous. Ordering requests are asynchronous with confirmation and updates via KCIs (Keep Customer Informed).

Note: Order updates (KCIs) will be sent to the Tenant Updates API which the tenant must implement. __

© 2022-2026 Strategic Imperatives

Download OpenAPI description
Languages
Servers
https://prod.fibregateway.com/v1

Address Lookup

Used to look up address identifiers and details for a given postal code or UPRN.

This is not implemented by all suppliers - it is primarily provided to assist with NAD/District Code lookup for suppliers operating on the Openreach network.

This follows the concepts in TMF673 - Address Management API.

Operations

Service Availability

Retrieve what services (if any) the supplier has available for a given address.

This follows the concepts in TMF645 - Service Qualification API and TMF673 - Address Management API.

Operations

Quote Management

Create and manage a quote to provide service at requested sites. This follows the concepts in TMF648 - Quote Management API.

Operations

Appointment Management

Retrieve and reserve appointments for installing or maintaining a service at a given address.

This follows the concepts in TMF646 - Appointment API.

Operations

Order Management

Create and manage an order to provide, cease or modify a service at a given address.

This follows the concepts in TMF641 - Service Ordering Management API.

Operations

Create an order for provide, cease or modify service.

Request

This endpoint can be called to place a order with a supplier to provide, cease or modify a service.

The Fibre Cafe will validate the request and generate an order number which is returned. If the order is rejected immediately then a 400 code will be returned with reason(s) for the rejection in the response.

The order will then be sent to the supplier for processing and further updates will be sent via KCIs - this could include a rejection if the order does not meet supplier validation/processing rules. Once the order is acknowledged, the supplier may assign their own order number which will be returned in the KCI.

Security
oauth2
Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
One of:

Represents an order for new service(s) at a particular address.

orderTypestring(ProvideOrderType)required

The type of order - new, (re)start, takeover, transfer or swap

Enum"NEW""START""TAKEOVER""TRANSFER""SWAP"
supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
addressobject(AddressIdentifier)required

Address identifier for location including type of identifier.

address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

Example: "A00000031882"
address.​typestring^[A-Za-z]{1,15}$required

Type of address identifier e.g. UPRN, NAD, DistrictCode, ROBT

Example: "NAD"
address.​additionalIdentifiersArray of objects(SecondaryAddressIdentifier)non-empty

Additional address identifiers where available/required for subsequent operations

serviceOrderItemobject(ServiceOrderItem)required

Order for a service that the supplier provides at the selected address.

serviceOrderItem.​serviceSpecificationobject(ServiceSpecification)required

Details of a service the supplier provides at the selected address.

serviceOrderItem.​serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

Example: "ftthl2r"
serviceOrderItem.​serviceCharacteristicsArray of objects(ServiceCharacteristic)>= 0 itemsrequired

List of service characteristics for the service order item - e.g. for FTTH service

  • LINE_PROFILE
  • REMOTE_ID
  • AUTHENTICATION_AGENT (DHCPRelayAgent, PPPIntermediateAgent, None)
  • CARE_LEVEL
serviceOrderItem.​serviceCharacteristics[].​namestring[ 1 .. 50 ] charactersrequired

Name of the service characteristic

Example: "LINE_PROFILE"
serviceOrderItem.​serviceCharacteristics[].​valuestring[ 1 .. 50 ] charactersrequired

Value for this characteristic

Example: "1G1G"
primaryContactobject(Contact)required

Represents a contact available at the given address.

primaryContact.​namestring[ 1 .. 100 ] charactersrequired

Contact name

Example: "John Smith"
primaryContact.​emailstring^\S{1,64}@\S{2,254}$

Contact email address (if available)

Example: "john@smith.com"
primaryContact.​phoneNumberstring^\+?[\d\s\-#]{8,50}$required

Contact phone number

Example: "01234 567890"
secondaryContactobject(Contact)

Represents a contact available at the given address.

appointmentReservationIdnumber>= 1

Unique identifier for the reserved appointment (if applicable)

Example: 345
requestedCompletionDatestring(date)

Where not appointed, allows a date to be requested for the service activation.

Example: "2022-01-10"
engineerTasksArray of strings(EngineerTasks)

Engineer tasks to be performed at installation appointment.

  • INSTALL_ROUTER
  • TEST_SINGLE_DEVICE
  • ADDITIONAL_CABLING
  • TEST_MULTIPLE_DEVICES
  • INSTALL_BBU
  • VOICE_REINJECTION
  • PROVE_IP_VOICE
  • ENSURE_TELECARE
Example: ["TEST_SINGLE_DEVICE"]
hazardsstring[ 1 .. 1000 ] characters

Hazard information about the site where the service will be installed

Example: "Hazardous materials stored on site"
onSiteRestrictionsstring[ 1 .. 1000 ] characters

Information about restrictions on the site where the service will be installed

Example: "Restricted access"
notesstring[ 1 .. 1000 ] characters

Any notes about the order. This may include additional information that is required

Example: "Lorem ipsum dolor sit amet..."
curl -i -X POST \
  https://prod.fibregateway.com/v1/service-orders \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "orderType": "NEW",
    "supplier": "DUMMY_SUPPLIER",
    "address": {
      "id": "A00000031882",
      "type": "NAD",
      "additionalIdentifiers": [
        {
          "id": "A00000031882",
          "type": "NAD"
        }
      ]
    },
    "serviceOrderItem": {
      "serviceSpecification": {
        "id": "ftthl2r"
      },
      "serviceCharacteristics": [
        {
          "name": "LINE_PROFILE",
          "value": "1G1G"
        }
      ]
    },
    "primaryContact": {
      "name": "John Smith",
      "email": "john@smith.com",
      "phoneNumber": "01234 567890"
    },
    "secondaryContact": {
      "name": "John Smith",
      "email": "john@smith.com",
      "phoneNumber": "01234 567890"
    },
    "appointmentReservationId": 345,
    "requestedCompletionDate": "2022-01-10",
    "engineerTasks": [
      "TEST_SINGLE_DEVICE"
    ],
    "hazards": "Hazardous materials stored on site",
    "onSiteRestrictions": "Restricted access",
    "notes": "Lorem ipsum dolor sit amet..."
  }'

Responses

Order was received by the gateway and will be acknowledged later via a KCI

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
One of:

Represents an order for new service(s) at a particular address.

idnumber>= 1required

Unique reference identifying this service order (order number - generated by Fibre Cafe)

Example: 123
statusstring(OrderStatus)read-onlyrequired

Order lifecycle adapted from TMF641 - order update events (KCIs) will be sent to the tenant as the order transitions from one state to the other.

Enum"RECEIVED_BY_GATEWAY""SENT_TO_SUPPLIER""FAILED_TO_SEND""REJECTED""ACKNOWLEDGED""IN_PROGRESS""PENDING""HELD""PENDING_AMENDMENT""PENDING_CANCELLATION"
Example: "ACKNOWLEDGED"
supplierOrderNumberstring[ 1 .. 50 ] characters

Order reference generated by the supplier once acknowledged (for information only)

Example: "A123X"
appointmentSupplierReferencestring[ 1 .. 50 ] characters

Appointment reference generated by the supplier for a re-appointed timeslot (only returned if applicable)

Example: "123456543"
appointmentTimeslotobject

Represents a re-appointed timeslot from the supplier (only returned if applicable)

createdstring(date-time)

Date/time when the order was created

Example: "2022-01-01T09:09:33.001Z"
updatedstring(date-time)

Date/time when the order was last updated

Example: "2022-01-01T09:45:39.001Z"
updatesArray of objects(ProvideServiceOrderUpdate)>= 0 items

Order updates (KCIs) received about the order

committedDatestring(date-time)

When the supplier first commits to fulfil the order this field will contain the expected completion date. Once set, this value will not change unless driven by the tenant/customer.

Example: "2022-01-01T09:09:33.001Z"
targetDatestring(date-time)

The current expected completion date - set once the order is committed. This can be different to the committedDate if the order has been delayed for any reason, and can change possibly multiple times.

Example: "2022-01-01T09:09:33.001Z"
orderTypestring(ProvideOrderType)required

The type of order - new, (re)start, takeover, transfer or swap

Enum"NEW""START""TAKEOVER""TRANSFER""SWAP"
supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
addressobject(AddressIdentifier)required

Address identifier for location including type of identifier.

address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

Example: "A00000031882"
address.​typestring^[A-Za-z]{1,15}$required

Type of address identifier e.g. UPRN, NAD, DistrictCode, ROBT

Example: "NAD"
address.​additionalIdentifiersArray of objects(SecondaryAddressIdentifier)non-empty

Additional address identifiers where available/required for subsequent operations

serviceOrderItemobject(ServiceOrderItem)required

Order for a service that the supplier provides at the selected address.

serviceOrderItem.​serviceSpecificationobject(ServiceSpecification)required

Details of a service the supplier provides at the selected address.

serviceOrderItem.​serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

Example: "ftthl2r"
serviceOrderItem.​serviceSpecification.​namestring[ 1 .. 50 ] charactersread-only

Name of the service

Example: "FTTH"
serviceOrderItem.​serviceCharacteristicsArray of objects(ServiceCharacteristic)>= 0 itemsrequired

List of service characteristics for the service order item - e.g. for FTTH service

  • LINE_PROFILE
  • REMOTE_ID
  • AUTHENTICATION_AGENT (DHCPRelayAgent, PPPIntermediateAgent, None)
  • CARE_LEVEL
serviceOrderItem.​serviceCharacteristics[].​namestring[ 1 .. 50 ] charactersrequired

Name of the service characteristic

Example: "LINE_PROFILE"
serviceOrderItem.​serviceCharacteristics[].​valuestring[ 1 .. 50 ] charactersrequired

Value for this characteristic

Example: "1G1G"
primaryContactobject(Contact)required

Represents a contact available at the given address.

primaryContact.​namestring[ 1 .. 100 ] charactersrequired

Contact name

Example: "John Smith"
primaryContact.​emailstring^\S{1,64}@\S{2,254}$

Contact email address (if available)

Example: "john@smith.com"
primaryContact.​phoneNumberstring^\+?[\d\s\-#]{8,50}$required

Contact phone number

Example: "01234 567890"
secondaryContactobject(Contact)

Represents a contact available at the given address.

appointmentReservationIdnumber>= 1

Unique identifier for the reserved appointment (if applicable)

Example: 345
requestedCompletionDatestring(date)

Where not appointed, allows a date to be requested for the service activation.

Example: "2022-01-10"
engineerTasksArray of strings(EngineerTasks)

Engineer tasks to be performed at installation appointment.

  • INSTALL_ROUTER
  • TEST_SINGLE_DEVICE
  • ADDITIONAL_CABLING
  • TEST_MULTIPLE_DEVICES
  • INSTALL_BBU
  • VOICE_REINJECTION
  • PROVE_IP_VOICE
  • ENSURE_TELECARE
Example: ["TEST_SINGLE_DEVICE"]
hazardsstring[ 1 .. 1000 ] characters

Hazard information about the site where the service will be installed

Example: "Hazardous materials stored on site"
onSiteRestrictionsstring[ 1 .. 1000 ] characters

Information about restrictions on the site where the service will be installed

Example: "Restricted access"
notesstring[ 1 .. 1000 ] characters

Any notes about the order. This may include additional information that is required

Example: "Lorem ipsum dolor sit amet..."
Response
application/json
{ "id": 123, "status": "ACKNOWLEDGED", "supplierOrderNumber": "A123X", "appointmentSupplierReference": "123456543", "appointmentTimeslot": { "timeslotStartDateTime": "2022-01-10T09:00:00.000Z", "timeslotEndDateTime": "2022-01-10T13:00:00.000Z", "classification": "SATURDAY_AM", "standard": true }, "created": "2022-01-01T09:09:33.001Z", "updated": "2022-01-01T09:45:39.001Z", "updates": [ {} ], "committedDate": "2022-01-01T09:09:33.001Z", "targetDate": "2022-01-01T09:09:33.001Z", "orderType": "NEW", "supplier": "DUMMY_SUPPLIER", "address": { "id": "A00000031882", "type": "NAD", "additionalIdentifiers": [] }, "serviceOrderItem": { "serviceSpecification": {}, "serviceCharacteristics": [] }, "primaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "secondaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "appointmentReservationId": 345, "requestedCompletionDate": "2022-01-10", "engineerTasks": [ "TEST_SINGLE_DEVICE" ], "hazards": "Hazardous materials stored on site", "onSiteRestrictions": "Restricted access", "notes": "Lorem ipsum dolor sit amet..." }

Retrieve current order details including updates (KCIs).

Request

This endpoint is called to retrieve the current details (including KCIs) about an inflight service order.

Security
oauth2
Path
idstringrequired

Find order details relating to the specified order

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

curl -i -X GET \
  'https://prod.fibregateway.com/v1/service-orders/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string'

Responses

Request successful - order details were returned

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
One of:
One of:

Represents an order for new service(s) at a particular address.

idnumber>= 1required

Unique reference identifying this service order (order number - generated by Fibre Cafe)

Example: 123
statusstring(OrderStatus)read-onlyrequired

Order lifecycle adapted from TMF641 - order update events (KCIs) will be sent to the tenant as the order transitions from one state to the other.

Enum"RECEIVED_BY_GATEWAY""SENT_TO_SUPPLIER""FAILED_TO_SEND""REJECTED""ACKNOWLEDGED""IN_PROGRESS""PENDING""HELD""PENDING_AMENDMENT""PENDING_CANCELLATION"
Example: "ACKNOWLEDGED"
supplierOrderNumberstring[ 1 .. 50 ] characters

Order reference generated by the supplier once acknowledged (for information only)

Example: "A123X"
appointmentSupplierReferencestring[ 1 .. 50 ] characters

Appointment reference generated by the supplier for a re-appointed timeslot (only returned if applicable)

Example: "123456543"
appointmentTimeslotobject

Represents a re-appointed timeslot from the supplier (only returned if applicable)

createdstring(date-time)

Date/time when the order was created

Example: "2022-01-01T09:09:33.001Z"
updatedstring(date-time)

Date/time when the order was last updated

Example: "2022-01-01T09:45:39.001Z"
updatesArray of objects(ProvideServiceOrderUpdate)>= 0 items

Order updates (KCIs) received about the order

committedDatestring(date-time)

When the supplier first commits to fulfil the order this field will contain the expected completion date. Once set, this value will not change unless driven by the tenant/customer.

Example: "2022-01-01T09:09:33.001Z"
targetDatestring(date-time)

The current expected completion date - set once the order is committed. This can be different to the committedDate if the order has been delayed for any reason, and can change possibly multiple times.

Example: "2022-01-01T09:09:33.001Z"
orderTypestring(ProvideOrderType)required

The type of order - new, (re)start, takeover, transfer or swap

Enum"NEW""START""TAKEOVER""TRANSFER""SWAP"
supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
addressobject(AddressIdentifier)required

Address identifier for location including type of identifier.

address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

Example: "A00000031882"
address.​typestring^[A-Za-z]{1,15}$required

Type of address identifier e.g. UPRN, NAD, DistrictCode, ROBT

Example: "NAD"
address.​additionalIdentifiersArray of objects(SecondaryAddressIdentifier)non-empty

Additional address identifiers where available/required for subsequent operations

serviceOrderItemobject(ServiceOrderItem)required

Order for a service that the supplier provides at the selected address.

serviceOrderItem.​serviceSpecificationobject(ServiceSpecification)required

Details of a service the supplier provides at the selected address.

serviceOrderItem.​serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

Example: "ftthl2r"
serviceOrderItem.​serviceSpecification.​namestring[ 1 .. 50 ] charactersread-only

Name of the service

Example: "FTTH"
serviceOrderItem.​serviceCharacteristicsArray of objects(ServiceCharacteristic)>= 0 itemsrequired

List of service characteristics for the service order item - e.g. for FTTH service

  • LINE_PROFILE
  • REMOTE_ID
  • AUTHENTICATION_AGENT (DHCPRelayAgent, PPPIntermediateAgent, None)
  • CARE_LEVEL
serviceOrderItem.​serviceCharacteristics[].​namestring[ 1 .. 50 ] charactersrequired

Name of the service characteristic

Example: "LINE_PROFILE"
serviceOrderItem.​serviceCharacteristics[].​valuestring[ 1 .. 50 ] charactersrequired

Value for this characteristic

Example: "1G1G"
primaryContactobject(Contact)required

Represents a contact available at the given address.

primaryContact.​namestring[ 1 .. 100 ] charactersrequired

Contact name

Example: "John Smith"
primaryContact.​emailstring^\S{1,64}@\S{2,254}$

Contact email address (if available)

Example: "john@smith.com"
primaryContact.​phoneNumberstring^\+?[\d\s\-#]{8,50}$required

Contact phone number

Example: "01234 567890"
secondaryContactobject(Contact)

Represents a contact available at the given address.

appointmentReservationIdnumber>= 1

Unique identifier for the reserved appointment (if applicable)

Example: 345
requestedCompletionDatestring(date)

Where not appointed, allows a date to be requested for the service activation.

Example: "2022-01-10"
engineerTasksArray of strings(EngineerTasks)

Engineer tasks to be performed at installation appointment.

  • INSTALL_ROUTER
  • TEST_SINGLE_DEVICE
  • ADDITIONAL_CABLING
  • TEST_MULTIPLE_DEVICES
  • INSTALL_BBU
  • VOICE_REINJECTION
  • PROVE_IP_VOICE
  • ENSURE_TELECARE
Example: ["TEST_SINGLE_DEVICE"]
hazardsstring[ 1 .. 1000 ] characters

Hazard information about the site where the service will be installed

Example: "Hazardous materials stored on site"
onSiteRestrictionsstring[ 1 .. 1000 ] characters

Information about restrictions on the site where the service will be installed

Example: "Restricted access"
notesstring[ 1 .. 1000 ] characters

Any notes about the order. This may include additional information that is required

Example: "Lorem ipsum dolor sit amet..."
Response
application/json
{ "id": 123, "status": "ACKNOWLEDGED", "supplierOrderNumber": "A123X", "appointmentSupplierReference": "123456543", "appointmentTimeslot": { "timeslotStartDateTime": "2022-01-10T09:00:00.000Z", "timeslotEndDateTime": "2022-01-10T13:00:00.000Z", "classification": "SATURDAY_AM", "standard": true }, "created": "2022-01-01T09:09:33.001Z", "updated": "2022-01-01T09:45:39.001Z", "updates": [ {} ], "committedDate": "2022-01-01T09:09:33.001Z", "targetDate": "2022-01-01T09:09:33.001Z", "orderType": "NEW", "supplier": "DUMMY_SUPPLIER", "address": { "id": "A00000031882", "type": "NAD", "additionalIdentifiers": [] }, "serviceOrderItem": { "serviceSpecification": {}, "serviceCharacteristics": [] }, "primaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "secondaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "appointmentReservationId": 345, "requestedCompletionDate": "2022-01-10", "engineerTasks": [ "TEST_SINGLE_DEVICE" ], "hazards": "Hazardous materials stored on site", "onSiteRestrictions": "Restricted access", "notes": "Lorem ipsum dolor sit amet..." }

Request an amendment to an inflight provide, cease or modify order.

Request

This endpoint is called to request amendment(s) to an existing inflight order to provision, modify or cease a service.

The Fibre Cafe will validate the request and generate an amendment reference which is returned. If the order amendment is rejected immediately then a 400 code will be returned with reason(s) for the rejection in the response.

The order amendment will then be sent to the supplier for processing and further updates will be sent via KCIs - this could include a rejection if the amendment does not meet supplier validation/processing rules.

Security
oauth2
Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/jsonrequired
One of:

Represents a request to amend an existing inflight service provide order. Any value(s) supplied will replace the existing value(s).

orderIdnumberrequired

Unique identifier for the modify service order to be amended

Example: 123
supplierstring^\w{1,20}$

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
serviceCharacteristicsArray of objects(ServiceCharacteristic)non-empty

List of service characteristics for the service order item

primaryContactobject(Contact)

Represents a contact available at the given address.

secondaryContactobject(Contact)

Represents a contact available at the given address.

appointmentReservationIdnumber>= 1

Unique identifier for the reserved appointment (if applicable)

Example: 345
requestedCompletionDatestring(date)

Where not appointed, allows a date to be requested for the service activation

Example: "2022-01-10"
engineerTasksArray of strings(EngineerTasks)

Engineer tasks to be performed at installation appointment.

  • INSTALL_ROUTER
  • TEST_SINGLE_DEVICE
  • ADDITIONAL_CABLING
  • TEST_MULTIPLE_DEVICES
  • INSTALL_BBU
  • VOICE_REINJECTION
  • PROVE_IP_VOICE
  • ENSURE_TELECARE
Example: ["TEST_SINGLE_DEVICE"]
hazardsstring[ 1 .. 1000 ] characters

Hazard information about the site where the service will be installed

onSiteRestrictionsstring[ 1 .. 1000 ] characters

Information about restrictions on the site where the service(s) will be installed

notesstring[ 1 .. 1000 ] characters

Notes about the order

Example: "Lorem ipsum dolor sit amet..."
curl -i -X POST \
  https://prod.fibregateway.com/v1/service-order-amendments \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "orderId": 123,
    "supplier": "DUMMY_SUPPLIER",
    "serviceCharacteristics": [
      {
        "name": "LINE_PROFILE",
        "value": "1G1G"
      }
    ],
    "primaryContact": {
      "name": "John Smith",
      "email": "john@smith.com",
      "phoneNumber": "01234 567890"
    },
    "secondaryContact": {
      "name": "John Smith",
      "email": "john@smith.com",
      "phoneNumber": "01234 567890"
    },
    "appointmentReservationId": 345,
    "requestedCompletionDate": "2022-01-10",
    "engineerTasks": [
      "TEST_SINGLE_DEVICE"
    ],
    "hazards": "string",
    "onSiteRestrictions": "string",
    "notes": "Lorem ipsum dolor sit amet..."
  }'

Responses

Order amendment request has been received and will be confirmed or rejected later by a KCI

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
One of:

Represents a request to amend an existing inflight service provide order. Any value(s) supplied will replace the existing value(s).

idnumber>= 1required

Unique identifier for this provide service order amendment request (generated by the Fibre Cafe)

Example: 234
supplierReferencestring[ 1 .. 50 ] characters

Supplier reference for this amendment request (if available - for information only)

Example: "A123X-1"
statusstring(RequestStatus)read-onlyrequired

State model for amendment and cancellation requests.

Enum"RECEIVED_BY_GATEWAY""PENDING""FAILED_TO_SEND""REJECTED""COMPLETED"
Example: "REJECTED"
orderIdnumberrequired

Unique identifier for the modify service order to be amended

Example: 123
supplierstring^\w{1,20}$

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
serviceCharacteristicsArray of objects(ServiceCharacteristic)non-empty

List of service characteristics for the service order item

primaryContactobject(Contact)

Represents a contact available at the given address.

secondaryContactobject(Contact)

Represents a contact available at the given address.

appointmentReservationIdnumber>= 1

Unique identifier for the reserved appointment (if applicable)

Example: 345
requestedCompletionDatestring(date)

Where not appointed, allows a date to be requested for the service activation

Example: "2022-01-10"
engineerTasksArray of strings(EngineerTasks)

Engineer tasks to be performed at installation appointment.

  • INSTALL_ROUTER
  • TEST_SINGLE_DEVICE
  • ADDITIONAL_CABLING
  • TEST_MULTIPLE_DEVICES
  • INSTALL_BBU
  • VOICE_REINJECTION
  • PROVE_IP_VOICE
  • ENSURE_TELECARE
Example: ["TEST_SINGLE_DEVICE"]
hazardsstring[ 1 .. 1000 ] characters

Hazard information about the site where the service will be installed

onSiteRestrictionsstring[ 1 .. 1000 ] characters

Information about restrictions on the site where the service(s) will be installed

notesstring[ 1 .. 1000 ] characters

Notes about the order

Example: "Lorem ipsum dolor sit amet..."
Response
application/json
{ "id": 234, "supplierReference": "A123X-1", "status": "REJECTED", "orderId": 123, "supplier": "DUMMY_SUPPLIER", "serviceCharacteristics": [ {} ], "primaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "secondaryContact": { "name": "John Smith", "email": "john@smith.com", "phoneNumber": "01234 567890" }, "appointmentReservationId": 345, "requestedCompletionDate": "2022-01-10", "engineerTasks": [ "TEST_SINGLE_DEVICE" ], "hazards": "string", "onSiteRestrictions": "string", "notes": "Lorem ipsum dolor sit amet..." }

Request to cancel an inflight provide, cease or modify order.

Request

This endpoint is called to request cancellation of an existing inflight order to provision, modify or cease a service.

The Fibre Cafe will validate the request and generate a unique ID which is returned. If the order cancellation is rejected immediately then a 400 code will be returned with reason(s) for the rejection in the response.

The order cancellation will then be sent to the supplier for processing and further updates will be sent via KCIs - this could include a rejection if the cancellation does not meet supplier validation/processing rules.

Security
oauth2
Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
supplierstring^\w{1,20}$

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
orderIdnumber>= 1required

Unique reference identifying the service order to be cancelled

Example: 123
reasonCodestring(CancellationReasonCode)^[A-Z_]{1,25}$required

Codes representing reason for cancellation:

  • CUSTOMER_CHANGED_MIND
  • INSTALL_FAILED
  • NETWORK_ISSUE
  • NO_LONGER_REQUIRED
  • OTHER

Reason codes for cancellation other (unsolicited cease):

  • NO_AUTHORISATION
  • CUSTOMER_NOT_AWARE
  • DELIBERATE_MISLEAD
  • PURCHASED_DIFFERENT_PRODUCT
  • END_USER_NOT_MOVING
Example: "CUSTOMER_CHANGED_MIND"
textstring[ 1 .. 1000 ] characters

Textual reason for cancellation - provides more context as applicable

Example: "Delivery too long"
curl -i -X POST \
  https://prod.fibregateway.com/v1/service-order-cancellations \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "supplier": "DUMMY_SUPPLIER",
    "orderId": 123,
    "reasonCode": "CUSTOMER_CHANGED_MIND",
    "text": "Delivery too long"
  }'

Responses

Order cancellation request has been received and will be confirmed or rejected later by a KCI

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
idnumber>= 1required

Unique identifier for this service order cancellation request (generated by the Fibre Cafe)

Example: 234
supplierReferencestring[ 1 .. 50 ] characters

Supplier reference for this cancellation request (if available - for information only)

Example: "A123X-1"
statusstring(RequestStatus)read-onlyrequired

State model for amendment and cancellation requests.

Enum"RECEIVED_BY_GATEWAY""PENDING""FAILED_TO_SEND""REJECTED""COMPLETED"
Example: "REJECTED"
supplierstring^\w{1,20}$

System identifier for a supplier on the Fibre Cafe that is associated with this order

Example: "DUMMY_SUPPLIER"
orderIdnumber>= 1required

Unique reference identifying the service order to be cancelled

Example: 123
reasonCodestring(CancellationReasonCode)^[A-Z_]{1,25}$required

Codes representing reason for cancellation:

  • CUSTOMER_CHANGED_MIND
  • INSTALL_FAILED
  • NETWORK_ISSUE
  • NO_LONGER_REQUIRED
  • OTHER

Reason codes for cancellation other (unsolicited cease):

  • NO_AUTHORISATION
  • CUSTOMER_NOT_AWARE
  • DELIBERATE_MISLEAD
  • PURCHASED_DIFFERENT_PRODUCT
  • END_USER_NOT_MOVING
Example: "CUSTOMER_CHANGED_MIND"
textstring[ 1 .. 1000 ] characters

Textual reason for cancellation - provides more context as applicable

Example: "Delivery too long"
Response
application/json
{ "id": 234, "supplierReference": "A123X-1", "status": "REJECTED", "supplier": "DUMMY_SUPPLIER", "orderId": 123, "reasonCode": "CUSTOMER_CHANGED_MIND", "text": "Delivery too long" }

Create an order to provide ethernet service.

Request

This endpoint can be called to place an ethernet order with a supplier - currently only provide is supported with cease and modify coming soon.

The Fibre Cafe will validate the request and generate an order number which is returned. If the order is rejected immediately then a 400 code will be returned with reason(s) for the rejection in the response.

The ethernet order will then be sent to the supplier for processing and further updates will be sent via KCIs - this could include a rejection if the order does not meet supplier validation/processing rules. Once the order is acknowledged, the supplier may assign their own order number which will be returned in the KCI.

Security
oauth2
Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
CreateProvideEthernetOrder (object)(CreateEthernetOrder)
curl -i -X POST \
  https://prod.fibregateway.com/v1/ethernet/service-orders \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "supplier": "SUPPLIER2",
    "supplierQuoteId": "SUPP2-QUO-ETH-5001",
    "siteInformation": [
      {
        "name": "Strategic Imperative Offices",
        "address": {
          "id": "A00000031882",
          "type": "NAD",
          "additionalIdentifiers": [
            {
              "id": "A00000031882",
              "type": "NAD"
            }
          ]
        },
        "postcode": "TW184LG",
        "role": "A-END",
        "siteCharacteristics": [
          {
            "name": "POINT_OF_INTERCONNECT",
            "value": "1G1G"
          }
        ],
        "wayleave": {
          "wayleaveOwner": true,
          "wayleaveCharacteristics": [
            {
              "name": "POINT_OF_INTERCONNECT",
              "value": "1G1G"
            }
          ],
          "wayleaveContact": {
            "name": "John Smith",
            "email": "john@smith.com",
            "phoneNumber": "01234 567890"
          }
        },
        "primaryContact": {
          "name": "John Smith",
          "email": "john@smith.com",
          "phoneNumber": "01234 567890"
        },
        "secondaryContact": {
          "name": "John Smith",
          "email": "john@smith.com",
          "phoneNumber": "01234 567890"
        },
        "hazards": "Hazardous materials stored on site",
        "onSiteRestrictions": "Restricted access",
        "notes": "Lorem ipsum dolor sit amet..."
      },
      {
        "name": "Strategic Imperative Offices",
        "address": {
          "id": "A00000031882",
          "type": "NAD",
          "additionalIdentifiers": [
            {
              "id": "A00000031882",
              "type": "NAD"
            }
          ]
        },
        "postcode": "TW184LG",
        "role": "A-END",
        "siteCharacteristics": [
          {
            "name": "POINT_OF_INTERCONNECT",
            "value": "1G1G"
          }
        ],
        "wayleave": {
          "wayleaveOwner": true,
          "wayleaveCharacteristics": [
            {
              "name": "POINT_OF_INTERCONNECT",
              "value": "1G1G"
            }
          ],
          "wayleaveContact": {
            "name": "John Smith",
            "email": "john@smith.com",
            "phoneNumber": "01234 567890"
          }
        },
        "primaryContact": {
          "name": "John Smith",
          "email": "john@smith.com",
          "phoneNumber": "01234 567890"
        },
        "secondaryContact": {
          "name": "John Smith",
          "email": "john@smith.com",
          "phoneNumber": "01234 567890"
        },
        "hazards": "Hazardous materials stored on site",
        "onSiteRestrictions": "Restricted access",
        "notes": "Lorem ipsum dolor sit amet..."
      }
    ],
    "ethernetOrderItems": [
      {
        "service": {
          "serviceSpecification": {
            "id": "ftthl2r"
          },
          "serviceCharacteristic": [
            {
              "name": "POINT_OF_INTERCONNECT",
              "value": "1G1G"
            }
          ]
        },
        "contractDetails": {
          "contractLength": {
            "value": 36,
            "unit": "MONTH"
          },
          "billingFrequency": "MONTHLY",
          "priceAlteration": "string"
        },
        "requestedCompletionDate": "2022-01-10",
        "technicalContact": {
          "name": "John Smith",
          "email": "john@smith.com",
          "phoneNumber": "01234 567890"
        }
      }
    ]
  }'

Responses

Order was received by the Fibre Cafe and will be acknowledged later via a KCI

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
ProvideEthernetOrder (object)(SolicitedEthernetOrder)
Response
application/json
{ "id": 123, "status": "ACKNOWLEDGED", "supplierOrderNumber": "A123X", "created": "2022-01-01T09:09:33.001Z", "updated": "2022-01-01T09:45:39.001Z", "updates": [ {} ], "committedDate": "2022-01-01T09:09:33.001Z", "targetDate": "2022-01-01T09:09:33.001Z", "supplier": "SUPPLIER2", "supplierQuoteId": "SUPP2-QUO-ETH-5001", "siteInformation": [ {}, {} ], "ethernetOrderItems": [ {} ] }

Retrieve current ethernet order details including updates (KCIs).

Request

This endpoint is called to retrieve the current details (including KCIs) about an inflight ethernet order.

Security
oauth2
Path
idstringrequired

Find order details relating to the specified ethernet order

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

curl -i -X GET \
  'https://prod.fibregateway.com/v1/ethernet/service-orders/{id}' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string'

Responses

Request successful - order details were returned

Headers
X-Request-IDstringrequired

Unique identifier to identify request and response events across the Fibre Cafe gateway

X-Conversation-IDstringrequired

Identifier to track message journey across the Fibre Cafe gateway

Bodyapplication/json
SolicitedEthernetOrder (ProvideEthernetOrder (object))(EthernetOrder)
Response
application/json
{ "id": 123, "status": "ACKNOWLEDGED", "supplierOrderNumber": "A123X", "created": "2022-01-01T09:09:33.001Z", "updated": "2022-01-01T09:45:39.001Z", "updates": [ {} ], "committedDate": "2022-01-01T09:09:33.001Z", "targetDate": "2022-01-01T09:09:33.001Z", "supplier": "SUPPLIER2", "supplierQuoteId": "SUPP2-QUO-ETH-5001", "siteInformation": [ {}, {} ], "ethernetOrderItems": [ {} ] }

Service Test Management

Operations

Service Problem Management

Operations