| 1 | Endpoints | /registerResponse renamed to /consent | REST-idiomatic resource path replacing a verb-phrase URL |
| 2 | Endpoints | /v1/tariff/{mpid}/{tariff_id}/consumer renamed to /v1/tariff/customer | No path params needed; OAuth token provides sufficient consumer identity |
| 3 | Endpoints | GET /v1/users/{user_id} added | Retrieve a single RTI User by ID; same public / supplier-auth access split as GET /v1/users |
| 4 | Endpoints | API versioning added | All paths prefixed with /v1 |
| 5 | Endpoints | Pagination added to GET /v1/suppliers and GET /v1/tariff/{mpid} | limit / offset query params and PaginationMeta response object (total, limit, offset, next_offset) added |
| 6 | Endpoints | Per-operation server overrides added | GET /v1/suppliers, GET /v1/users, GET /v1/users/{user_id} pinned to https://register.tariff.interop; all tariff, consent, webhook, and report endpoints pinned to https://example-supplier.co.uk |
| 7 | Endpoints | Webhook timescale set for tariff.change / tariff.update | Was TBC; set to 60 minutes |
| 8 | Endpoints | Nine filter query params added to GET /v1/tariff/{mpid} | tariff_type, fuel_type, energy_flow, payment_method, ldz_region, meter_type, customer_type, valid_from, valid_to |
| 9 | Schemas | tariff_id changed to prefixed compact UUID | Pattern ^trf_[0-9a-f]{32}$; supplier-generated; prefixed with trf_ |
| 10 | Schemas | user_id changed to prefixed compact UUID | Pattern ^usr_[0-9a-f]{32}$; RECCo-generated; prefixed with usr_ |
| 11 | Schemas | WebhookId changed to format: uuid | Example updated to a valid UUID |
| 12 | Schemas | registration_id changed to format: uuid | Applied to consent response body and DELETE /v1/consent/{registration_id} path parameter |
| 13 | Schemas | Region replaced by LdzRegion | Collapsed dual integer/string encoding into a single string enum (SC, NO, NE, NWT, WMD, EM, EA, NT, SO, SE, WN, WW, SW); field renamed ldz_region throughout |
| 14 | Schemas | TariffRate replaced with FlatPeak rate structure | New hierarchy: TariffScheduleEntry → DaysAndHours → HourlyRate → RateTier; field on TariffDetail named rates |
| 15 | Schemas | unit_price and standing_charge changed to decimal strings | type: string with pattern ^\d+\.\d{2,5}$; 2 to 5 decimal places; avoids floating-point rounding errors |
| 16 | Schemas | PerformanceReport redesigned | availability and success changed from opaque strings to typed floats (availability_pct, success_pct); response_times replaced with response_time_ms object with typed p50, p95, p99 integer fields |
| 17 | Schemas | TariffVersion added | Integer field for tracking descriptive-only corrections to a tariff; prices or time changes require a new tariff |
| 18 | Schemas | UserStatus enum added | Values: active, suspended, disabled, removed; used on both SupplierRegisterEntry and RtiUserRegisterEntry |
| 19 | Schemas | SupportContact type added | Freeform string for email, URL, or telephone; required on both supplier and RTI User records |
| 20 | Schemas | display_name added to SupplierRegisterEntry and RtiUserRegisterEntry | Required short trading name for display to consumers; separate from legal name on RTI User |
| 21 | Schemas | MeterType enum added | Values: single_rate, multi_rate, smart, prepayment; added to TariffDetail and TariffSummary |
| 22 | Schemas | CustomerType enum added | Values: residential, business; added to TariffDetail and TariffSummary |
| 23 | Schemas | vat_included added to TariffDetail | Boolean; indicates whether prices include VAT |
| 24 | Schemas | vat_rate added to TariffDetail | Integer 0–100; required when vat_included is false; standard domestic electricity rate is 5% |
| 25 | Schemas | TariffSummary extended | Added tariff_type, fuel_type, meter_type, customer_type to the lightweight listing record |
| 26 | Schemas | FuelType enum values changed | From single-character E / G to full words electricity / gas |
| 27 | Schemas | EnergyFlow enum values changed | From single-character I / E to full words import / export |
| 28 | Servers | Supplier server URL set | https://energy.supplier placeholder replaced with https://example-supplier.co.uk |
| 29 | Descriptions | Warning added to /v1/consent endpoints | Flags that the consent mechanism may be out of scope if customer-specific tariffs are removed from Phase 1 |
| 30 | Cleanup | Tags renamed to plain English | Registry, Tariffs, Consumer Tariffs, Consent, Webhooks, Reporting |
| 31 | Cleanup | Schema names rationalised | TariffEventNotification → TariffEvent; MeteringPointEnergyFlow → EnergyFlow; HighResDatetime → Timestamp |
| 32 | Cleanup | EMDS internal reference codes stripped | DI90061, DIYYYY9 etc. removed from all field descriptions |
| 33 | Cleanup | MMXXXX / SVZZZZ catalogue codes removed | Removed from all operation summaries and descriptions |
| 34 | Cleanup | £ symbols replaced with GBP | Avoids encoding issues in downstream tooling |
| 35 | Fix | requestBody on POST /consent corrected | Added required content property; required: false alone is not valid OpenAPI 3.x |
| 36 | Fix | OAuth authorizationUrl / tokenUrl corrected | Replaced URI templates with concrete placeholder URLs; OpenAPI does not permit templates in securitySchemes |