> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baselayer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List everyone and everything your organization verified

> The combined directory: your organization's people and businesses in one list, most recently added first. Each row carries the pairwise reference, a display name and the shared timestamps at the top level, and nests the same row the typed list would have returned under `person` or `business` according to `type`. Search accepts either reference prefix and matches names across both populations; use `type` to restrict, or the typed routes `/identities/principals` and `/identities/businesses` for the filters specific to each.



## OpenAPI

````yaml /api-reference/openapi.json get /identities
openapi: 3.1.0
info:
  title: baselayer-api-service
  version: 0.1.0
servers:
  - url: https://api.baselayer.com/
security: []
paths:
  /identities:
    get:
      tags:
        - Identities
      summary: List everyone and everything your organization verified
      description: >-
        The combined directory: your organization's people and businesses in one
        list, most recently added first. Each row carries the pairwise
        reference, a display name and the shared timestamps at the top level,
        and nests the same row the typed list would have returned under `person`
        or `business` according to `type`. Search accepts either reference
        prefix and matches names across both populations; use `type` to
        restrict, or the typed routes `/identities/principals` and
        `/identities/businesses` for the filters specific to each.
      operationId: list_identities
      parameters:
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000
            minimum: 1
            description: >-
              Maximum number of records to return in a single page. Must be
              between 1 and 1000.
            default: 10
            title: Limit
          description: >-
            Maximum number of records to return in a single page. Must be
            between 1 and 1000.
        - name: offset
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                minimum: 0
              - type: 'null'
            description: >-
              Number of records to skip from the beginning. Use 0 for the first
              page. Cannot be used with cursor.
            title: Offset
          description: >-
            Number of records to skip from the beginning. Use 0 for the first
            page. Cannot be used with cursor.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Opaque pagination cursor token that identifies the position in the
              result set. Use the cursor from the previous response to get the
              next page. Cannot be used with offset.
            title: Cursor
          description: >-
            Opaque pagination cursor token that identifies the position in the
            result set. Use the cursor from the previous response to get the
            next page. Cannot be used with offset.
        - name: type
          in: query
          required: false
          schema:
            anyOf:
              - $ref: '#/components/schemas/BusinessOrPersonType'
              - type: 'null'
            description: Only rows of this type; omit for both populations.
            title: Type
          description: Only rows of this type; omit for both populations.
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                maxLength: 200
              - type: 'null'
            description: >-
              A `prn_` or `bus_` reference, or free text matched against
              people's names, emails and phones and businesses' registered
              names; nine digits also match as an exact EIN.
            title: Search
          description: >-
            A `prn_` or `bus_` reference, or free text matched against people's
            names, emails and phones and businesses' registered names; nine
            digits also match as an exact EIN.
      responses:
        '200':
          description: >-
            Paginated directory entries, most recently added first, scoped to
            the calling organization.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/v1.IdentityDirectoryEntryResponse'
            application/vnd.baselayer.v1+json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/v1.IdentityDirectoryEntryResponse'
          headers:
            X-Total-Count:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-Total-Pages:
              description: Total number of pages available based on the current limit.
              schema:
                type: integer
            X-Next-Cursor:
              description: >-
                Cursor for the next page (only present when using the keyset
                pagination and if `has_more` is true.
              schema:
                type: string
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
components:
  schemas:
    BusinessOrPersonType:
      enum:
        - Business
        - Person
      title: BusinessOrPersonType
      type: string
    v1.IdentityDirectoryEntryResponse:
      description: |-
        One row of ``GET /identities`` — the combined directory.

        People and businesses are held under separate pairwise references and
        described by different evidence, so the combined listing discriminates
        on ``type`` and nests that population's own row rather than flattening
        two shapes into one lossy record: whichever of ``person`` / ``business``
        matches ``type`` is populated, and it is exactly what the typed list
        would have returned. The handful of fields every row shares are lifted
        to the top so a mixed table can sort, search and render without
        branching first.
      properties:
        type:
          $ref: '#/components/schemas/v1.BusinessOrPersonType'
          description: Which population this row belongs to.
        ref:
          description: >-
            This organization's pairwise reference — `prn_` for a person, `bus_`
            for a business.
          title: Ref
          type: string
        display_name:
          description: The person's verified name, or the legal name.
          title: Display Name
          type: string
        last_verified_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          default: null
          description: >-
            The person's latest verification, or the business's latest covering
            evaluation by your organization.
          title: Last Verified At
        added_at:
          description: >-
            When your organization first held this pairwise reference — the
            instant both populations share, and the order this listing is
            returned in.
          format: date-time
          title: Added At
          type: string
        person:
          anyOf:
            - $ref: '#/components/schemas/v1.IdentityListItemResponse'
            - type: 'null'
          default: null
          description: The person's row, when type is Person.
        business:
          anyOf:
            - $ref: '#/components/schemas/v1.BusinessListItemResponse'
            - type: 'null'
          default: null
          description: The business's row, when type is Business.
      required:
        - type
        - ref
        - display_name
        - added_at
      title: IdentityDirectoryEntryResponse (v1)
      type: object
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    v1.BusinessOrPersonType:
      enum:
        - Business
        - Person
      title: BusinessOrPersonType
      type: string
    v1.IdentityListItemResponse:
      description: |-
        One person in ``GET /identities``.

        The row an operator scans a population by: who the identity is, whether
        it can still mint, and how much it has been used. Everything is scoped
        to the calling organization — the reference, the covered links counted,
        and the credentials counted are all its own.
      properties:
        principal_ref:
          description: This organization's pairwise reference to the person.
          title: Principal Ref
          type: string
        display_name:
          description: >-
            The verified name, as the latest snapshot recorded it. Mask it in
            shared surfaces; the API returns what the organization itself
            submitted.
          title: Display Name
          type: string
        verification_state:
          $ref: '#/components/schemas/v1.IdentityVerificationState'
          description: >-
            CURRENT, or EXPIRED (re-verify before minting). Derived from the
            snapshot's validity window, never stored.
        verification_level:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: >-
            Verification level derived from active_keys; null when the attested
            attributes are insufficient for any defined level.
          title: Verification Level
        active_keys:
          description: >-
            Dotted keys of the attributes the latest verification can attest to
            — the vocabulary credential disclosure uses.
          items:
            type: string
          title: Active Keys
          type: array
        linked_business_count:
          description: >-
            Businesses this organization covers a live operator link to for the
            person; rejected links are not counted.
          title: Linked Business Count
          type: integer
        credentials_minted_30d:
          description: >-
            Credentials this organization minted for the person in the last 30
            days, counting business credentials it acted for.
          title: Credentials Minted 30D
          type: integer
        verified_at:
          description: When the latest verification was recorded.
          format: date-time
          title: Verified At
          type: string
        expires_at:
          description: When the latest verification expires.
          format: date-time
          title: Expires At
          type: string
      required:
        - principal_ref
        - display_name
        - verification_state
        - linked_business_count
        - credentials_minted_30d
        - verified_at
        - expires_at
      title: IdentityListItemResponse (v1)
      type: object
    v1.BusinessListItemResponse:
      description: |-
        One business in ``GET /identities/businesses``.

        Population rule: a business appears once this organization holds a
        pairwise reference for it, which the directory mints for any business it
        covers an operator link to. Operator counts are reported per status
        rather than collapsed into one verdict — a business with settled
        operators and one awaiting review is both.
      properties:
        business_ref:
          description: This organization's pairwise reference to the business.
          title: Business Ref
          type: string
        legal_name:
          description: The business's registered legal name.
          title: Legal Name
          type: string
        kyb_outcome:
          $ref: '#/components/schemas/v1.BusinessKybOutcome'
          description: >-
            What this organization's most recent covering evaluation concluded.
            INDETERMINATE means no determination was reached — including a
            business it has never covered — which is not the same as
            NOT_VERIFIED.
        verified_people_count:
          description: Covered operator links in VERIFIED — people who can mint.
          title: Verified People Count
          type: integer
        under_review_people_count:
          description: >-
            Covered operator links in UNDER_REVIEW — business mints for these
            people are refused until a reviewer decides.
          title: Under Review People Count
          type: integer
        rejected_people_count:
          description: Covered operator links a reviewer rejected.
          title: Rejected People Count
          type: integer
        last_verified_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          default: null
          description: >-
            When this organization last covered the business with an evaluation
            of its own.
          title: Last Verified At
        linked_people_count:
          description: Operator links this organization covers, in any status.
          readOnly: true
          title: Linked People Count
          type: integer
      required:
        - business_ref
        - legal_name
        - kyb_outcome
        - verified_people_count
        - under_review_people_count
        - rejected_people_count
        - linked_people_count
      title: BusinessListItemResponse (v1)
      type: object
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    v1.IdentityVerificationState:
      description: |-
        Verification state of an identity, as seen by the referencing
        organization.

        CURRENT: an unexpired verification exists and credentials can be
        minted. EXPIRED: the verification's validity window has lapsed —
        re-verify before minting. SUPERSEDED: no active verification record
        remains; a new submission is required.
      enum:
        - CURRENT
        - EXPIRED
        - SUPERSEDED
      title: IdentityVerificationState
      type: string
    v1.BusinessKybOutcome:
      description: |-
        What the organization's latest covering evaluation concluded about a
        business.

        Sourced from ``BusinessOperatorLinkConfirmation.kyb_verified``, which is
        tri-state on purpose: INDETERMINATE means no determination was reached
        (the check never ran, or the registry was silent), which is not the same
        claim as NOT_VERIFIED — the business was checked and did not verify.
      enum:
        - VERIFIED
        - NOT_VERIFIED
        - INDETERMINATE
      title: BusinessKybOutcome
      type: string
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````