> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://infonite.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://infonite.dev/_mcp/server.

# Customer Profile

**Where it lives:** in the Spain Public Administration results, at `data.customer.profile`. APIs with dedicated per-product results endpoints return this model directly.

The customer profile is the identity the source has on file: names, identification documents,
birth and nationality, contact details and declared situation. Use it to verify identity and to
cross-check the data the user typed against what their institution knows about them.

**One profile describes both persons and companies** — `type` is the switch that tells you how
to read it, and each field's description below says how its meaning changes (for a company,
`birth_date` is the incorporation date, `nationality_country` the registered seat,
`residence_country` the tax residence).

### Schema (`CustomerProfileSchema`)

The customer's identity as the connected institution knows it: names, identification
documents, birth and nationality, contact details (emails, phones, addresses) and declared
situation (civil status, children, membership age). Use it to verify identity and to
cross-check data the user typed against what their institution knows about them.

**One profile describes both persons and companies** — `type` tells you which one you are
reading. Some fields switch meaning accordingly (`name`, `birth_date`,
`nationality_country`, `residence_country` — each one says how); the strictly person-only
fields behave predictably for companies: `name_extra` and `number_of_children` come empty,
and `gender` / `civil_status` come as `unknown`.

```yaml
components:
  schemas:
    CustomerType:
      type: string
      enum:
        - person
        - company
        - unknown
      title: CustomerType
    IdentificationNumberSchemaType:
      type: string
      enum:
        - unknown
        - es:dni
        - es:nie
        - es:cif
        - es:ssn
        - co:cc
        - co:ce
        - co:nit
        - co:ti
      description: >-
        Kind of document the number belongs to (e.g. a national ID, passport,
        tax ID, or Social

        Security number).
      title: IdentificationNumberSchemaType
    IdentificationNumberSchema:
      type: object
      properties:
        type:
          $ref: '#/components/schemas/IdentificationNumberSchemaType'
          description: >-
            Kind of document the number belongs to (e.g. a national ID,
            passport, tax ID, or Social

            Security number).
        value:
          type: string
          description: The number itself, as reported by the source.
        validated:
          type: boolean
          description: >-
            True when the value passed the platform's format and check-digit
            validation. It vouches for

            the NUMBER being well-formed — not for the official status of the
            document behind it.
        country:
          type: string
          format: country
          description: Country that issued the number, as a two-letter ISO code.
        valid_until:
          type: string
          format: date
          description: Expiry date of the document, when the source reports it.
      required:
        - type
        - value
        - validated
      description: >-
        One identification document: its type, its value, and whether the value
        passed validation.
      title: IdentificationNumberSchema
    PersonGender:
      type: string
      enum:
        - male
        - female
        - rather_not_say
        - unknown
      title: PersonGender
    CivilStatus:
      type: string
      enum:
        - single
        - married
        - divorced
        - widowed
        - separated
        - unknown
      title: CivilStatus
    AddressSchema:
      type: object
      properties:
        title:
          type: string
          description: Free label for the address (e.g. `Headquarter`, `Domicilio`).
        street:
          type: string
          description: 'Street line: name and number.'
        street_extra:
          type: string
          description: 'Second street line: floor, suite, staircase, apartment...'
        municipality:
          type: string
          description: Municipality the address belongs to.
        city:
          type: string
          description: City or town.
        state:
          type: string
          description: State or province code.
        country:
          type: string
          format: country
          description: Country, as a two-letter ISO code.
        zip_code:
          type: string
          description: Postal code.
      description: >-
        A postal address. It is reused wherever the platform reports one — a
        person's home, a

        company's registered office, a property's location — so these fields
        describe the address

        itself; what it belongs to is told by the object carrying it.
      title: AddressSchema
    CustomerProfileSchema:
      type: object
      properties:
        product:
          type: string
          enum:
            - customer_information
          description: >-
            The product type identifier. Always `customer_information` for this
            product.
        sub_family:
          type: string
          enum:
            - customer_information:user_profile
          description: >-
            The sub-family identifier: `customer_information:user_profile`, the
            customer's profile at

            the institution.
        fetch_date:
          type: string
          format: datetime
          description: Date this information was fetched.
        type:
          $ref: '#/components/schemas/CustomerType'
          description: >-
            The kind of customer: a person or a company. This is the switch that
            tells you how to read

            the rest of the profile.
        name:
          type: string
          description: >-
            For persons, the given name(s); for companies, the registered legal
            name (razón social).
        name_extra:
          type: string
          description: >-
            **Persons only** — the rest of the legal name; Spanish institutions
            report both surnames

            here. Empty for companies.
        alias:
          type: string
          description: >-
            How the institution addresses the customer when it differs from the
            legal name — a chosen

            or commercial name.
        identification_numbers:
          type: array
          items:
            $ref: '#/components/schemas/IdentificationNumberSchema'
          description: >-
            The customer's identification documents as the institution registers
            them — for persons a

            DNI/NIE, passport or Social Security number; for companies the tax
            ID (CIF). Each entry

            carries its type, its value, and whether the value passed
            validation.
        birth_date:
          type: string
          format: date
          description: >-
            For persons, the date of birth; for companies, the date of
            incorporation, when the source

            provides it.
        birth_country:
          type: string
          format: country
          description: Country of birth, as a two-letter ISO code.
        nationality_country:
          type: string
          format: country
          description: >-
            For persons, the country of nationality; for companies, the country
            of the registered

            seat. Two-letter ISO code.
        residence_country:
          type: string
          format: country
          description: >-
            For persons, the country of residence; for companies, the country of
            its tax residence.

            Two-letter ISO code.
        gender:
          $ref: '#/components/schemas/PersonGender'
          description: >-
            **Persons only** — gender as declared at the institution. `unknown`
            for companies, and for

            persons whose source does not disclose it.
        civil_status:
          $ref: '#/components/schemas/CivilStatus'
          description: >-
            **Persons only** — civil status as declared at the institution.
            `unknown` for companies,

            and for persons whose source does not disclose it.
        number_of_children:
          type: integer
          description: >-
            **Persons only** — number of children, when the institution records
            it. Empty for

            companies.
        emails:
          type: array
          items:
            type: string
          description: Email addresses of the customer, as they appear at the source.
        phones:
          type: array
          items:
            type: string
          description: Phone numbers of the customer, as they appear at the source.
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/AddressSchema'
          description: Postal addresses of the customer, as they appear at the source.
        language:
          type: string
          format: language
          description: The customer's preferred language, as an ISO language code.
        member_since:
          type: string
          format: date
          description: >-
            Date the customer's relationship with the institution began, when
            the source reports it.
      required:
        - product
        - sub_family
        - fetch_date
        - type
        - identification_numbers
        - gender
        - civil_status
        - emails
        - phones
        - addresses
      title: CustomerProfileSchema
```