Validate · Enforce · Trust
Insurance Data Sharing — Requirements v2.110 min read
The validation rules that apply to Insurance Data Sharing. The Validated by column on each table indicates where each rule is enforced. Read alongside the Consent requirements and the User Journeys.
All requests require an active Trust Framework application with the ISP role, a valid transport certificate presented on every request via mTLS, an active signing key for JWT signing, and — when requesting ReadInsurancePremium — an active encryption key for decrypting the Premium JWE on the customer device.
01 Endpoint
Consent Creation
POST
/par#
Field
Rule
Validated by
1
Request JWT
Must conform to the Request JWT requirements — correct
aud, signing algorithm (PS256), and expiry window.API Hub
2
client_assertionMust be included in the POST body (
client_assertion_type: urn:ietf:params:oauth:client-assertion-type:jwt-bearer). Authenticates the TPP application — see Client Assertion.API Hub
3
scope (in Request JWT)Must be
openid insurance.API Hub
4
authorization_details[0].type (in Request JWT)Must be
urn:openfinanceuae:insurance-consent:v2.1.API Hub
5
API version supported
The consent version in
authorization_details[0].type (e.g. urn:openfinanceuae:insurance-consent:v2.1) restricts the version of the Insurance endpoints the consent can be used to call (specified in the path, e.g. /open-finance/insurance/v2.1/motor-insurance-policies). It MUST resolve to an ApiVersion the LFI has published in the Trust Framework for the Insurance API family.LFI/consent/action/validate
6
OpenAPI schema
The request must conform exactly to the POST
/par OpenAPI schema. No additional or undocumented parameters are permitted.API Hub
7
consent.Permissions structureMust be a non-empty array. Each entry is a per-sector block of the form
{ InsuranceType, Permissions[] }. There MUST be at least one block, and each block MUST contain at least one permission code.API Hub
8
consent.Permissions[*].InsuranceTypeEach value must be one of:
Employment, Health, Home, Life, Motor, Renters, Travel. Each sector may appear at most once in the array. The sector must also be one the LFI underwrites — if the LFI does not offer the requested sector, the validate hook will reject the consent.LFI/consent/action/validate
9
consent.Permissions[*].PermissionsWithin each per-sector block,
ReadInsurancePolicies MUST be present — it is the base permission that gates list and detail access for the sector. Other permissions (ReadCustomerBasic, ReadCustomerDetail, ReadCustomerPaymentDetails, ReadInsuranceProduct, ReadCustomerClaims, ReadInsurancePremium) MAY be included and unlock the corresponding field sets on the policy response.API Hub
10
consent.Permissions[*].Permissions — ReadInsurancePremiumReadInsurancePremium MUST only be requested by TPPs that hold the Access Encrypted Resource Data optional certification with Nebras. An uncertified TPP MUST NOT include this permission in any per-sector block; if it does, the API Hub rejects the consent. Only certified TPPs are permitted to receive insurance premium data, whether the LFI returns it in cleartext or as an encrypted JWE.API Hub
11
consent.Permissions (unsupported)If a per-sector block requests a permission the LFI does not expose for that sector (e.g.
ReadCustomerClaims for a sector the LFI does not surface claims on), the consent validation will fail.LFI/consent/action/validate
12
consent.BaseConsentIdIf provided, must reference a previous consent belonging to the same end user and must be an Insurance Data Sharing consent (
authorization_details[0].type is urn:openfinanceuae:insurance-consent:*). If the original consent in the chain already had a BaseConsentId, the TPP must reuse that same BaseConsentId rather than the immediate prior ConsentId.LFI/consent/action/validate
13
consent.ExpirationDateTimeMust not be in the past. Must be less than one year in the future.
API Hub
14
x-fapi-interaction-idShould be included. Should be a valid UUID (RFC 4122). An invalid value will not cause a failure but tracing will not be possible.
N/A
03 Endpoint
List Policies
GET
/{type}-insurance-policies#
Field
Rule
Validated by
1
AuthorizationMust contain a valid Bearer access token issued with the
openid insurance scope. The consent bound to the token must be in Authorized status and the ExpirationDateTime of the Consent must be in the future.API Hub
2
URL version
The version in the request URL path (e.g.
v2.1 in /open-finance/insurance/v2.1/motor-insurance-policies) must match the version in the consent’s authorization_details[0].type (urn:openfinanceuae:insurance-consent:v2.1).API Hub
3
{type} path segmentMust match an
InsuranceType present in consent.Permissions. A call to a sector the consent does not grant returns 403.API Hub
4
consent.PermissionsThe per-sector block for the requested
InsuranceType must include ReadInsurancePolicies.API Hub
5
Pagination
Not applicable. The endpoint returns the full set of consented policies for the sector in a single response — there is no
page query parameter, and Meta does not include TotalPages or TotalRecords.N/A
6
Historical policies
The response includes every policy the customer authorised within the last five years, regardless of current
PolicyStatus. TPPs MUST be prepared to receive policies in any of the AEInsurancePolicyStatusCodes states (New, Renewed, Expired, Lapsed, Cancelled, PaidUp, Converted, Surrendered, DeathClaim, RiderClaim) and render them with their current status.LFI
7
x-fapi-interaction-idShould be included. Should be a valid UUID (RFC 4122). An invalid value will not cause a failure but tracing will not be possible.
N/A
8
x-fapi-auth-dateMust be sent when the customer is authenticated at the time of the call. Must be a valid HTTP-date (RFC 7231), e.g.
Tue, 11 Sep 2012 19:43:31 UTC.TPP
9
x-fapi-customer-ip-addressMust be sent when the customer is actively present at the time of the call. Must be a valid IPv4 or IPv6 address.
TPP
10
x-customer-user-agentShould be sent when the customer is actively present. Should reflect the user-agent of the customer’s browser or device.
TPP
04 Endpoint
Get a Policy
GET
/{type}-insurance-policies/{InsurancePolicyId}#
Field
Rule
Validated by
1
AuthorizationMust contain a valid Bearer access token bound to an
Authorized consent that has not expired.API Hub
2
URL version
The version in the request URL path must match the version in the consent’s
authorization_details[0].type.API Hub
3
{type} path segmentMust match an
InsuranceType present in consent.Permissions.API Hub
4
consent.PermissionsThe per-sector block for the requested
InsuranceType must include ReadInsurancePolicies. The field sets returned on the policy depend on the additional permissions in the block (ReadCustomerBasic, ReadCustomerDetail, ReadCustomerPaymentDetails, ReadInsuranceProduct, ReadCustomerClaims, ReadInsurancePremium).API Hub
5
InsurancePolicyIdMust be a valid policy ID shared by the customer — i.e. returned by
GET /{type}-insurance-policies under the same consent. See Policy Access Validation for the response when the policy is not part of the consented set.LFI
6
Historical policies
The endpoint returns the policy regardless of current
PolicyStatus within the five-year window — there is no status-based 403. TPPs MUST render the policy according to its PolicyStatus rather than assume it is active.LFI
7
x-fapi-interaction-idShould be a valid UUID (RFC 4122).
N/A
8
x-fapi-auth-dateMust be sent when the customer is authenticated at the time of the call.
TPP
9
x-fapi-customer-ip-addressMust be sent when the customer is actively present at the time of the call.
TPP
10
x-customer-user-agentShould be sent when the customer is actively present.
TPP
06 Section
Policy Access Validation
Scenario
Response
InsurancePolicyId is not part of the consented set for the sector403 with errorCode: Consent.PermanentPolicyAccessFailure and errorMessage: The policy is permanently inaccessible.