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

Return available appointment slots for a given service and address.

Request

This endpoint can be called to find what appointments a supplier has available to install or maintain service(s) at a given address.

An address query parameter must be supplied specifying address ID and type along with the required service specification as returned by the /service-availability endpoint.

The next available appointments after the appointmentStartDate will be returned - a suitable date should be chosen based on installationLeadTime if this was provided during availability check.

Appointment slots are classified based on day as weekday or saturday/sunday and by time to day, AM/PM or early morning/evening. Based on the tenant-supplier agreement, some of these classifications will be considered premium.

This request will be routed to a particular supplier which must be specified.

Security
oauth2
Query
supplierstringrequired

System identifier for a supplier on the Fibre Cafe

Example: supplier=DUMMY_SUPPLIER
addressobjectrequired

Address identifier of provided type e.g. UPRN to check for appointment availability

Example: address={"id":"200004033694","type":"UPRN"}
address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

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

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

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

Additional address identifiers where available/required for subsequent operations

serviceSpecificationobjectrequired

The service to be installed or maintained during this appointment

Example: serviceSpecification={"id":"ftthl2r"}
serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

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

Name of the service

Example: "FTTH"
serviceCharacteristicsArray of objects(ServiceCharacteristic)

Characteristics of the service to be maintained during this appointment e.g. SERVICE_ID, CARE_LEVEL

appointmentFromDatestring(date)

Find appointment slots from this date

Example: appointmentFromDate=2022-01-05
standardOnlyboolean

Find appointment slots classified as standard only (exclude premium time slots)

Default false
singleDayAppointmentboolean

Find only appointment slots that start/end on the same day

Default false
appointmentPurposestring(AppointmentPurpose)required

Purpose of the appointment : PROVIDE, MODIFY, REPAIR

Example: appointmentPurpose=PROVIDE
serviceIdstring[ 1 .. 50 ] characters

Identifier of the existing live service, mandatory if appointmentPurpose is REPAIR

Example: serviceId=SI2345432345345
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/available-appointments?supplier=DUMMY_SUPPLIER&address={%22id%22%3A%22200004033694%22%2C%22type%22%3A%22UPRN%22}&serviceSpecification={%22id%22%3A%22ftthl2r%22}&serviceCharacteristics=%5B{%22name%22%3A%22LINE_PROFILE%22%2C%22value%22%3A%221G1G%22}%5D&appointmentFromDate=2022-01-05&standardOnly=false&singleDayAppointment=false&appointmentPurpose=PROVIDE&serviceId=SI2345432345345' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string'

Responses

Request successful - zero or more available appointments 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
supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe that is providing this appointment

Example: "SUPPLIER1"
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

serviceSpecificationobject(ServiceSpecification)

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

availableTimeslotsArray of objects(Timeslot)>= 0 itemsrequired

List of available appointment timeslots

availableTimeslots[].​timeslotStartDateTimestring(date-time)required

Start date/time for this timeslot

Example: "2022-01-10T09:00:00.000Z"
availableTimeslots[].​timeslotEndDateTimestring(date-time)required

End date/time for this timeslot

Example: "2022-01-10T13:00:00.000Z"
availableTimeslots[].​classificationstring(TimeslotClassification)^[A-Z_]{1,25}$read-only

Timeslot classification:

  • WEEKDAY
  • WEEKDAY_AM
  • WEEKDAY_PM
  • WEEKDAY_EARLY
  • WEEKDAY_EVENING
  • SATURDAY
  • SATURDAY_AM
  • SATURDAY_PM
  • SATURDAY_EARLY
  • SATURDAY_EVENING
  • SUNDAY
  • SUNDAY_AM
  • SUNDAY_PM
  • SUNDAY_EARLY
  • SUNDAY_EVENING
Example: "SATURDAY_AM"
availableTimeslots[].​standardbooleanread-only

Timeslot is classified as standard (non-premium)

Default true
Response
application/json
{ "supplier": "SUPPLIER1", "address": { "id": "A00000031882", "type": "NAD", "additionalIdentifiers": [] }, "serviceSpecification": { "id": "ftthl2r", "name": "FTTH" }, "availableTimeslots": [ {} ] }

Reserve a previously returned appointment slot.

Request

This endpoint can be called to reserve an appointment with a supplier to install or maintain service(s) at a given address.

Details of a previously returned available appointment must be provided to be reserved according to the supplier reservation policy. Where the reservation has a TTL (time to live) before being released, the expiry time will be stated.

The returned reservation ID must be sent as part of the order at which point it should be considered confirmed.

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}$required

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

Example: "SUPPLIER1"
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

serviceSpecificationobject(ServiceSpecification)required

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

serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

Example: "ftthl2r"
serviceCharacteristicsArray of objects(ServiceCharacteristic)>= 0 items

List of service characteristics for the appointment - e.g. CARE_LEVEL

serviceIdstring[ 1 .. 50 ] characters

Identifier of an existing live service, mandatory for REPAIR appointments

Example: "SI2345432345345"
purposestring(AppointmentPurpose)required

Purpose of the appointment : PROVIDE, MODIFY, REPAIR

Example: "PROVIDE"
timeslotobject(Timeslot)required

Represents an appointment timeslot with a supplier.

timeslot.​timeslotStartDateTimestring(date-time)required

Start date/time for this timeslot

Example: "2022-01-10T09:00:00.000Z"
timeslot.​timeslotEndDateTimestring(date-time)required

End date/time for this timeslot

Example: "2022-01-10T13:00:00.000Z"
curl -i -X POST \
  https://prod.fibregateway.com/v1/appointments \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "supplier": "SUPPLIER1",
    "address": {
      "id": "A00000031882",
      "type": "NAD",
      "additionalIdentifiers": [
        {
          "id": "A00000031882",
          "type": "NAD"
        }
      ]
    },
    "serviceSpecification": {
      "id": "ftthl2r"
    },
    "serviceCharacteristics": [
      {
        "name": "LINE_PROFILE",
        "value": "1G1G"
      }
    ],
    "serviceId": "SI2345432345345",
    "purpose": "PROVIDE",
    "timeslot": {
      "timeslotStartDateTime": "2022-01-10T09:00:00.000Z",
      "timeslotEndDateTime": "2022-01-10T13:00:00.000Z"
    }
  }'

Responses

Operation successful - appointment was reserved. Returned ID to be used when placing 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

Bodyapplication/json
idnumber>= 1required

Unique identifier for this appointment

Example: 345
supplierReferencestring[ 1 .. 50 ] characters

Appointment reference generated by the supplier (for information only)

Example: "123456543"
expiryDateTimestring(date-time)

Where an appointment is reserved, this contains the date/time when the reservation will expire.

Example: "2022-01-01T13:45:00.000Z"
supplierstring^\w{1,20}$required

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

Example: "SUPPLIER1"
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

serviceSpecificationobject(ServiceSpecification)required

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

serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

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

Name of the service

Example: "FTTH"
serviceCharacteristicsArray of objects(ServiceCharacteristic)>= 0 items

List of service characteristics for the appointment - e.g. CARE_LEVEL

serviceIdstring[ 1 .. 50 ] characters

Identifier of an existing live service, mandatory for REPAIR appointments

Example: "SI2345432345345"
purposestring(AppointmentPurpose)required

Purpose of the appointment : PROVIDE, MODIFY, REPAIR

Example: "PROVIDE"
timeslotobject(Timeslot)required

Represents an appointment timeslot with a supplier.

timeslot.​timeslotStartDateTimestring(date-time)required

Start date/time for this timeslot

Example: "2022-01-10T09:00:00.000Z"
timeslot.​timeslotEndDateTimestring(date-time)required

End date/time for this timeslot

Example: "2022-01-10T13:00:00.000Z"
timeslot.​classificationstring(TimeslotClassification)^[A-Z_]{1,25}$read-only

Timeslot classification:

  • WEEKDAY
  • WEEKDAY_AM
  • WEEKDAY_PM
  • WEEKDAY_EARLY
  • WEEKDAY_EVENING
  • SATURDAY
  • SATURDAY_AM
  • SATURDAY_PM
  • SATURDAY_EARLY
  • SATURDAY_EVENING
  • SUNDAY
  • SUNDAY_AM
  • SUNDAY_PM
  • SUNDAY_EARLY
  • SUNDAY_EVENING
Example: "SATURDAY_AM"
timeslot.​standardbooleanread-only

Timeslot is classified as standard (non-premium)

Default true
Response
application/json
{ "id": 345, "supplierReference": "123456543", "expiryDateTime": "2022-01-01T13:45:00.000Z", "supplier": "SUPPLIER1", "address": { "id": "A00000031882", "type": "NAD", "additionalIdentifiers": [] }, "serviceSpecification": { "id": "ftthl2r", "name": "FTTH" }, "serviceCharacteristics": [ {} ], "serviceId": "SI2345432345345", "purpose": "PROVIDE", "timeslot": { "timeslotStartDateTime": "2022-01-10T09:00:00.000Z", "timeslotEndDateTime": "2022-01-10T13:00:00.000Z", "classification": "SATURDAY_AM", "standard": true } }

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

Service Test Management

Operations

Service Problem Management

Operations