@cfxlabsinc/b2b-services
    Preparing search index...

    Read/write access to an organization's related persons. Writes are forwarded to AiPrise (the KYB provider): create links a fresh user profile onto the org's business profile, or adopts one AiPrise already holds linked there, update re-pushes the changed fields, delete removes the association. Create calls AiPrise before it writes, so a failure there throws; update and delete write first, so an AiPrise refusal after them is returned with the committed row (RELATED_PERSON_VERIFICATION_FAILED / RELATED_PERSON_UNLINK_FAILED).

    One row is one human with one AiPrise profile: a control person who also owns is a CONTROL row with isBeneficialOwner, never a second row.

    Hierarchy (View Summary)

    Index
    db: B2bDatabase
    instance: (...args: []) => RelatedPersonService = ...

    The process default: built from each dependency's own instance().

    • create for a person AiPrise already holds linked to the org's business profile (its hosted form did both): stores that linkage, starts from the profile's result, and tags the profile with the row's id so its events reach it. Onboarding only — never reachable from a request body.

      Idempotent on the user profile: a person the org already holds is returned as it is, so a retried onboarding adopts only the people still missing.

      Parameters

      • __namedParameters: RelatedPersonInput & {
            countryOfResidence: string;
            customerId: string;
            organizationId: string;
            type: "CONTROL" | "BENEFICIAL_OWNER";
        } & {
            aiprise: AiPriseRelatedPersonLinkage & { result?: AiPriseProfileResult };
        }
        • countryOfResidence: string

          Alpha-2 ISO-3166-1. Required: it supplies identity_country_code on this person's AiPrise verifications, which are rejected without it.

        • customerId: string
        • organizationId: string
        • type: "CONTROL" | "BENEFICIAL_OWNER"
        • aiprise: AiPriseRelatedPersonLinkage & { result?: AiPriseProfileResult }

      Returns Promise<
          | {
              ok: true;
              value: {
                  address?: {
                      city: string;
                      countryCode: string;
                      line1: string;
                      line2?: string;
                      postalCode?: string;
                      regionCode?: string;
                  };
                  countryOfBirth?: string;
                  countryOfResidence: string;
                  createdAt: Date;
                  dateOfBirth?: string;
                  deletedAt?: Date;
                  email: string
                  | null;
                  id: string;
                  identityDocument?: {
                      expiryDate: string;
                      issuingCountry: string;
                      number: string;
                      type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                  };
                  isBeneficialOwner?: boolean;
                  isPoliticallyExposed?: boolean;
                  name: { firstName: string; lastName: string; middleName?: string }
                  | null;
                  nationality?: string;
                  occupationCode?: string;
                  organizationId: string;
                  ownershipPercent?: number;
                  phone: string | null;
                  requiredInfo: RequiredInfoField[];
                  roleDescription: string;
                  routeFusionDocumentsUploadedAt?: string;
                  sex?: "OTHER" | "MALE" | "FEMALE";
                  sharesAllocated?: number;
                  status:
                      | "PENDING_VERIFICATION"
                      | "ACTION_REQUIRED"
                      | "APPROVED"
                      | "DELETED"
                      | "REVIEW"
                      | "BLOCKED";
                  statusDescription: string;
                  taxId?: string;
                  title?: string;
                  type: "CONTROL"
                  | "BENEFICIAL_OWNER";
                  typeDescription: string;
                  updatedAt: Date;
                  verificationReasonCode?:
                      | "OTHER"
                      | "INVALID_TAX_ID"
                      | "ADDRESS_MISMATCH"
                      | "REGISTRY_NOT_FOUND"
                      | "DOCUMENT_ISSUE"
                      | "IDENTITY_MISMATCH";
                  verificationReasonCodeDescription?: string;
              };
          }
          | { error: CreateRelatedPersonError; ok: false },
      >

    • Parameters

      • input: CreateRelatedPersonInput

      Returns Promise<
          | {
              ok: true;
              value: {
                  address?: {
                      city: string;
                      countryCode: string;
                      line1: string;
                      line2?: string;
                      postalCode?: string;
                      regionCode?: string;
                  };
                  countryOfBirth?: string;
                  countryOfResidence: string;
                  createdAt: Date;
                  dateOfBirth?: string;
                  deletedAt?: Date;
                  email: string
                  | null;
                  id: string;
                  identityDocument?: {
                      expiryDate: string;
                      issuingCountry: string;
                      number: string;
                      type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                  };
                  isBeneficialOwner?: boolean;
                  isPoliticallyExposed?: boolean;
                  name: { firstName: string; lastName: string; middleName?: string }
                  | null;
                  nationality?: string;
                  occupationCode?: string;
                  organizationId: string;
                  ownershipPercent?: number;
                  phone: string | null;
                  requiredInfo: RequiredInfoField[];
                  roleDescription: string;
                  routeFusionDocumentsUploadedAt?: string;
                  sex?: "OTHER" | "MALE" | "FEMALE";
                  sharesAllocated?: number;
                  status:
                      | "PENDING_VERIFICATION"
                      | "ACTION_REQUIRED"
                      | "APPROVED"
                      | "DELETED"
                      | "REVIEW"
                      | "BLOCKED";
                  statusDescription: string;
                  taxId?: string;
                  title?: string;
                  type: "CONTROL"
                  | "BENEFICIAL_OWNER";
                  typeDescription: string;
                  updatedAt: Date;
                  verificationReasonCode?:
                      | "OTHER"
                      | "INVALID_TAX_ID"
                      | "ADDRESS_MISMATCH"
                      | "REGISTRY_NOT_FOUND"
                      | "DOCUMENT_ISSUE"
                      | "IDENTITY_MISMATCH";
                  verificationReasonCodeDescription?: string;
              };
          }
          | { error: CreateRelatedPersonError; ok: false },
      >

    • Parameters

      • __namedParameters: { customerId: string; id: string; organizationId: string }

      Returns Promise<
          | {
              ok: true;
              value: {
                  address?: {
                      city: string;
                      countryCode: string;
                      line1: string;
                      line2?: string;
                      postalCode?: string;
                      regionCode?: string;
                  };
                  countryOfBirth?: string;
                  countryOfResidence: string;
                  createdAt: Date;
                  dateOfBirth?: string;
                  deletedAt?: Date;
                  email: string
                  | null;
                  id: string;
                  identityDocument?: {
                      expiryDate: string;
                      issuingCountry: string;
                      number: string;
                      type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                  };
                  isBeneficialOwner?: boolean;
                  isPoliticallyExposed?: boolean;
                  name: { firstName: string; lastName: string; middleName?: string }
                  | null;
                  nationality?: string;
                  occupationCode?: string;
                  organizationId: string;
                  ownershipPercent?: number;
                  phone: string | null;
                  requiredInfo: RequiredInfoField[];
                  roleDescription: string;
                  routeFusionDocumentsUploadedAt?: string;
                  sex?: "OTHER" | "MALE" | "FEMALE";
                  sharesAllocated?: number;
                  status:
                      | "PENDING_VERIFICATION"
                      | "ACTION_REQUIRED"
                      | "APPROVED"
                      | "DELETED"
                      | "REVIEW"
                      | "BLOCKED";
                  statusDescription: string;
                  taxId?: string;
                  title?: string;
                  type: "CONTROL"
                  | "BENEFICIAL_OWNER";
                  typeDescription: string;
                  updatedAt: Date;
                  verificationReasonCode?:
                      | "OTHER"
                      | "INVALID_TAX_ID"
                      | "ADDRESS_MISMATCH"
                      | "REGISTRY_NOT_FOUND"
                      | "DOCUMENT_ISSUE"
                      | "IDENTITY_MISMATCH";
                  verificationReasonCodeDescription?: string;
              };
          }
          | {
              error: ServiceError<"NOT_FOUND">
              | RelatedPersonUnlinkFailed;
              ok: false;
          },
      >

    • Parameters

      • __namedParameters: { customerId: string; id: string; organizationId?: string }
        • customerId: string
        • id: string
        • OptionalorganizationId?: string

          When provided, scopes to a specific organization (the API path case). When omitted, scopes by customer only — used by the document flow, which knows the related person id but not its organization.

      Returns Promise<
          {
              ok: true;
              value: | {
                  address?: {
                      city: string;
                      countryCode: string;
                      line1: string;
                      line2?: string;
                      postalCode?: string;
                      regionCode?: string;
                  };
                  countryOfBirth?: string;
                  countryOfResidence: string;
                  createdAt: Date;
                  dateOfBirth?: string;
                  deletedAt?: Date;
                  email: string
                  | null;
                  id: string;
                  identityDocument?: {
                      expiryDate: string;
                      issuingCountry: string;
                      number: string;
                      type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                  };
                  isBeneficialOwner?: boolean;
                  isPoliticallyExposed?: boolean;
                  name: { firstName: string; lastName: string; middleName?: string }
                  | null;
                  nationality?: string;
                  occupationCode?: string;
                  organizationId: string;
                  ownershipPercent?: number;
                  phone: string | null;
                  requiredInfo: RequiredInfoField[];
                  roleDescription: string;
                  routeFusionDocumentsUploadedAt?: string;
                  sex?: "OTHER" | "MALE" | "FEMALE";
                  sharesAllocated?: number;
                  status:
                      | "PENDING_VERIFICATION"
                      | "ACTION_REQUIRED"
                      | "APPROVED"
                      | "DELETED"
                      | "REVIEW"
                      | "BLOCKED";
                  statusDescription: string;
                  taxId?: string;
                  title?: string;
                  type: "CONTROL"
                  | "BENEFICIAL_OWNER";
                  typeDescription: string;
                  updatedAt: Date;
                  verificationReasonCode?:
                      | "OTHER"
                      | "INVALID_TAX_ID"
                      | "ADDRESS_MISMATCH"
                      | "REGISTRY_NOT_FOUND"
                      | "DOCUMENT_ISSUE"
                      | "IDENTITY_MISMATCH";
                  verificationReasonCodeDescription?: string;
              }
              | null;
          },
      >

    • Parameters

      • __namedParameters: {
            createdAt?: DbTimestampCriteria;
            customerId: string;
            ids?: string[];
            includeDeleted?: boolean;
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                countryOfResidence: PgBuildColumn<
                                    "related_person",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                createdAt: PgBuildColumn<
                                    "related_person",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                customerExternalId: PgBuildColumn<
                                    "related_person",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                customerId: PgBuildColumn<
                                    "related_person",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                data: PgBuildColumn<
                                    "related_person",
                                    Set$Type<
                                        SetNotNull<(...)>,
                                        {
                                            address?: ...;
                                            countryOfBirth?: ...;
                                            dateOfBirth?: ...;
                                            identityDocument?: ...;
                                            isBeneficialOwner?: ...;
                                            isPoliticallyExposed?: ...;
                                            nationality?: ...;
                                            occupationCode?: ...;
                                            ownershipPercent?: ...;
                                            personReferenceId?: ...;
                                            routeFusionDocumentsUploadedAt?: ...;
                                            routeFusionRepresentativeId?: ...;
                                            sex?: ...;
                                            sharesAllocated?: ...;
                                            taxId?: ...;
                                            title?: ...;
                                            verificationProfileId?: ...;
                                            zenusPersonId?: ...;
                                        },
                                    >,
                                    {
                                        data: {
                                            address?: ...;
                                            countryOfBirth?: ...;
                                            dateOfBirth?: ...;
                                            identityDocument?: ...;
                                            isBeneficialOwner?: ...;
                                            isPoliticallyExposed?: ...;
                                            nationality?: ...;
                                            occupationCode?: ...;
                                            ownershipPercent?: ...;
                                            personReferenceId?: ...;
                                            routeFusionDocumentsUploadedAt?: ...;
                                            routeFusionRepresentativeId?: ...;
                                            sex?: ...;
                                            sharesAllocated?: ...;
                                            taxId?: ...;
                                            title?: ...;
                                            verificationProfileId?: ...;
                                            zenusPersonId?: ...;
                                        };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                deletedAt: PgBuildColumn<
                                    "related_person",
                                    PgTimestampBuilder,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                                email: PgBuildColumn<
                                    "related_person",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                                externalId: PgBuildColumn<
                                    "related_person",
                                    SetHasRuntimeDefault<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                id: PgBuildColumn<
                                    "related_person",
                                    HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: "byDefault";
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                name: PgBuildColumn<
                                    "related_person",
                                    Set$Type<
                                        PgJsonbBuilder,
                                        { firstName: ...; lastName: ...; middleName?: ... },
                                    >,
                                    {
                                        data: { firstName: ...; lastName: ...; middleName?: ... };
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                                organizationExternalId: PgBuildColumn<
                                    "related_person",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                organizationId: PgBuildColumn<
                                    "related_person",
                                    SetNotNull<PgIntegerBuilder>,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                phone: PgBuildColumn<
                                    "related_person",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                                status: PgBuildColumn<
                                    "related_person",
                                    Set$Type<SetNotNull<(...)>, (...) | (...) | (...) | (...) | (...)>,
                                    {
                                        data: (...) | (...) | (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                type: PgBuildColumn<
                                    "related_person",
                                    Set$Type<SetNotNull<(...)>, (...) | (...)>,
                                    {
                                        data: (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                updatedAt: PgBuildColumn<
                                    "related_person",
                                    SetHasDefault<SetHasDefault<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "related_person";
                                    },
                                >;
                                verificationProfileId: PgBuildColumn<
                                    "related_person",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                                verificationReasons: PgBuildColumn<
                                    "related_person",
                                    Set$Type<PgJsonbBuilder, VerificationReasons>,
                                    {
                                        data: VerificationReasons;
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "related_person";
                                    },
                                >;
                            };
                            dialect: "pg";
                            isAlias: false;
                            name: "related_person";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "createdAt"
                | "updatedAt",
            >[];
            organizationId?: string;
            page?: number;
            pageSize?: number;
            statuses?: (
                | "PENDING_VERIFICATION"
                | "ACTION_REQUIRED"
                | "APPROVED"
                | "DELETED"
                | "REVIEW"
                | "BLOCKED"
            )[];
            tx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>;
            types?: ("CONTROL" | "BENEFICIAL_OWNER")[];
            updatedAt?: DbTimestampCriteria;
            verificationProfileIds?: string[];
        }
        • OptionalcreatedAt?: DbTimestampCriteria
        • customerId: string
        • Optionalids?: string[]
        • OptionalincludeDeleted?: boolean
        • OptionalorderBy?: DbOrderByCriterion<
              Omit<
                  PgTableWithColumns<
                      {
                          columns: {
                              countryOfResidence: PgBuildColumn<
                                  "related_person",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              createdAt: PgBuildColumn<
                                  "related_person",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              customerExternalId: PgBuildColumn<
                                  "related_person",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              customerId: PgBuildColumn<
                                  "related_person",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              data: PgBuildColumn<
                                  "related_person",
                                  Set$Type<
                                      SetNotNull<(...)>,
                                      {
                                          address?: ...;
                                          countryOfBirth?: ...;
                                          dateOfBirth?: ...;
                                          identityDocument?: ...;
                                          isBeneficialOwner?: ...;
                                          isPoliticallyExposed?: ...;
                                          nationality?: ...;
                                          occupationCode?: ...;
                                          ownershipPercent?: ...;
                                          personReferenceId?: ...;
                                          routeFusionDocumentsUploadedAt?: ...;
                                          routeFusionRepresentativeId?: ...;
                                          sex?: ...;
                                          sharesAllocated?: ...;
                                          taxId?: ...;
                                          title?: ...;
                                          verificationProfileId?: ...;
                                          zenusPersonId?: ...;
                                      },
                                  >,
                                  {
                                      data: {
                                          address?: ...;
                                          countryOfBirth?: ...;
                                          dateOfBirth?: ...;
                                          identityDocument?: ...;
                                          isBeneficialOwner?: ...;
                                          isPoliticallyExposed?: ...;
                                          nationality?: ...;
                                          occupationCode?: ...;
                                          ownershipPercent?: ...;
                                          personReferenceId?: ...;
                                          routeFusionDocumentsUploadedAt?: ...;
                                          routeFusionRepresentativeId?: ...;
                                          sex?: ...;
                                          sharesAllocated?: ...;
                                          taxId?: ...;
                                          title?: ...;
                                          verificationProfileId?: ...;
                                          zenusPersonId?: ...;
                                      };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              deletedAt: PgBuildColumn<
                                  "related_person",
                                  PgTimestampBuilder,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                              email: PgBuildColumn<
                                  "related_person",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                              externalId: PgBuildColumn<
                                  "related_person",
                                  SetHasRuntimeDefault<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              id: PgBuildColumn<
                                  "related_person",
                                  HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: "byDefault";
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              name: PgBuildColumn<
                                  "related_person",
                                  Set$Type<
                                      PgJsonbBuilder,
                                      { firstName: ...; lastName: ...; middleName?: ... },
                                  >,
                                  {
                                      data: { firstName: ...; lastName: ...; middleName?: ... };
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                              organizationExternalId: PgBuildColumn<
                                  "related_person",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              organizationId: PgBuildColumn<
                                  "related_person",
                                  SetNotNull<PgIntegerBuilder>,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              phone: PgBuildColumn<
                                  "related_person",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                              status: PgBuildColumn<
                                  "related_person",
                                  Set$Type<SetNotNull<(...)>, (...) | (...) | (...) | (...) | (...)>,
                                  {
                                      data: (...) | (...) | (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              type: PgBuildColumn<
                                  "related_person",
                                  Set$Type<SetNotNull<(...)>, (...) | (...)>,
                                  {
                                      data: (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              updatedAt: PgBuildColumn<
                                  "related_person",
                                  SetHasDefault<SetHasDefault<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "related_person";
                                  },
                              >;
                              verificationProfileId: PgBuildColumn<
                                  "related_person",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                              verificationReasons: PgBuildColumn<
                                  "related_person",
                                  Set$Type<PgJsonbBuilder, VerificationReasons>,
                                  {
                                      data: VerificationReasons;
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "related_person";
                                  },
                              >;
                          };
                          dialect: "pg";
                          isAlias: false;
                          name: "related_person";
                          schema: "b2b";
                      },
                  >,
                  "enableRLS",
              >,
              "createdAt"
              | "updatedAt",
          >[]
        • OptionalorganizationId?: string

          Omit to search every business of the customer.

        • Optionalpage?: number

          Defaults to 1

        • OptionalpageSize?: number

          Defaults to 50

        • Optionalstatuses?: (
              | "PENDING_VERIFICATION"
              | "ACTION_REQUIRED"
              | "APPROVED"
              | "DELETED"
              | "REVIEW"
              | "BLOCKED"
          )[]
        • Optionaltx?: PgAsyncTransaction<NodePgQueryResultHKT, EmptyRelations>

          Reads inside this transaction rather than on a pool connection.

        • Optionaltypes?: ("CONTROL" | "BENEFICIAL_OWNER")[]
        • OptionalupdatedAt?: DbTimestampCriteria
        • OptionalverificationProfileIds?: string[]

          The person's AiPrise user profile ids.

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: {
                      address?: {
                          city: string;
                          countryCode: string;
                          line1: string;
                          line2?: string;
                          postalCode?: string;
                          regionCode?: string;
                      };
                      countryOfBirth?: string;
                      countryOfResidence: string;
                      createdAt: Date;
                      dateOfBirth?: string;
                      deletedAt?: Date;
                      email: string
                      | null;
                      id: string;
                      identityDocument?: {
                          expiryDate: string;
                          issuingCountry: string;
                          number: string;
                          type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                      };
                      isBeneficialOwner?: boolean;
                      isPoliticallyExposed?: boolean;
                      name: | { firstName: string; lastName: string; middleName?: string }
                      | null;
                      nationality?: string;
                      occupationCode?: string;
                      organizationId: string;
                      ownershipPercent?: number;
                      phone: string | null;
                      requiredInfo: RequiredInfoField[];
                      roleDescription: string;
                      routeFusionDocumentsUploadedAt?: string;
                      sex?: "OTHER" | "MALE" | "FEMALE";
                      sharesAllocated?: number;
                      status:
                          | "PENDING_VERIFICATION"
                          | "ACTION_REQUIRED"
                          | "APPROVED"
                          | "DELETED"
                          | "REVIEW"
                          | "BLOCKED";
                      statusDescription: string;
                      taxId?: string;
                      title?: string;
                      type: "CONTROL"
                      | "BENEFICIAL_OWNER";
                      typeDescription: string;
                      updatedAt: Date;
                      verificationReasonCode?:
                          | "OTHER"
                          | "INVALID_TAX_ID"
                          | "ADDRESS_MISMATCH"
                          | "REGISTRY_NOT_FOUND"
                          | "DOCUMENT_ISSUE"
                          | "IDENTITY_MISMATCH";
                      verificationReasonCodeDescription?: string;
                  }[];
                  total: number;
              };
          },
      >

    • Parameters

      • __namedParameters: {
            customerId: string;
            data: Partial<
                Omit<RelatedPersonInput, "name"> & {
                    name: Partial<RelatedPersonInput["name"]>;
                    type: RelatedPerson["type"];
                },
            >;
            id: string;
            organizationId: string;
        }
        • customerId: string
        • data: Partial<
              Omit<RelatedPersonInput, "name"> & {
                  name: Partial<RelatedPersonInput["name"]>;
                  type: RelatedPerson["type"];
              },
          >

          name may be partial; the parts sent replace the stored ones.

        • id: string
        • organizationId: string

      Returns Promise<
          | {
              ok: true;
              value: {
                  address?: {
                      city: string;
                      countryCode: string;
                      line1: string;
                      line2?: string;
                      postalCode?: string;
                      regionCode?: string;
                  };
                  countryOfBirth?: string;
                  countryOfResidence: string;
                  createdAt: Date;
                  dateOfBirth?: string;
                  deletedAt?: Date;
                  email: string
                  | null;
                  id: string;
                  identityDocument?: {
                      expiryDate: string;
                      issuingCountry: string;
                      number: string;
                      type: "PASSPORT" | "DRIVER_LICENSE" | "ID_CARD";
                  };
                  isBeneficialOwner?: boolean;
                  isPoliticallyExposed?: boolean;
                  name: { firstName: string; lastName: string; middleName?: string }
                  | null;
                  nationality?: string;
                  occupationCode?: string;
                  organizationId: string;
                  ownershipPercent?: number;
                  phone: string | null;
                  requiredInfo: RequiredInfoField[];
                  roleDescription: string;
                  routeFusionDocumentsUploadedAt?: string;
                  sex?: "OTHER" | "MALE" | "FEMALE";
                  sharesAllocated?: number;
                  status:
                      | "PENDING_VERIFICATION"
                      | "ACTION_REQUIRED"
                      | "APPROVED"
                      | "DELETED"
                      | "REVIEW"
                      | "BLOCKED";
                  statusDescription: string;
                  taxId?: string;
                  title?: string;
                  type: "CONTROL"
                  | "BENEFICIAL_OWNER";
                  typeDescription: string;
                  updatedAt: Date;
                  verificationReasonCode?:
                      | "OTHER"
                      | "INVALID_TAX_ID"
                      | "ADDRESS_MISMATCH"
                      | "REGISTRY_NOT_FOUND"
                      | "DOCUMENT_ISSUE"
                      | "IDENTITY_MISMATCH";
                  verificationReasonCodeDescription?: string;
              };
          }
          | {
              error: | ServiceError<"NOT_FOUND">
              | ServiceError<
                  | "INVALID_COUNTRY"
                  | "INVALID_PHONE"
                  | "INVALID_EMAIL"
                  | "INVALID_DATE_OF_BIRTH"
                  | "INVALID_US_STATE",
              >
              | ServiceError<"INVALID_BENEFICIAL_OWNERSHIP">
              | ServiceError<"DUPLICATE_RELATED_PERSON">
              | RelatedPersonVerificationFailed;
              ok: false;
          },
      >