CityFibre - Partner Installation (1.0.0)

Download OpenAPI specification:Download

Introduction

CityFibre has implemented an automated process to accommodate the dispatch of Job Packs related to the installation of FTTH/P services. This requires the Partner to follow the same process in terms of the integration points, message types and message payloads relayed between each party. The implementation is based on JSON over RPC and has a common definition for inbound and outbound calls.

FTTH/P Installation

General Process Flows

Standard Installation Flow

Standard Installation Flow
Standard Installation Flow
  • CityFibre sends createJob for each job pack due. N.B. this can be at any point from when the Service Order was received to the day prior to installation.
  • Installation Partner responds with providerJobId
  • Installation Partner assigns the job to an engineer and sends notifyJob with Engineer Details
  • On the day of installation
    • Installation Partner sends notifyJob when the engineer has indicated that they are en-route to the installation with coordinates/time
    • Installation Partner sends notifyJob when the engineer has indicated that they are onsite with coordinates/time
    • Installation Partner sends notifyJob when the Engineer scans QR Code on the ONT, with the ONT FSAN and Serial Number
    • CityFibre sends notifyJob when ONT is provisioned
    • After additional install steps/tests, Installer sends back closeJob with question based closure and appropriate close and secondary close code with description

Installation Closure Codes and Description

Closure Codes Description
SP Service Provided
PSP Partial install, CPE Install failed
HAZ Site Unsafe
RNA/NA No Access (Rectifiable)
NAPUV No Access (Not Rectifiable)
ASQ Sales Query
UNF Unforeseen Circumstance
MBORC Unable to Attend (Notice Given)
FTA Unable to Attend (No Notice)
CON Fault at Node (or between Toby and Node)
POP Fault at POP/FEx (or between Node and POP/FEx)
ONT Fault at ONT (or between Toby and ONT)
CPR Fault at Pole (Cherry Picker required)
NTR No Truck Roll
Other reason Other codes sent, we will process as ‘Other reason’

Installation Secondary Closure Codes and Description

The codes and descriptions below should be included on the closeJob notification when closureCode is either CON or POP. The secondary closure code provides additional detail as to the closure reason.

Closure Code Secondary Closure Code Secondary Closure Code Description
CON CON01 Incomplete Network
CON CON02 No Infrastructure present
CON CON03 Openreach D Pole
CON CON04 No Capacity at SN/ASN Available
CON CON05 Toby Move required
CON CON06 Line of Sight issue
CON CON07 Blockage - Gel Wrap
CON CON08 Blockage - Lead In (Openreach)
CON CON09 Unable to blow fibre between the Secondary Node cab and Toby
POP POP01 No Light (SN/PN)
POP POP02 No Light (ASN)
POP POP03 Light reading out of scope (High or Low optical signal)

Installation Question Based Closure

For further details please refer to separately provided Question Based Closure Matrix – which details the relationship between closure and secondary closure codes, question and answer definitions and question flow.

Questions and Answers

"questions_answers":
        [
            {
                "question": "Did Sponge Pass?",
                "question_code": "1100",
                "answer": "Yes",
                "response_received": "2018-01-02T09:32:33+00:00",
                "source": "notifyJob"            },

The question should match the text from the related question The question code should match the ID of the related question The answer should match the answer of the related question The source should match the point in the journey it was sent, either “notifyJob” or “closeJob”

Photos

"questions_answers": [
        {
            "question": "Time of first call Mandatory Photos of call log & Photos of door/house",
            "question_code": "4900",
            "answer": "07:56",
            "response_received": "2023-09-25T11:37:10.9362823+01:00",
            "source": "Closure",
            "files": [
                {
                    "name": "example.jpg",
                    "url": "",
                    "object_path": "s3://URLcode.enta.cloud/example.jpg"
                }
            ]
        },

Files can optionally be included with each structured response, defined in an array. Each file listed should include the following details:

  • name
  • type
  • object_path
  • url (optional) The object_path parameter should be the full S3 endpoint including the filename.

The url is an optional field which if included should be a url which can be used to retrieve the file using a standard http (GET) request. This may be a pre-signed URL generated from S3.
Note that the S3 bucket will be shared with the Installation Partner by CityFibre in advance.

Property Flags

Property Flag Code Description
CHP Cherrypicker needed
DAN Dangerous property location
DTL Indicates that the length of the driveway to the premise is longer than the typical 10m
SUR Indicates 10 day lead time on install and that a survey is required prior to installation
MDU Indicates premises is within a Multi Dwelling Unit
WSD indicates that the premises shares a drive with neighbouring premises

ONT Provisioning

ID (non technical identifier) Success Details ONT Vendors Description
1 True ONT Successfully Provisioned Nokia and Calix Configuration has been successfully pushed to device
2 True ONT Install Successful Nokia and Calix Equivalent green light meaning successful install
3 False ONT Provision Failed. Contact Order Desk Nokia and Calix Issue during provision that needs intervention
4 False Delay – Retrying in 5 minutes Nokia and Calix Provision will be reattempted in 5 minutes
5 False ONT Provision Failed. Incorrect Device Type Used Nokia and Calix ONT Type used does not match the OLT type
6 False ONT Provision Failed. Incorrect provisioning details entered. FSAN or Serial Number incorrect Nokia and Calix FSAN/Serial Number entered doesn’t match required format
7 False ONT Provision Failed. Duplicate Device. Device has been scanned against existing open Installation Activity Nokia and Calix Device has already been used and is recognised against another service

Integration sequence diagrams

Before Installation

Create Job

Before_Installation_Create_Job
Before Installation Start Create Job

Cancel Job

Before_Installation_Start_Cancel_Job
Before Installation Start Cancel Job

Day of Installation

Notify Job

Day_of_Install_Notifications
During Installation Notifications

Authentication

Authentication is by means of HTTPS client certificate. It is also restricted to pre-agreed source IP addresses.

Certificate

Security Scheme Type: mutualTLS

Network Configuration

Cityfibre provides two fixed-address API endpoints for redundancy:

api-gw1.cityfibre.com 52.51.45.11 (IPv6: 2a05:d018:9a3:b500::100)

api-gw2.cityfibre.com 52.58.75.78 (IPv6: 2a05:d014:b31:f200::100)

Messages may be POSTed to either of these. For convenience there is also a round-robin DNS entry: api-gw.cityfibre.com (resolves to both addresses)

Required firewall configuration is as follows.

The CityFibre endpoint is: https://api-gw.cityfibre.com:41223/prod/ftth-installer

Notify

Notify job

notifications related to a job.

SecurityCertificate
Request
Request Body schema: application/json

Job notifications sent by installer

One of:
required
object (jobHeader)
required
object (engineerDetails)
Responses
200

Job notifications sent by cityfibre

post/notifyJob
Request samples
application/json
{
  • "id": 1,
  • "jsonrpc": "2.0",
  • "method": "notifyJob",
  • "params": {
    }
}
Response samples
application/json
{
  • "id": 3,
  • "sent": "2022-03-18T17:39:21+0000",
  • "method": "notifyJob",
  • "ref": "S114677",
  • "content": {
    },
  • "response": {
    }
}

Close

Close job

Payload to close a job.

SecurityCertificate
Request
Request Body schema: application/json
id
required
integer
jsonrpc
required
string
method
required
string
required
object
Responses
200

Acknowledgement of the message.

post/closeJob
Request samples
application/json
{
  • "id": 1,
  • "jsonrpc": "2.0",
  • "method": "closeJob",
  • "params": {
    }
}
Response samples
application/json
{ }

Installation

Create jobWebhook

Payload to create a job.

SecurityCertificate
Request
Request Body schema: application/json
id
required
integer
sent
required
string <date-time>
method
required
string
ref
required
string
required
object
required
object (response)
Responses
200

Acknowledgement of the message.

Request samples
application/json
{
  • "id": 2,
  • "sent": "2022-03-18T17:39:21+0000",
  • "method": "createJob",
  • "ref": "S114677",
  • "content": {
    },
  • "response": {
    }
}
Response samples
application/json
{ }

Cancel jobWebhook

Payload to cancel a job.

SecurityCertificate
Request
Request Body schema: application/json
id
required
integer
sent
required
string <date-time>
method
required
string
ref
required
string
required
object
required
object (response)
Responses
200

Acknowledgement of the message.

Request samples
application/json
{
  • "id": 2,
  • "sent": "2022-03-18T17:39:21+0000",
  • "method": "cancelJob",
  • "ref": "S114677",
  • "content": {
    },
  • "response": {
    }
}
Response samples
application/json
{ }