generated: '2026-09-05' method: derived source: openapi/ — components.schemas and definitions across all 118 first-party Citi contracts, harvested 2026-09-05 note: 'Citi does NOT publish one shared object model. Each product family ships its own component schemas and there is no cross-spec $ref: every reference resolves inside its own document. What is shared is the ISO 20022 message vocabulary, not a REST resource graph — so the entity graph below is a census of the recurring domain objects, not a single normalised model, and no relationship is asserted that the contracts do not declare.' shared_model: false schema_count: 2511 recurring_entities: - entity: Error-Detail declared_in_specs: 21 - entity: ErrorMessage declared_in_specs: 19 - entity: ErrorResponse declared_in_specs: 17 - entity: ErrorDetail declared_in_specs: 17 - entity: Error-Response declared_in_specs: 14 - entity: Document declared_in_specs: 13 - entity: ActiveOrHistoricCurrencyAndAmount declared_in_specs: 13 - entity: PhoneNumber declared_in_specs: 13 - entity: CountryCode declared_in_specs: 13 - entity: Max4Text declared_in_specs: 12 - entity: AccountIdentification4Choice declared_in_specs: 12 - entity: GenericAccountIdentification1 declared_in_specs: 12 - entity: IBAN2007Identifier declared_in_specs: 12 - entity: ActiveOrHistoricCurrencyCode declared_in_specs: 12 - entity: GenericFinancialIdentification1 declared_in_specs: 12 - entity: FinancialIdentificationSchemeName1Choice declared_in_specs: 12 - entity: ClearingSystemMemberIdentification2 declared_in_specs: 12 - entity: GenericOrganisationIdentification1 declared_in_specs: 12 - entity: GenericPersonIdentification1 declared_in_specs: 12 - entity: ISODate declared_in_specs: 12 - entity: Max2048Text declared_in_specs: 12 - entity: Max140Text declared_in_specs: 12 - entity: Max70Text declared_in_specs: 12 - entity: Max35Text declared_in_specs: 12 - entity: Max16Text declared_in_specs: 12 - entity: DateAndPlaceOfBirth declared_in_specs: 12 - entity: Max34Text declared_in_specs: 12 - entity: Max105Text declared_in_specs: 12 - entity: Purpose2Choice declared_in_specs: 11 - entity: TaxParty1 declared_in_specs: 11 - entity: TaxAuthorisation1 declared_in_specs: 11 - entity: TaxParty2 declared_in_specs: 11 - entity: TaxRecordPeriod1Code declared_in_specs: 11 - entity: DocumentType3Code declared_in_specs: 11 - entity: CreditorReferenceType1Choice declared_in_specs: 11 - entity: CreditorReferenceType2 declared_in_specs: 11 - entity: CreditorReferenceInformation2 declared_in_specs: 11 - entity: DocumentAdjustment1 declared_in_specs: 11 - entity: CreditDebitCode declared_in_specs: 11 - entity: CategoryPurpose1Choice declared_in_specs: 11 core_domain_objects: - entity: Payment described_in: - openapi/citi-paymentinitiation-pain103-openapi.yaml - openapi/citi-paymentinitiation-pacs008-openapi.yaml - openapi/citi-express-payments-api-openapi.yaml identifiers: - uetr (ISO 20022 unique end-to-end transaction reference, 36 chars) - end_to_end_id - instruction_id - payment_id relationships: - type: has_one target: Debtor via: debtor - type: has_one target: Creditor via: creditor - type: has_one target: PaymentStatus via: uetr - type: has_many target: Refund via: refund_id - entity: Account described_in: - openapi/citi-accounts-openapi.yaml - openapi/citi-accountsv5-openapi.yaml - openapi/citi-balances-api-openapi.yaml identifiers: - account_number - IBAN (ISO 13616) - branch / bank_id (BIC, ISO 9362) relationships: - type: has_many target: Balance via: account_number - type: has_many target: Statement via: account_number - type: has_many target: Transaction via: account_number - type: has_many target: BlockOrFilter via: account_number - entity: VirtualCardAccount described_in: - openapi/citi-virtual-cards-lifecycle-v4-openapi.yaml - openapi/citi-virtual-cards-pi-v2-openapi.yaml identifiers: - vca id - proxy / token id relationships: - type: has_many target: Authorization via: vca id - type: has_many target: Dispute via: acquirer reference number / case id - type: has_many target: Subscription via: subscriptionId - entity: Mandate described_in: - openapi/citi-payto-openapi.yaml - openapi/citi-e-mandate-api-v2-openapi.yaml - openapi/citi-direct-debit-api-openapi.yaml identifiers: - mandate id - idRec (Brazil PIX recurring mandate) relationships: - type: has_many target: Collection via: mandate id - entity: SafekeepingPosition described_in: - openapi/citi-safekeeping-positions-openapi.yaml - openapi/citi-safekeeping-accounts-openapi.yaml relationships: - type: belongs_to target: CustodyAccount via: account - type: has_many target: SafekeepingTransaction via: account - entity: FXOrder described_in: - openapi/citi-fx-orders-sync-api-openapi.yaml - openapi/citi-fx-quote-sync-api-openapi.yaml relationships: - type: belongs_to target: FXQuote via: quote id - type: has_one target: FXCancellation via: order id identifier_conventions: note: 'There is no fleet-wide id prefix scheme of the Stripe kind. Identifiers are domain-standard rather than vendor-branded: uetr, IBAN, BIC, end-to-end id, txid/idRec on the Brazil PIX surface.' observed: - custId - Id - jsonReqId - senderCompId - onBehalfOfCompId - id - sprefId - clOrdId - csprefId - rateSetId - depAcctId - programId - orderId - messageId - vcaId - cardAcctId - execId - bank_id - uetr - end_to_end_id routing_dimensions: note: Region and Country are declared request headers on 52 operations and select the servicing Citi legal entity. The same account or payment identifier is not global across entities — the region/country pair is part of the addressing.