Skip to content

Fibre Cafe : Tenant API (1.20)

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

Return available services for a given address.

Request

This endpoint can be called to find what services are available at a given address.

An address query parameter must be supplied specifying address ID and type as described above.

If required, a particular supplier or list of suppliers can be specified in the request; otherwise the Fibre Cafe will check with all suppliers as configured for the tenant.

Security
oauth2
Query
addressobjectrequired

Address identifier of provided type e.g. UPRN to check for service 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

suppliersArray of strings(SupplierList)non-empty

If specified, the request will be sent only to the specified supplier(s)

Example: suppliers=SUPPLIER1&suppliers=SUPPLIER2
postalCodestring

Not currently used

serviceTypesArray of strings(ServiceTypeList)non-empty

If specified, filters the service availability check to only include the specified service types

Default ["BROADBAND"]
Items Enum"BROADBAND""ETHERNET"
Example: serviceTypes=BROADBAND&serviceTypes=ETHERNET
Headers
X-Request-IDstringrequired

Unique identifier to link 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-availability?address={%22id%22%3A%22200004033694%22%2C%22type%22%3A%22UPRN%22}&suppliers=SUPPLIER1%2CSUPPLIER2&postalCode=string&serviceTypes=BROADBAND%2CETHERNET' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string'

Responses

Request successful - zero or more services 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/jsonArray [
Any of:

Returns the available services that a supplier has at the selected address along with site information

supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe

Example: "SUPPLIER1"
addressobject(Address)required

Address for location associated with the service order.

address.​identifierobject(AddressIdentifier)required

Address identifier for location including type of identifier.

address.​identifier.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

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

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

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

Additional address identifiers where available/required for subsequent operations

address.​namestring[ 1 .. 50 ] charactersread-only

Identifying name of the sub unit

Example: "TWENTY"
address.​streetNumberstring[ 1 .. 50 ] charactersread-only

Discriminator used to identify the property on a street

Example: "20"
address.​streetNamestring[ 1 .. 100 ] charactersread-only

Name used to identify the street

Example: "Kingston Road"
address.​localitystring[ 1 .. 50 ] charactersread-only

Name used to identify the area

address.​citystring[ 1 .. 50 ] charactersread-only

Name used to identify the town or city

Example: "Staines-Upon-Thames"
address.​postcodestring[ 1 .. 12 ] charactersread-only

Postal code

Example: "TW184LG"
address.​countrystring[ 1 .. 50 ] charactersread-only

Name used to identify the country

Example: "UK"
address.​subAddressobject(SubAddress)read-only

More specific definition of a property within an urban area.

address.​qualifierstring[ 1 .. 50 ] charactersread-only

Optional qualifier for this address

Example: "Gold"
address.​sourcestring^\w{1,20}$

System identifier for the source of this address information

Example: "OPENREACH"
address.​additionalAttributesArray of objects(AddressAttribute)>= 0 items

Additional attributes of an address (where available) e.g.

  • UNINHABITED
  • HOTSITE
  • TEMPORARY
serviceSpecificationsArray of objects(ServiceSpecificationAvailability)>= 0 itemsrequired

List of services that are available at this address

serviceSpecifications[].​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

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

Name of the service

Example: "FTTH"
serviceSpecifications[].​serviceCharacteristicsArray of objects(ServiceCharacteristicAvailability)

Service characteristics supported by this service

siteInformationobject(SiteInformation)

Describes site information and details of the lines available.

]
Response
application/json
[ { "supplier": "SUPPLIER1", "address": { … }, "serviceSpecifications": [ … ], "siteInformation": { … } } ]

Return available services and ordering options for a given address.

Request

Journey-led service availability check. Returns a summary of supplier availability, details of any existing lines at the address, and a set of self-describing order options that drive the ordering journey without requiring the consuming system to implement product eligibility or ordering rules.

Each order option includes the supported order types (NEW, TRANSFER, TAKEOVER, START) as an array — options that share the same supplier, service specification and characteristics (e.g. TRANSFER and TAKEOVER) are collapsed into a single entry. Each option also carries appointment requirements and the full set of required and optional service characteristics — pre-populated where the value is known from availability, or flagged as TENANT-sourced where the user must supply them.

Suppliers are queried in parallel. If a supplier fails or has no availability this is reflected in the availabilitySummary; order options are only returned for suppliers with AVAILABLE status.

Security
oauth2
Query
addressobjectrequired

Address identifier of provided type e.g. UPRN to check for service 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

suppliersArray of strings(SupplierList)non-empty

If specified, the request will be sent only to the specified supplier(s)

Example: suppliers=SUPPLIER1&suppliers=SUPPLIER2
serviceTypesArray of strings(ServiceTypeList)non-empty

If specified, filters the service availability check to only include the specified service types

Default ["BROADBAND"]
Items Enum"BROADBAND""ETHERNET"
Example: serviceTypes=BROADBAND&serviceTypes=ETHERNET
Headers
X-Request-IDstringrequired

Unique identifier to link 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/v2/service-availability?address={%22id%22%3A%22200004033694%22%2C%22type%22%3A%22UPRN%22}&suppliers=SUPPLIER1%2CSUPPLIER2&serviceTypes=BROADBAND%2CETHERNET' \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string'

Responses

Request successful

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
addressobject(Address)required

Address for location associated with the service order.

address.​identifierobject(AddressIdentifier)required

Address identifier for location including type of identifier.

address.​identifier.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

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

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

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

Additional address identifiers where available/required for subsequent operations

address.​namestring[ 1 .. 50 ] charactersread-only

Identifying name of the sub unit

Example: "TWENTY"
address.​streetNumberstring[ 1 .. 50 ] charactersread-only

Discriminator used to identify the property on a street

Example: "20"
address.​streetNamestring[ 1 .. 100 ] charactersread-only

Name used to identify the street

Example: "Kingston Road"
address.​localitystring[ 1 .. 50 ] charactersread-only

Name used to identify the area

address.​citystring[ 1 .. 50 ] charactersread-only

Name used to identify the town or city

Example: "Staines-Upon-Thames"
address.​postcodestring[ 1 .. 12 ] charactersread-only

Postal code

Example: "TW184LG"
address.​countrystring[ 1 .. 50 ] charactersread-only

Name used to identify the country

Example: "UK"
address.​subAddressobject(SubAddress)read-only

More specific definition of a property within an urban area.

address.​qualifierstring[ 1 .. 50 ] charactersread-only

Optional qualifier for this address

Example: "Gold"
address.​sourcestring^\w{1,20}$

System identifier for the source of this address information

Example: "OPENREACH"
address.​additionalAttributesArray of objects(AddressAttribute)>= 0 items

Additional attributes of an address (where available) e.g.

  • UNINHABITED
  • HOTSITE
  • TEMPORARY
availabilitySummaryobject(AvailabilitySummary)required

Cross-supplier availability summary for the queried address.

Example: {"serviceAvailable":true,"supplierCount":2,"supplierResults":1,"supplierStatus":[{"supplier":"SUPPLIER1","status":"AVAILABLE"},{"supplier":"SUPPLIER2","status":"FAILED","error":{"uuid":"0884e75c-5424-456d-ac61-bef2010b7962","code":"SUPPLIER_TIMED_OUT","messages":["The Fibre Cafe did not receive a timely response from the supplier"]}}]}
availabilitySummary.​serviceAvailablebooleanrequired

True if at least one supplier returned availability and order options exist.

Example: true
availabilitySummary.​supplierCountintegerrequired

Total number of suppliers queried.

Example: 2
availabilitySummary.​supplierResultsintegerrequired

Number of suppliers that returned a result (AVAILABLE or UNAVAILABLE — excludes FAILED).

Example: 1
availabilitySummary.​supplierStatusArray of objects(SupplierAvailabilityStatus)non-emptyrequired

Per-supplier availability status.

Example: [{"supplier":"SUPPLIER1","status":"AVAILABLE"},{"supplier":"SUPPLIER2","status":"FAILED","error":{"uuid":"0884e75c-5424-456d-ac61-bef2010b7962","code":"SUPPLIER_TIMED_OUT","messages":["The Fibre Cafe did not receive a timely response from the supplier"]}}]
availabilitySummary.​supplierStatus[].​supplierstring^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe.

Example: "SUPPLIER1"
availabilitySummary.​supplierStatus[].​statusstring(SupplierAvailabilityStatusCode)required

The availability status returned for a supplier:

  • AVAILABLE : Supplier has services available and order options have been returned.
  • UNAVAILABLE : Supplier has no services available at this address.
  • FAILED : The Fibre Cafe could not obtain a result from this supplier.
Enum"AVAILABLE""UNAVAILABLE""FAILED"
Example: "AVAILABLE"
availabilitySummary.​supplierStatus[].​unavailabilityReasonsArray of objects(UnavailabilityReason)non-empty

Reasons for unavailability. Present when status is UNAVAILABLE.

availabilitySummary.​supplierStatus[].​errorobject(Error)

Represents an error with code to denote origin/cause.

  • INVALID_REQUEST : Request was well-formed/syntactically correct but did not pass validation requirements
  • MALFORMED_REQUEST : Request was not valid JSON or missing mandatory parameters
  • NOT_AUTHORISED : User was not authenticated and/or authorised to use endpoint
  • NOT_FOUND : Requested entity was not found
  • SUPPLIER_FAULT : An unexpected problem originating from the supplier API
  • SUPPLIER_TIMED_OUT : The Fibre Cafe did not receive a timely response from the supplier
  • GATEWAY_FAULT : An unexpected problem originating on the Fibre Cafe gateway
existingLinesArray of ExistingFibreLine (object) or ExistingCopperLine (object)non-empty

Physical lines or ONTs found at the address across all queried suppliers. Omitted when no existing infrastructure is present.

orderOptionsArray of objects(OrderOption)non-empty

Self-describing order options available at this address. Omitted when serviceAvailable is false.

Response
application/json
{ "address": { "identifier": { … }, "name": "TWENTY", "streetNumber": "20", "streetName": "Kingston Road", "locality": "string", "city": "Staines-Upon-Thames", "postcode": "TW184LG", "country": "UK", "subAddress": { … }, "qualifier": "Gold", "source": "OPENREACH", "additionalAttributes": [ … ] }, "availabilitySummary": { "serviceAvailable": true, "supplierCount": 2, "supplierResults": 1, "supplierStatus": [ … ] }, "existingLines": [ { … } ], "orderOptions": [ { … } ] }

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

Service Test Management

Operations

Service Problem Management

Operations