Skip to content

Core parties and entities: data model

The entities, fields, enumerated values and relationships. The endpoints over them are in Core parties and entities: API, and the terms used throughout are defined in Insurance concepts.

The party types every coverage line uses. insuranceEntity is the insurer, reinsurer, broker or agent. Personal is an individual customer and Commercial is a corporate one, kept apart because their fields barely overlap. Beneficiary is whoever receives a payout, with a share so one payout can be split. address is embedded inside each of them rather than stored on its own.

erDiagram
    INSURANCE_ENTITY {
        string name "legal name"
        string tradeName
        enum type "entityType ref"
        enum classification "entityClassification ref"
        string registrationNumber
        date yearEstablished
        string website
        string telephone
        string creditRating
        string developerPortal
        string vat
    }
    PERSONAL {
        string firstName
        string lastName
        enum salutation
        string nationality "ISO 3166-1 alpha-2"
        enum gender
        date dob
        string email
        string mobilePhone
        string phone
        enum idType
        string idNumber
        string occupation "ISCO-08"
        string policyholderPreferredLanguage "ISO 639-2"
    }
    COMMERCIAL {
        string name
        date dateFounded
        string email
        string phone
        string occupation "UK SIC"
        string preferredLanguage "ISO 639-2"
        string registrationNumber
        string vat
    }
    BENEFICIARY {
        string name
        float share "claim payout share"
    }
    ADDRESS {
        string building
        string streetName
        string city
        string state
        string country "ISO 3166-1 alpha-2"
        string postalCode
        string threeWordAddress "What3Words"
    }
    PRODUCT_CATALOG_REF {
        int code
        string description
    }

    INSURANCE_ENTITY ||--|| ADDRESS : "registered at"
    INSURANCE_ENTITY ||--o{ PRODUCT_CATALOG_REF : "publishes"
    PERSONAL ||--|| ADDRESS : "resides at"
    COMMERCIAL ||--|| ADDRESS : "registered at"
    BENEFICIARY ||--|| ADDRESS : "located at"

The fields most likely to need explanation. Everything else is in the diagram above.

EntityFieldTypeWhat it means
InsuranceEntitynameTextThe legal name. This is the entity a contract is written against
InsuranceEntitytradeNameTextThe name it trades under, where that differs from the legal one
InsuranceEntitytypeenum (entityType)What kind of organisation it is. Seventeen values covering insurer, reinsurer, takaful, mutual, peer-to-peer, Lloyd’s, broker, agent and managing general agent
InsuranceEntityclassificationenum (entityClassification)The business it writes: property and casualty, life, composite, or other
InsuranceEntityregistrationNumberTextIssued by the regulator that licensed it
InsuranceEntitycreditRatingTextThe rating from S&P, AM Best or Fitch. It matters because it is a measure of whether the insurer can pay its claims
InsuranceEntitydeveloperPortalText/URLWhere an integrator finds that entity’s own API documentation
InsuranceEntityproductCatalogref (productCatalog)The products it publishes. Multi-valued
PersonalsalutationenumMr, Mrs or Ms
PersonalnationalityText (ISO 3166-1 alpha-2)Two-letter country code
PersonalgenderenumThree values: m, f, o
PersonaldobDate (ISO 8601)Date of birth, and a pricing input in most lines
PersonalidTypeenumThe kind of identity document: passport, national ID, driving licence, national insurance number, or other
PersonalidNumberTextThe number on that document. With idType, this is what deduplicates a party
PersonaloccupationText (ISCO-08)Occupation as an ISCO-08 code rather than free text, so two systems agree on what a job title means
PersonalpolicyholderPreferredLanguageText (ISO 639-2)Three-letter language code, for correspondence
CommercialdateFoundedDate (ISO 8601)When the organisation was established. Trading history is a risk signal
CommercialoccupationText (UK SIC)Industry, as a UK Standard Industrial Classification code
CommercialregistrationNumberTextCompany registration number
BeneficiarynameTextEither a person or an organisation
BeneficiaryshareNumber/FloatThis beneficiary’s share of the payout. Shares across all beneficiaries on a policy are expected to total 100
AddresscountryText (ISO 3166-1 alpha-2)Two-letter country code
AddresspostalCodeTextPostal or ZIP code
AddressthreeWordAddressText (What3Words)A What3Words reference, useful where street addressing is sparse

Personal.gender carries three values: m, f and o. Several jurisdictions require more values, a different representation, or that the field be optional. Decide what your market needs before you make it mandatory, and note that the standard also offers no gender-neutral salutation.

Commercial has no legal-form field. Nothing records whether an organisation is a limited company, a partnership or a sole trader, even though the standard defines a legalEntity enum and trade credit surfaces it on Debtor. Carry it as an extension field if you need it.

Address field names are camelCase here. Use postalCode and threeWordAddress. The underlying data standard spells them postal_code and 3_word_address, and the second is not a legal identifier in most languages, so both are normalised. No address endpoint ever carried the original spellings, so nothing on the wire depends on them.

Address is a value object, not a resource. It is sent and received inline inside its owning entity, and there is no way to create, fetch or update one on its own.