openapi: 3.1.0
info:
title: Utilita Status API
version: '2'
summary: Public, anonymous read API for Utilita Energy service status, components, incidents and scheduled maintenance.
description: >-
Utilita Energy publishes a public status page at https://status.utilita.co.uk/ running on
Atlassian Statuspage, and that page exposes the standard Statuspage v2 read API on the Utilita
domain. It is the only public, anonymous, machine-readable API surface API Evangelist has been
able to verify for Utilita: it returns the live operational state of Utilita's own components —
SMETS1 / SMETS1 (DCC Enrolled) / SMETS2 smart meters, Guest Payments, PayPoint and PayZone in-store
payments, the PayPoint IVR top-up line, Open Banking, My Utilita (app and web portal), Power-up
functionality, utilita.co.uk, join.utilita.co.uk, the Contact Centre, telephone lines, the chatbot,
smart meter installations and the smart metering network.
PROVENANCE — this document was GENERATED by API Evangelist from live anonymous probes of the eight
endpoints Utilita's own API documentation page (https://status.utilita.co.uk/api) lists. Utilita
does not publish an OpenAPI document. Every path, response shape and example below was observed on
2026-07-27; each operation carries an `x-evidence` block recording the URL probed, the HTTP status
returned and the date. No operation, parameter or field has been invented — the API is read-only
and has no documented request parameters.
contact:
name: Utilita Help
url: https://utilita.co.uk/help
license:
name: Not published
url: https://www.atlassian.com/legal/product-specific-terms#statuspage-specific-terms
x-platform: Atlassian Statuspage
x-status-page-id: lgm23svnh0xr
x-generated-by: API Evangelist enrichment pipeline (live endpoint observation)
x-generated-on: '2026-07-27'
x-documentation: https://status.utilita.co.uk/api
externalDocs:
description: Utilita Status Page API documentation (published by Utilita on its status page)
url: https://status.utilita.co.uk/api
servers:
- url: https://status.utilita.co.uk/api/v2
description: Production — public, anonymous, no authentication required
tags:
- name: Status
description: Overall page status and rolled-up summary.
- name: Components
description: The individual Utilita services tracked on the status page.
- name: Incidents
description: Unplanned service incidents and their update timeline.
- name: Scheduled Maintenance
description: Planned maintenance windows.
security: []
paths:
/summary.json:
get:
operationId: getSummary
summary: Get status page summary
description: >-
Returns a rollup of the page: the status indicator, every component and its status, all
unresolved incidents, and any upcoming or in-progress scheduled maintenances. One call
answers "is anything wrong at Utilita right now".
tags: [Status]
security: []
responses:
'200':
description: Status page summary.
content:
application/json:
schema:
$ref: '#/components/schemas/Summary'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/summary.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-summary.json
/status.json:
get:
operationId: getStatus
summary: Get overall status indicator
description: >-
Returns the page object and a single rolled-up status indicator/description
(for example `none` / "All Systems Operational"). This is the endpoint the status
page itself polls for change.
tags: [Status]
security: []
responses:
'200':
description: Overall status indicator.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/status.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-status.json
/components.json:
get:
operationId: getComponents
summary: List components
description: >-
Returns every component tracked on the Utilita status page, including group components
(Payments, My Utilita, Websites, Contact Centre) and their children, each with its current
status.
tags: [Components]
security: []
responses:
'200':
description: All components on the page.
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentsResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/components.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-components.json
/incidents.json:
get:
operationId: getIncidents
summary: List recent incidents
description: >-
Returns the most recent incidents on the page (resolved and unresolved), each with its
full `incident_updates` timeline and the components it affected.
tags: [Incidents]
security: []
responses:
'200':
description: Recent incidents.
content:
application/json:
schema:
$ref: '#/components/schemas/IncidentsResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/incidents.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
observed_incident_count: 50
note: >-
Verbatim response not stored as an example — the observed payload was ~208 KB of incident
history. Shape is identical to the unresolved-incidents example.
/incidents/unresolved.json:
get:
operationId: getUnresolvedIncidents
summary: List unresolved incidents
description: Returns only the incidents that are not yet resolved. Empty array when all systems are operational.
tags: [Incidents]
security: []
responses:
'200':
description: Unresolved incidents.
content:
application/json:
schema:
$ref: '#/components/schemas/IncidentsResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/incidents/unresolved.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-unresolved-incidents.json
/scheduled-maintenances.json:
get:
operationId: getScheduledMaintenances
summary: List scheduled maintenances
description: Returns the most recent scheduled maintenance windows, past and future, with their update timelines.
tags: [Scheduled Maintenance]
security: []
responses:
'200':
description: Scheduled maintenances.
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledMaintenancesResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/scheduled-maintenances.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
note: >-
Verbatim response not stored as an example — the observed payload was ~467 KB of
maintenance history. Shape is identical to the upcoming-maintenances example.
/scheduled-maintenances/upcoming.json:
get:
operationId: getUpcomingScheduledMaintenances
summary: List upcoming scheduled maintenances
description: Returns only maintenance windows scheduled in the future.
tags: [Scheduled Maintenance]
security: []
responses:
'200':
description: Upcoming scheduled maintenances.
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledMaintenancesResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/scheduled-maintenances/upcoming.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-upcoming-maintenances.json
/scheduled-maintenances/active.json:
get:
operationId: getActiveScheduledMaintenances
summary: List active scheduled maintenances
description: Returns only maintenance windows that are in progress right now. Empty array when none are running.
tags: [Scheduled Maintenance]
security: []
responses:
'200':
description: Active scheduled maintenances.
content:
application/json:
schema:
$ref: '#/components/schemas/ScheduledMaintenancesResponse'
'404':
$ref: '#/components/responses/NotFound'
x-evidence:
url: https://status.utilita.co.uk/api/v2/scheduled-maintenances/active.json
http_status: 200
content_type: application/json; charset=utf-8
probed: '2026-07-27'
example: examples/utilita-status-active-maintenances.json
components:
responses:
NotFound:
description: The requested resource could not be found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
example:
errors:
- The requested resource could not be found.
schemas:
Page:
type: object
description: Identity of the Utilita status page the response came from.
properties:
id:
type: string
description: Statuspage page identifier.
example: lgm23svnh0xr
name:
type: string
example: Utilita Status Page
url:
type: string
format: uri
example: https://status.utilita.co.uk
time_zone:
type: string
example: Europe/London
updated_at:
type: string
format: date-time
required: [id, name, url, updated_at]
StatusIndicator:
type: object
description: Rolled-up status of the whole page.
properties:
indicator:
type: string
description: Severity indicator observed on this page.
enum: [none, minor, major, critical, maintenance]
example: none
description:
type: string
example: All Systems Operational
required: [indicator, description]
Component:
type: object
description: A single Utilita service tracked on the status page.
properties:
id:
type: string
example: y54fk6gsgfjr
name:
type: string
example: SMETS1 Smart Meters
description:
type: [string, 'null']
status:
type: string
enum: [operational, degraded_performance, partial_outage, major_outage, under_maintenance]
example: operational
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
position:
type: integer
page_id:
type: string
group:
type: boolean
description: True when this component is a group containing other components.
group_id:
type: [string, 'null']
description: Identifier of the parent group component, when this component belongs to one.
only_show_if_degraded:
type: boolean
showcase:
type: boolean
start_date:
type: [string, 'null']
format: date
required: [id, name, status]
AffectedComponent:
type: object
description: A component touched by an incident update, with its status transition.
properties:
code:
type: string
description: Component id.
name:
type: string
old_status:
type: string
new_status:
type: string
IncidentUpdate:
type: object
description: One entry in an incident's update timeline.
properties:
id:
type: string
status:
type: string
enum: [investigating, identified, monitoring, resolved, postmortem, scheduled, in_progress, verifying, completed]
body:
type: string
incident_id:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
display_at:
type: string
format: date-time
affected_components:
type: [array, 'null']
items:
$ref: '#/components/schemas/AffectedComponent'
deliver_notifications:
type: boolean
custom_tweet:
type: [string, 'null']
tweet_id:
type: [string, 'null']
required: [id, status, body, incident_id]
Incident:
type: object
description: An unplanned service incident.
properties:
id:
type: string
example: z7l2g8m2n80d
name:
type: string
example: Card Payments Authorisation Issue
status:
type: string
enum: [investigating, identified, monitoring, resolved, postmortem]
impact:
type: string
enum: [none, minor, major, critical]
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
monitoring_at:
type: [string, 'null']
format: date-time
resolved_at:
type: [string, 'null']
format: date-time
started_at:
type: string
format: date-time
shortlink:
type: string
format: uri
page_id:
type: string
incident_updates:
type: array
items:
$ref: '#/components/schemas/IncidentUpdate'
components:
type: array
items:
$ref: '#/components/schemas/Component'
required: [id, name, status, impact]
ScheduledMaintenance:
type: object
description: A planned maintenance window.
properties:
id:
type: string
name:
type: string
status:
type: string
enum: [scheduled, in_progress, verifying, completed]
impact:
type: string
enum: [none, minor, major, critical, maintenance]
scheduled_for:
type: string
format: date-time
scheduled_until:
type: string
format: date-time
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
monitoring_at:
type: [string, 'null']
format: date-time
resolved_at:
type: [string, 'null']
format: date-time
started_at:
type: string
format: date-time
shortlink:
type: string
format: uri
page_id:
type: string
incident_updates:
type: array
items:
$ref: '#/components/schemas/IncidentUpdate'
components:
type: array
items:
$ref: '#/components/schemas/Component'
required: [id, name, status, scheduled_for, scheduled_until]
StatusResponse:
type: object
properties:
page:
$ref: '#/components/schemas/Page'
status:
$ref: '#/components/schemas/StatusIndicator'
required: [page, status]
ComponentsResponse:
type: object
properties:
page:
$ref: '#/components/schemas/Page'
components:
type: array
items:
$ref: '#/components/schemas/Component'
required: [page, components]
IncidentsResponse:
type: object
properties:
page:
$ref: '#/components/schemas/Page'
incidents:
type: array
items:
$ref: '#/components/schemas/Incident'
required: [page, incidents]
ScheduledMaintenancesResponse:
type: object
properties:
page:
$ref: '#/components/schemas/Page'
scheduled_maintenances:
type: array
items:
$ref: '#/components/schemas/ScheduledMaintenance'
required: [page, scheduled_maintenances]
Summary:
type: object
properties:
page:
$ref: '#/components/schemas/Page'
status:
$ref: '#/components/schemas/StatusIndicator'
components:
type: array
items:
$ref: '#/components/schemas/Component'
incidents:
type: array
items:
$ref: '#/components/schemas/Incident'
scheduled_maintenances:
type: array
items:
$ref: '#/components/schemas/ScheduledMaintenance'
required: [page, status, components, incidents, scheduled_maintenances]
Error:
type: object
description: >-
Error envelope observed on this API. Not RFC 9457 problem+json — a plain JSON object with an
`errors` array of human-readable strings, served as application/json.
properties:
errors:
type: array
items:
type: string
required: [errors]