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

Return a quote for available services for a given address.

Request

This endpoint can be called to generate a quote for advanced services, such as Ethernet. The details of the individual supplier or list of suppliers must be specified in the request.

Security
oauth2
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

Bodyapplication/json
externalIdentifierstring[ 0 .. 64 ] charactersrequired

A unique identifier of the quote request, as provided by the tenant

Example: "QUO-ETH-5001"
quoteItemsArray of objects(CreateQuoteItem)non-emptyrequired
quoteItems[].​idinteger>= 1required

A unique identifier of the quote item within the overall quote entity

quoteItems[].​supplierstring(SupplierId)^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe

Example: "SUPPLIER2"
quoteItems[].​sitesArray of objects(Site)>= 2 itemsrequired
quoteItems[].​sites[].​namestringrequired

The name of the site

Example: "Strategic Imperative Offices"
quoteItems[].​sites[].​addressobject(AddressIdentifier)required

Address identifier for location including type of identifier.

quoteItems[].​sites[].​address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

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

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

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

Additional address identifiers where available/required for subsequent operations

quoteItems[].​sites[].​postcodestring[ 1 .. 12 ] charactersrequired

Postal code

Example: "TW184LG"
quoteItems[].​sites[].​rolestring(SiteRole)required

The role of the site in an Ethernet connection

Enum"A-END""B-END""MULTI-POINT"
quoteItems[].​sites[].​siteCharacteristicsArray of objects(Characteristic)>= 0 items
quoteItems[].​contractDetailsobject(ContractItem)required

A generic entity to capture the contract details of a product/service.

quoteItems[].​contractDetails.​contractLengthobject(ContractLength)required

A generic entity to capture the duration of a contract

quoteItems[].​contractDetails.​contractLength.​valueinteger>= 0required

The length of the contract

Example: 36
quoteItems[].​contractDetails.​contractLength.​unitstringrequired

The duration unit of the contract

Enum"MONTH""YEAR"
Example: "MONTH"
quoteItems[].​contractDetails.​billingFrequencystringrequired

The frequency the product/service will be invoiced by the supplier

Enum"MONTHLY""QUARTERLY""ANNUALLY"
quoteItems[].​contractDetails.​priceAlterationstring[ 0 .. 64 ] characters

A price override/promotion code available between the tenant and supplier

quoteItems[].​serviceArray of objects(Service)non-emptyrequired
quoteItems[].​service[].​serviceSpecificationobject(ServiceSpecification)required

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

quoteItems[].​service[].​serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

Example: "ftthl2r"
quoteItems[].​service[].​serviceCharacteristicArray of objects(Characteristic)>= 0 itemsrequired
quoteItems[].​service[].​serviceCharacteristic[].​namestring[ 1 .. 50 ] characters^[A-Z_]{5,50}required

Name of the characteristic

Example: "POINT_OF_INTERCONNECT"
quoteItems[].​service[].​serviceCharacteristic[].​valuestring[ 1 .. 50 ] charactersrequired

Value for this characteristic

Example: "1G1G"
curl -i -X POST \
  https://prod.fibregateway.com/v1/quote \
  -H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Conversation-ID: string' \
  -H 'X-Request-ID: string' \
  -d '{
    "externalIdentifier": "QUO-ETH-5001",
    "quoteItems": [
      {
        "id": 1,
        "supplier": "SUPPLIER2",
        "sites": [
          {
            "name": "Strategic Imperative Offices",
            "address": {
              "id": "A00000031882",
              "type": "NAD",
              "additionalIdentifiers": [
                {}
              ]
            },
            "postcode": "TW184LG",
            "role": "A-END",
            "siteCharacteristics": [
              {
                "name": "POINT_OF_INTERCONNECT",
                "value": "1G1G"
              }
            ]
          },
          {
            "name": "Strategic Imperative Offices",
            "address": {
              "id": "A00000031882",
              "type": "NAD",
              "additionalIdentifiers": [
                {}
              ]
            },
            "postcode": "TW184LG",
            "role": "A-END",
            "siteCharacteristics": [
              {
                "name": "POINT_OF_INTERCONNECT",
                "value": "1G1G"
              }
            ]
          }
        ],
        "contractDetails": {
          "contractLength": {
            "value": 36,
            "unit": "MONTH"
          },
          "billingFrequency": "MONTHLY",
          "priceAlteration": "string"
        },
        "service": [
          {
            "serviceSpecification": {
              "id": "ftthl2r"
            },
            "serviceCharacteristic": [
              {
                "name": "POINT_OF_INTERCONNECT",
                "value": "1G1G"
              }
            ]
          }
        ]
      }
    ]
  }'

Responses

Request successful - quote 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
idstring^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]...required

Unique reference identifying this quote request - generated by Fibre Cafe)

Example: "3456cf7d-4471-42e4-a5be-c24ed58a7aa6"
createdstring(date-time)required

Date/time when the quote was created

Example: "2022-01-01T09:09:33.001Z"
externalIdstring[ 0 .. 64 ] charactersrequired

A unique identifier of the quote item within the overall quote entity, as provided by the tenant

Example: "QUO-ETH-5001"
quoteItemsArray of QuoteAvailable (object) or QuoteUnavailable (object) or SupplierAvailabilityFailure (object)(QuotePossibleAvailability)non-emptyrequired
Any of:

A generic entity to capture the quote details of a product/service.

quoteItems[].​idinteger>= 1required

A unique identifier of the quote item within the overall quote entity

quoteItems[].​supplierstring(SupplierId)^\w{1,20}$required

System identifier for a supplier on the Fibre Cafe

Example: "SUPPLIER2"
quoteItems[].​sitesArray of objects(Site)>= 2 itemsrequired
quoteItems[].​sites[].​namestringrequired

The name of the site

Example: "Strategic Imperative Offices"
quoteItems[].​sites[].​addressobject(AddressIdentifier)required

Address identifier for location including type of identifier.

quoteItems[].​sites[].​address.​idstring[ 1 .. 20 ] charactersrequired

Address identifier of given type

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

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

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

Additional address identifiers where available/required for subsequent operations

quoteItems[].​sites[].​postcodestring[ 1 .. 12 ] charactersrequired

Postal code

Example: "TW184LG"
quoteItems[].​sites[].​rolestring(SiteRole)required

The role of the site in an Ethernet connection

Enum"A-END""B-END""MULTI-POINT"
quoteItems[].​sites[].​siteCharacteristicsArray of objects(Characteristic)>= 0 items
quoteItems[].​contractDetailsobject(ContractItem)required

A generic entity to capture the contract details of a product/service.

quoteItems[].​contractDetails.​contractLengthobject(ContractLength)required

A generic entity to capture the duration of a contract

quoteItems[].​contractDetails.​contractLength.​valueinteger>= 0required

The length of the contract

Example: 36
quoteItems[].​contractDetails.​contractLength.​unitstringrequired

The duration unit of the contract

Enum"MONTH""YEAR"
Example: "MONTH"
quoteItems[].​contractDetails.​billingFrequencystringrequired

The frequency the product/service will be invoiced by the supplier

Enum"MONTHLY""QUARTERLY""ANNUALLY"
quoteItems[].​contractDetails.​priceAlterationstring[ 0 .. 64 ] characters

A price override/promotion code available between the tenant and supplier

quoteItems[].​serviceArray of objects(Service)non-emptyrequired
quoteItems[].​service[].​serviceSpecificationobject(ServiceSpecification)required

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

quoteItems[].​service[].​serviceSpecification.​idstring[ 1 .. 50 ] charactersrequired

Unique identifier for this service specification

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

Name of the service

Example: "FTTH"
quoteItems[].​service[].​serviceCharacteristicArray of objects(Characteristic)>= 0 itemsrequired
quoteItems[].​service[].​serviceCharacteristic[].​namestring[ 1 .. 50 ] characters^[A-Z_]{5,50}required

Name of the characteristic

Example: "POINT_OF_INTERCONNECT"
quoteItems[].​service[].​serviceCharacteristic[].​valuestring[ 1 .. 50 ] charactersrequired

Value for this characteristic

Example: "1G1G"
quoteItems[].​supplierQuoteIdstring[ 0 .. 64 ] charactersrequired

A unique identifier of the quote item within the overall quote entity, as provided by the supplier

Example: "SUPP2-QUO-ETH-5001"
quoteItems[].​estimatebooleanrequired

Set to true if the quote provided is considered an advisory quote or estimate and final quote provided as part of the order process.

Example: false
quoteItems[].​validForstring(date-time)required

Date/time the quote remains valid

Example: "2022-01-01T09:45:39.001Z"
quoteItems[].​quotePricesArray of objects(QuotePrice)>= 0 itemsrequired

The price of the quote as provided by the supplier for a product/service.

quoteItems[].​quotePrices[].​productstring<= 100 charactersrequired

The product or add-on the price relates to, as defined by the supplier

quoteItems[].​quotePrices[].​productLocationstring<= 64 characters

The location the product is served from, as defined by the supplier. Only provided if it impacts price.

quoteItems[].​quotePrices[].​priceTypestringrequired

The type of price

Enum"ONE_OFF""RECURRING"
quoteItems[].​quotePrices[].​pricePeriodstring

The period the price applies

Enum"ONCE""DAILY""WEEKLY""MONTHLY""QUARTERLY""ANNUALLY"
quoteItems[].​quotePrices[].​priceobject(Price)

A generic entity to capture the price of a product/service.

quoteItems[].​quotePrices[].​descriptionstring[ 0 .. 64 ] characters

A description of the price

Response
application/json
{ "id": "3456cf7d-4471-42e4-a5be-c24ed58a7aa6", "created": "2022-01-01T09:09:33.001Z", "externalId": "QUO-ETH-5001", "quoteItems": [ {} ] }

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