# Retrieve current service problem details including updates (KCIs). This endpoint is called to retrieve the current details (including KCIs) about a service problem request. Endpoint: GET /service-problems/{id} Version: 1.17 Security: oauth2 ## Header parameters: - `X-Request-ID` (string, required) Unique identifier to identify request and response events across the Fibre Cafe gateway - `X-Conversation-ID` (string, required) Identifier to track message journey across the Fibre Cafe gateway ## Path parameters: - `id` (string, required) Find order details relating to the specified service problem ## Response 200 fields (application/json): - `id` (number, required) Unique reference identifying this service problem (generated by Fibre Cafe) Example: 123 - `status` (string, required) Service problem lifecycle adapted from TMF656 - update events (KCIs) will be sent to the tenant as the service problem transitions from one state to the other. Enum: "RECEIVED_BY_GATEWAY", "SENT_TO_SUPPLIER", "FAILED_TO_SEND", "REJECTED", "ACKNOWLEDGED", "IN_PROGRESS", "PENDING", "HELD", "NETWORK_INCIDENT", "PENDING_AMENDMENT", "PENDING_CANCELLATION", "CANCELLED", "RESOLVED", "COMPLETED" - `created` (string) Date/time when the service problem was created Example: "2022-01-01T09:09:33.001Z" - `updated` (string) Date/time when the service problem was last updated Example: "2022-01-01T09:45:39.001Z" - `supplierIdentifier` (string) Service problem reference generated by the supplier once acknowledged (for information only) Example: "A123X" - `updates` (array) Updates (KCIs) received about the service problem. - `updates.id` (string, required) Unique identifier for this update (generated by the Fibre Cafe) Example: "3456cf7d-4471-42e4-a5be-c24ed58a7aa6" - `updates.supplier` (string, required) System identifier for a supplier on the Fibre Cafe that is associated with this entity Example: "SUPPLIER1" - `updates.sequenceNumber` (number) Sequence number of this KCI to ensure ordering Example: 1 - `updates.issuedOn` (string) Date/time when supplier issued this update Example: "2022-01-10T09:00:00.000Z" - `updates.receivedOn` (string) Date/time when Fibre Cafe received this update Example: "2022-01-10T09:00:00.000Z" - `updates.deliveredOn` (string) Date/time when Fibre Cafe delivered this update to the tenant API Example: "2022-01-10T09:00:00.000Z" - `updates.deliveryStatus` (string, required) State model for KCIs. Enum: "PENDING", "DELIVERED" - `updates.updateType` (string, required) Type of order update. Enum: "ACTION_REQUIRED", "INFORMATIONAL", "ERROR" - `updates.supplierNotes` (array) The supplier has added these note(s) about the entity relating to this KCI - `updates.supplierNotes.note` (string, required) Note added by the supplier Example: "Lorem ipsum dolor sit amet..." - `updates.supplierNotes.type` (string) Type of note if available e.g. Site Visit Notes, Customer Update Example: "Engineer Note" - `updates.supplierNotes.created` (string, required) Date/time when the note was created Example: "2022-01-01T09:09:33.001Z" - `updates.information` (object) Represents an informational update from the supplier - these are given a reason type to aid with any process/flows on the tenant system. - `updates.information.type` (string, required) Type of informational order update: - CREATED : Order has been created by supplier (unsolicited cease) - ACKNOWLEDGED : Supplier has acknowledged receipt of the order (KCI1) - COMMITTED : Supplier has committed to fulfillment of the order (KCI2) - DELAY : There is a problem causing a delay with the order - RESUMED : The problem causing the delay has been resolved without impact on target date - REAPPOINTED : Supplier has re-appointed the order (if not suitable then treat as a REAPPOINT) - RESCHEDULED : Supplier makes an unsolicited change to the target date - ADDITIONAL : Supplier has updated the order and flagged that additional information is available - WARNING : Supplier has updated the order and flagged a warning - RESUBMIT : Tenant needs to resubmit the request - UPDATE : Supplier has updated the order - AMENDED : Supplier has accepted and applied the requested order amendment - CANCELLED : Supplier has accepted and applied the requested order cancellation - TERMINATED : Supplier has rejected or cancelled the order and cannot fulfil it - COMPLETED : Supplier has completed the order (KCI3) Enum: "CREATED", "ACKNOWLEDGED", "COMMITTED", "DELAY", "RESUMED", "REAPPOINTED", "RESCHEDULED", "ADDITIONAL", "RESUBMIT", "WARNING", "UPDATE", "AMENDED", "CANCELLED", "TERMINATED", "COMPLETED" - `updates.information.code` (string) Code representing problem - these may be sent as informational or action required updates depending on whether the tenant is required to/can resolve the problem. - ACCESS_ISSUE - ACTIVATION_FAILED - ADDITIONAL_WORK - APPOINTMENT_NOT_REQUIRED - CAPACITY_ISSUE - COST_ISSUE - CUSTOMER_CHANGED_MIND - FAULT_AT_NODE - FAULT_AT_ONT - FAULT_AT_POP - INFORMATION_REQUIRED - INSTALL_FAILED - INVALID_REQUEST - LINKED_ORDER_ISSUE - NETWORK_ISSUE - NETWORK_UNAVAILABLE - NOT_IMPLEMENTED - NO_LONGER_REQUIRED - OTHER - PARTIAL_INSTALL - PLANNING_ISSUE - PROPERTY_UNOCCUPIED - REJECTION - ROUTER_NOT_AVAILABLE - SITE_UNSAFE - SURVEY_REQUIRED - TELECARE_ISSUE - TIMED_OUT - UNABLE_TO_ATTEND - UNKNOWN_FAULT - WAYLEAVE_ISSUE Example: "NETWORK_ISSUE" - `updates.information.text` (string) Textual information about this update - e.g. reason for the delay Example: "Resolving network issue" - `updates.information.supplierCodes` (array) Supplier's reason or problem code - where available Example: ["313"] - `updates.information.supplierCode` (string) Supplier's reason or problem code - deprecated: replaced by supplierCodes array to allow for multiple underlying supplier codes Example: "313" - `updates.action` (object) Specifies that an action is required by the tenant to continue this request. For example, provide information or rebook an appointment. - `updates.action.type` (string, required) Type of action required from the tenant for this update: - INFORMATION_REQUIRED : Supplier requires additional information from the tenant - REAPPOINT : Supplier requires the tenant to re-appoint - RESUBMIT : Supplier requires the tenant to resubmit the request as it failed - CONFIRM : Supplier has resolved the request and is awaiting acceptance or rejection - CONTACT_CUSTOMER : Supplier has requested the tenant to contact the customer to continue - CONTACT_REAPPOINT : Supplier requires the tenant to re-appoint but suggests contacting the customer first Enum: "INFORMATION_REQUIRED", "REAPPOINT", "RESUBMIT", "CONFIRM", "CONTACT_CUSTOMER", "CONTACT_REAPPOINT" - `updates.action.text` (string) Textual information about this update - e.g. reason why reappoint is needed Example: "Fault between Node and Toby." - `updates.error` (object) Represents a failure that usually means this order has failed. The underlying cause will be returned but will likely require help from the Fibre Cafe support team or by contacting the supplier directly. Every error is uniquely identified via a UUID which should be reported to the support team as required. Possible error types: - NOT_AUTHORISED : An authorisation issue accessing the supplier API using the tenant's credentials. - SUPPLIER_FAULT : The supplier API has encountered an unexpected error or is not responding to the Fibre Cafe. - SUPPLIER_TIMED_OUT : The Fibre Cafe did not receive a timely response from the supplier. - GATEWAY_FAULT : The Fibre Cafe gateway has encountered an unexpected error. - `updates.error.uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `updates.error.code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `updates.error.messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] - `updates.serviceProblemResolution` (object) Details of resolution to a service problem request. - `updates.serviceProblemResolution.id` (number, required) Unique reference identifying this service problem resolution (generated by Fibre Cafe) Example: 123 - `updates.serviceProblemResolution.serviceProblemId` (number, required) Unique reference identifying the service problem (generated by Fibre Cafe) Example: 123 - `updates.serviceProblemResolution.status` (string, required) State model for service problem resolution. Enum: "PENDING", "REJECTED", "ACCEPTED" - `updates.serviceProblemResolution.resolvedDate` (string, required) Date/time the problem was resolved by the supplier Example: "2022-01-10T09:00:00.000Z" - `updates.serviceProblemResolution.closedDate` (string) Date/time the problem was closed by the tenant or supplier Example: "2022-01-10T09:00:00.000Z" - `updates.serviceProblemResolution.resolutionDetails` (object, required) Details of resolution to a service problem request. - `updates.serviceProblemResolution.resolutionDetails.resolutionCode` (string, required) A code published on the developer portal to uniquely identify the problem resolution. Enum: "ACCESS_ISSUE", "BACKHAUL_CORE_NETWORK", "CUSTOMER_FAULT", "CUSTOMER_FAULT_B_END", "CUSTOMER_FAULT_EQUIPMENT", "CUSTOMER_FAULT_MODEM", "CUSTOMER_FAULT_WIRING", "EXTERNAL_REIN", "INTERNAL_REIN", "LINE_TEST_NORMAL", "NETWORK_CABLING", "NETWORK_ISSUE", "NETWORK_UPLIFT", "NO_FAULT_FOUND", "NOT_REPRODUCIBLE", "OTHER", "PLANNED_ENGINEERING_WORKS", "PROBLEM_CANCELLED", "SERVICE_RESTRICTION", "SUPPLIER_CPE_ISSUE" - `updates.serviceProblemResolution.resolutionDetails.resolutionCategory` (string) The category the resolution code Example: "FAULTY_EQUIPMENT" - `updates.serviceProblemResolution.resolutionDetails.resolutionText` (string) Detailed text provided by the supplier regarding the problem resolution - `updates.serviceProblemResolution.resolutionDetails.supplierCodes` (array) Code(s) provided by the supplier regarding the resolution Example: ["R9"] - `updates.serviceProblemResolution.resolutionDetails.faultCode` (array) Code(s) provided by the supplier regarding the problem fault Example: ["DAMAGED_ONT"] - `updates.serviceProblemResolution.slaViolation` (array) Indicates if the resolution has violated the agreed SLAs Example: ["EXCEEDED_SLA_TIME_TO_REPAIR"] - `updates.serviceProblemResolution.tenantNotes` (string) Text from the tenant giving notes or reason for rejection - as applicable Example: "The problem was not resolved" - `updates.serviceProblemAmendment` (object) Represents a request from the tenant to amend an inflight service problem. This will need to be approved and confirmed or rejected by the supplier. - `updates.serviceProblemAmendment.id` (number, required) Unique reference identifying this service problem amendment (generated by Fibre Cafe) Example: 123 - `updates.serviceProblemAmendment.status` (string, required) State model for amendment and cancellation requests. Enum: "RECEIVED_BY_GATEWAY", "PENDING", "FAILED_TO_SEND", "REJECTED", "COMPLETED" - `updates.serviceProblemAmendment.serviceProblemId` (number, required) Unique reference identifying the service problem to be amended Example: 123 - `updates.serviceProblemAmendment.problemText` (string) The description of problem being raised as defined by the end user. Example: "The service keeps dropping between 6pm and 9pm every evening." - `updates.serviceProblemAmendment.characteristics` (array) Update any characteristics of the problem - `updates.serviceProblemAmendment.characteristics.name` (string, required) Name of the characteristic - `updates.serviceProblemAmendment.characteristics.value` (string, required) Value for this characteristic - `updates.serviceProblemAmendment.hazards` (string) Hazard information about the site where the service will be restored Example: "Hazardous materials stored on site" - `updates.serviceProblemAmendment.onSiteRestrictions` (string) Information about restrictions on the site where the service will be restored Example: "Restricted access" - `updates.serviceProblemAmendment.notes` (string) Notes about the problem which are required by the supplier. This includes additional information that may be required - refer to developer portal Example: "Lorem ipsum dolor sit amet..." - `updates.serviceProblemAmendment.primaryContact` (object) Represents a contact available at the given address. - `updates.serviceProblemAmendment.primaryContact.name` (string, required) Contact name Example: "John Smith" - `updates.serviceProblemAmendment.primaryContact.email` (string) Contact email address (if available) Example: "john@smith.com" - `updates.serviceProblemAmendment.primaryContact.phoneNumber` (string, required) Contact phone number Example: "01234 567890" - `updates.serviceProblemAmendment.secondaryContact` (object) Represents a contact available at the given address. - `updates.serviceProblemAmendment.appointmentReservationId` (number) Unique identifier for the new reserved appointment Example: 345 - `updates.serviceProblemCancellation` (object) Represents a request from the tenant to cancel an inflight service problem. This will need to be approved and confirmed or rejected by the supplier. - `updates.serviceProblemCancellation.id` (number, required) Unique reference identifying this service problem cancellation request (generated by Fibre Cafe) Example: 123 - `updates.serviceProblemCancellation.serviceProblemId` (number, required) Unique reference identifying the service problem to be cancelled Example: 123 - `updates.serviceProblemCancellation.reasonCode` (string, required) Codes representing reason for cancellation of the service problem: - ISSUE_RESOLVED - CUSTOMER_NETWORK_ISSUE - NO_LONGER_REQUIRED - OTHER Example: "CUSTOMER_NETWORK_ISSUE" - `updates.serviceProblemCancellation.text` (string) Textual reason for cancellation - provides more context as applicable Example: "Issue appears to have rectified itself." - `externalIdentifier` (string) The communications provider (CP) identifier for the problem. Used for reference purposes only Example: "DS-2345432345345" - `problemType` (string, required) The type of problem being raised. This will be advised or inferred as part of the service test result Example: "PERFORMANCE" - `serviceId` (string, required) Identifier of an existing live service Example: "SI2345432345345" - `serviceSpecification` (object, required) Details of a service the supplier provides at the selected address. - `serviceSpecification.id` (string, required) Unique identifier for this service specification Example: "ftthl2r" - `serviceSpecification.name` (string) Name of the service Example: "FTTH" - `address` (object) Address identifier for location including type of identifier. - `address.id` (string, required) Address identifier of given type Example: "A00000031882" - `address.type` (string, required) Type of address identifier e.g. UPRN, NAD, DistrictCode, ROBT Example: "NAD" - `address.additionalIdentifiers` (array) Additional address identifiers where available/required for subsequent operations - `supplier` (string, required) System identifier for a supplier on the Fibre Cafe that is associated with this service Example: "DUMMY_SUPPLIER" - `serviceTestId` (number, required) Identifier of a current service test that has been performed against the service prior to raising the service problem Example: 123 - `characteristics` (array, required) List of characteristics providing context on the problem - `appointmentReservationId` (number) Unique identifier for the reserved appointment (if applicable) Example: 345 - `parentServiceProblemId` (number) Unique reference for an issue that is believed to be related, for example a multiline network outage Example: 2443435345 ## Response 400 fields (application/json): - `uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] ## Response 401 fields (application/json): - `uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] ## Response 404 fields (application/json): - `uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] ## Response 422 fields (application/json): - `uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] ## Response 500 fields (application/json): - `uuid` (string, required) Unique identifier of this error - for tracing purposes Example: "87432dfb-2e47-4532-a1b7-4b113d48867d" - `code` (string, required) Fibre Cafe error codes Enum: "GATEWAY_FAULT", "INVALID_REQUEST", "MALFORMED_REQUEST", "NOT_AUTHORISED", "NOT_FOUND", "NOT_IMPLEMENTED", "SUPPLIER_FAULT", "SUPPLIER_TIMED_OUT", "TENANT_FAULT" - `messages` (array, required) Message describing the error Example: ["e.g. Invalid value for field x - accepted values are y"] ## Response 403 fields ## Response 503 fields