Download OpenAPI specification:Download
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.
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’ |
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) |
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_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”
"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:
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 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 |
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 |
Authentication is by means of HTTPS client certificate. It is also restricted to pre-agreed source IP addresses.
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
notifications related to a job.
Job notifications sent by installer
required | object (jobHeader) |
required | object (engineerDetails) |
Job notifications sent by cityfibre
{- "id": 1,
- "jsonrpc": "2.0",
- "method": "notifyJob",
- "params": {
- "jobHeader": {
- "requestorDunsId": "CF12345678",
- "providerDunsId": " P987654321",
- "serviceId": " S12345",
- "requestorJobId": "GVFSWHEFL9Y1FZF84ZF63KF2FUOK0F0N",
- "providerJobId": "115543",
- "eventTimestamp": "2022-03-05T15:16:45.8587916+01:00"
}, - "engineerDetails": {
- "firstName": "First",
- "surname": "Last",
- "telephoneNumber": "07788899988",
- "employeeNumber": "123456"
}
}
}
{- "id": 3,
- "sent": "2022-03-18T17:39:21+0000",
- "method": "notifyJob",
- "ref": "S114677",
- "content": {
- "jobHeader": {
- "requestorDunsId": "CF12345678",
- "providerDunsId": "P987654321",
- "serviceId": "S12345",
- "requestorJobId": "GVFSWHEFL9Y1FZF84ZF63KF2FUOK0F0N",
- "providerJobId": "115517",
- "eventTimestamp": "2022-03-05T08:57:31+0100"
}, - "networkConfigComplete": {
- "details": "ONT Serial Number Set",
- "success": true
}
}, - "response": {
- "jsonrpc": "2.0",
- "result": { },
- "id": "1"
}
}
Payload to close a job.
Acknowledgement of the message.
{- "id": 1,
- "jsonrpc": "2.0",
- "method": "closeJob",
- "params": {
- "jobHeader": {
- "requestorDunsId": "CF12345678",
- "providerDunsId": "P987654321",
- "serviceId": "S12345",
- "requestorJobId": "GVFSWHEFL9Y1FZF84ZF63KF2FUOK0F0N",
- "providerJobId": "115516",
- "eventTimestamp": "2022-03-28T13:07:17.4709569+01:00"
}, - "installType": {
- "jobCodes": [
- "ResExtInstall1",
- "CPEInst1"
], - "cityCode": "MK"
}, - "activityStartTime": "2022-03-28T12:07:18.15",
- "activityEndTime": "2022-03-28T12:53:36.43",
- "closureDetails": {
- "closureCode": "CON",
- "secondaryClosureCode": "CON01",
- "secondaryClosureCodeDescription": "Incomplete Network",
- "closureNotes": "Q50m fibre reel 1m bft 10m patchlead to wallbox ont in position as agreed prior to install all light readings are in speck customer happy with all install ",
- "complete": "True"
}, - "testResults": {
- "speedUpstream": 109,
- "speedDownstream": 76,
- "lightLevel": 17.3
}, - "nodeDetails": {
- "aerialInstallation": "False",
- "aerialPoleCableCount": 0,
- "aerialSplitterCount": 0,
- "patchMadeInCabinet": "True"
}, - "closureDocuments": {
- "preInstallAgreementPDF": "JVBERi0xLjQKMSAwIG9iago8PAovV",
- "postInstallAgreementPDF": "JVBERi0xLjQKMSAwIG9iago8PAovV",
- "wayleaveJpeg": "",
- "exfoTestPDF": ""
}
}
}
{ }
Payload to create a job.
Acknowledgement of the message.
{- "id": 2,
- "sent": "2022-03-18T17:39:21+0000",
- "method": "createJob",
- "ref": "S114677",
- "content": {
- "jobHeader": {
- "serviceId": "S114677",
- "requestorJobId": "GVFSWHEFL9Y1FZF84ZF63KF2FUOK0F0N",
- "providerJobId": "",
- "buyerReferenceId": "ABCD123456",
- "eventTimestamp": "2022-03-18T10:39:21+0000",
- "providerDunsId": "P12345678",
- "requestorDunsId": "CF12345678"
}, - "siteContactDetails": {
- "name": "Jane Smith",
- "telephoneNumber": "07654321987"
}, - "appointmentTime": "2022-02-16T08:00:00+0000",
- "requiredBy": "2024-09-15",
- "accessRestrictions": "Brick Wall",
- "hazards": "Noisy Migration",
- "installType": {
- "cityCode": "MK",
- "jobCodes": [
- "fttpers"
]
}, - "siteAddress": {
- "locationId": "a09D000002OR784IAD",
- "buildingNumber": "79",
- "thoroughfareName": "CORN HILL",
- "dependentLocality": "TWO MILE ASH",
- "postTown": "MILTON KEYNES",
- "postcode": "MK8 8EZ"
}, - "siteCoordinates": {
- "latitude": 52.037429,
- "longitude": -0.804712
}, - "cabinetAddress": {
- "locationId": "MK-1-PN81-SN5",
- "thoroughfareName": "STONE HILL",
- "dependentLocality": "TWO MILE ASH",
- "postTown": "Milton Keynes",
- "postcode": "MK8 8DN"
}, - "cabinetCoordinates": {
- "latitude": 52.036904,
- "longitude": -0.8063591078
}, - "installInformation": {
- "cabinetSplitterPort": "MK-1-PN81-SN5-CP1-5-PT05",
- "lineProfile": "G110/15/30",
- "communicationsServiceProvider": "ISP1"
}, - "attachments": [
- {
- "title": "MK-016328 Post Install Agreement 2022-02-16.pdf",
- "contentType": "application/pdf",
- "content": "JVBERi0xLjQKMSAwIG9iago8PAovVGl0bGUgKP7/KQovQ3JlYXRvciAo"
}
], - "additionalSiteContactDetails": [
- {
- "name": "John Smith",
- "telephoneNumber": "07654321988"
}
], - "notes": [
- {
- "timestamp": "2022-03-18T10:39:21+0000",
- "installationNotes": "Please install Router Type WIFI2, record barcode",
- "text": "Demand Point Type: SDU"
}
], - "confidenceFactor": 10,
- "dropArchitectureType": "DPA",
- "networkTechnologyType": "XGS-PON",
- "ontVendor": "Calix",
- "emergencyResponseServicesJobDetails": {
- "iTaskRef": "REFERENCE_TO_ITASK",
- "incidentRef": "REFERENCE_TO_INCIDENT",
- "faultDescription": "FAULT_DESCRIPTION",
- "accessNeeded": true
}, - "propertyFlags": "CHP DAN",
- "projectReference": "name of the project related to the workorder",
- "permittedONTs": "permitted ONTs type of the workorder",
- "ispMigration": "ispMigration of the workorder",
- "description": "Description of the workorder"
}, - "response": {
- "jsonrpc": "2.0",
- "result": {
- "providerJobId": "VF322324"
}, - "id": "1"
}
}
{ }
Payload to cancel a job.
Acknowledgement of the message.
{- "id": 2,
- "sent": "2022-03-18T17:39:21+0000",
- "method": "cancelJob",
- "ref": "S114677",
- "content": {
- "jobHeader": {
- "serviceId": "S114677",
- "requestorJobId": "GVFSWHEFL9Y1FZF84ZF63KF2FUOK0F0N",
- "providerJobId": "1234567",
- "buyerReferenceId": "ABCD123456",
- "eventTimestamp": "2022-03-18T17:39:21+0000",
- "providerDunsId": "P12345678",
- "requestorDunsId": "CF12345678"
}
}, - "response": {
- "jsonrpc": "2.0",
- "result": { },
- "id": "1"
}
}
{ }