PSR Details Schema Reference
Headers and Parameters
| Field | Location | Required | Type | Format / Constraints |
|---|---|---|---|---|
X-API-KEY | Header | Yes | string | UUID format |
X-IDEMPOTENCY-KEY | Header (POST /{mpid}) | Yes | string | Non-empty string |
mpid | Path | Yes | string | Supplier MPID |
mpan_id | Query (GET) | Yes | integer | 13-digit MPAN core |
Request Schema (PSRDetailsNewRequestSchema)
| Field | Required | Type | Format / Constraints |
|---|---|---|---|
mpan_core | Yes | integer | Exactly 13 digits, numeric |
primary_psr_contact_name | No | string or null | Max 50 chars |
primary_psr_phone_number_1 | Conditional | string or null | UK phone regex `^(?:0 |
primary_psr_phone_number_2 | No | string or null | Same phone regex |
alternate_psr_contact_name | No | string or null | Max 50 chars |
alternate_psr_phone_number_1 | No | string or null | Same phone regex |
alternate_psr_phone_number_2 | No | string or null | Same phone regex |
psr_address_line_1 .. psr_address_line_9 | Conditional | string or null | Max 40 chars each; at least one address line or primary_psr_phone_number_1 is required |
psr_postcode | Conditional | string or null | Max 10 chars; required when any PSR address line is present |
lawful_basis_for_sharing | Yes | boolean | Boolean |
psr_details | Yes | array | Must be a list |
psr_details[].psr_category | Yes | string | Exactly 2 chars; allowed values include 01,02,03,04,08,09,10,12,14,15,17,18,19,20,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37 |
psr_details[].psr_expiry_date | Conditional | string or null | Required for categories 29, 32, 33, 34; format YYYYMMDD; must be a future date |
psr_details[].additional_information | Conditional | string or null | Required for category 17; max 200 chars |
Additional validation:
- Extra/unknown fields are rejected.
- The request is handled as either a new submission or an amendment, depending on existing active PSR details for the MPAN.
Request Schema (PSRDetailsRemoveRequestSchema)
| Field | Required | Type | Format / Constraints |
|---|---|---|---|
mpan_core | Yes | integer | Exactly 13 digits, numeric |
lawful_basis_for_sharing | Yes | boolean | Boolean |
Response Schema (PSRCustomerResponseSchema)
| Field | Required | Type | Format / Constraints |
|---|---|---|---|
mpan_core | Yes | integer | MPAN core |
primary_psr_contact_name | No | string or null | Max 50 chars |
primary_psr_phone_number_1 | No | string or null | Stored phone number |
primary_psr_phone_number_2 | No | string or null | Stored phone number |
alternate_psr_contact_name | No | string or null | Max 50 chars |
alternate_psr_phone_number_1 | No | string or null | Stored phone number |
alternate_psr_phone_number_2 | No | string or null | Stored phone number |
psr_address_line_1 .. psr_address_line_9 | No | string or null | Max 40 chars each |
psr_postcode | No | string or null | Max 10 chars |
lawful_basis_for_sharing | Yes | boolean | Boolean |
psr_details | No | array | List of PSR category detail objects |
psr_details[].psr_category | Yes | string | Two-character PSR category |
psr_details[].psr_expiry_date | No | string or null | YYYYMMDD when present |
psr_details[].additional_information | No | string or null | Free text |
Process Response Schema (SupplierProcessResponseSchema)
Used by both POST endpoints.
| Field | Required | Type | Format / Constraints |
|---|---|---|---|
request_id | Yes | string | UUID |
request_type | Yes | string | Process type name |
request_status | Yes | string(enum) | Pending, Success, Failed |
description | No | string or null | Process type description |
created_at | Yes | string(datetime) | ISO 8601 datetime |
last_updated_at | Yes | string(datetime) | ISO 8601 datetime |
mpan_core | Yes | integer | MPAN core |