generated: '2026-10-14' method: derived generator: derive-data-model.py source: - openapi/banyan-systems-rest-api-openapi.yml - openapi/banyan-systems-sensitive-data-vault-openapi.yml notation: has_one = property $ref; has_many = array of $ref; belongs_to = _id field summary: entities: 114 entities_in_spec: 114 relationships: 81 entities: - name: AddressEgressJSON fields: 6 - name: AddressHotelJSON fields: 6 - name: AddressIngressJSON fields: 6 - name: AddressMerchantJSON fields: 6 - name: AddressRetailJSON fields: 6 - name: ApplicationIDJSON fields: 1 - name: BaseEnrichedTransactionEgressJSON fields: 5 - name: BaseEnrichedTransactionMerchantJSON fields: 4 - name: BaseOfferRedemptionEgressJSON fields: 7 - name: BaseReceiptEgressJSON fields: 17 - name: CampaignEgressJSON fields: 6 - name: CampaignIngressJSON fields: 2 - name: ConsentDecisionEgressJSON fields: 4 - name: ConsentDecisionIngressJSON fields: 3 - name: ConsentEgressJSON fields: 5 - name: ConsentIngressJSON fields: 5 - name: CreateConsentRecordIDJSON fields: 1 - name: DiningItemEgressJSON fields: 3 - name: DiningItemHotelJSON fields: 3 - name: DiningItemMerchantJSON fields: 3 - name: EncryptedSensitiveDataEgressJSON fields: 6 - name: EncryptedSensitiveDataHotelJSON fields: 6 - name: EncryptedSensitiveDataMerchantJSON fields: 6 - name: EnrichedTransactionEgressJSON fields: 1 - name: EnrichedTransactionMerchantJSON fields: 1 - name: ErrorJSON fields: 3 - name: ErrorResponseJSON fields: 3 - name: FindConsentInputJSON fields: 4 - name: FindConsentOutputJSON fields: 1 - name: HistoryItemJSON fields: 3 - name: HistoryParametersJSON fields: 3 - name: HotelDailyChargesEgressJSON fields: 7 - name: HotelDailyChargesHotelJSON fields: 8 - name: HotelDailyChargesMerchantJSON fields: 7 - name: HotelDiningEgressJSON fields: 6 - name: HotelDiningHotelJSON fields: 6 - name: HotelDiningMerchantJSON fields: 6 - name: HotelFeesEgressJSON fields: 9 - name: HotelFeesHotelJSON fields: 9 - name: HotelFeesMerchantJSON fields: 9 - name: HotelReceiptEgressJSON fields: 4 - name: HotelReceiptHotelJSON fields: 4 - name: HotelReceiptMerchantJSON fields: 4 - name: HotelRoomEgressJSON fields: 4 - name: HotelRoomHotelJSON fields: 4 - name: HotelRoomMerchantJSON fields: 4 - name: HotelTaxesEgressJSON fields: 5 - name: HotelTaxesHotelJSON fields: 5 - name: HotelTaxesMerchantJSON fields: 5 - name: LocationEgressJSON fields: 6 - name: LocationHotelJSON fields: 5 - name: LocationIngressJSON fields: 6 - name: LocationMerchantJSON fields: 6 - name: LocationRetailJSON fields: 6 - name: MerchantEgressJSON fields: 1 - name: MerchantHotelJSON fields: 1 - name: MerchantIngressJSON fields: 1 - name: MerchantMerchantJSON fields: 1 - name: MerchantRetailJSON fields: 1 - name: OfferActivationEgressJSON fields: 6 - name: OfferActivationEntityJSON fields: 7 - name: OfferActivationIngressJSON fields: 3 - name: OfferCriteriaEgressJSON fields: 9 - name: OfferCriteriaEntityJSON fields: 10 - name: OfferCriteriaIngressJSON fields: 9 - name: OfferEgressJSON fields: 24 - name: OfferEntityJSON fields: 25 - name: OfferHotelCriteriaEgressJSON fields: 9 - name: OfferHotelCriteriaEntityJSON fields: 9 - name: OfferHotelCriteriaIngressJSON fields: 9 - name: OfferIngressJSON fields: 21 - name: OfferRedemptionEgressJSON fields: 1 - name: OfferRedemptionHotelResultEgressJSON fields: 6 - name: OfferRedemptionItemsResultEgressJSON fields: 3 - name: OfferRedemptionResultEgressJSON fields: 5 - name: PatchOfferActivationInputJSON fields: 1 - name: PatchOfferCriteriaInputJSON fields: 10 - name: PatchOfferHotelCriteriaInputJSON fields: 9 - name: PatchOfferInputJSON fields: 19 - name: PostReceiptIDJSON fields: 2 - name: PostTransactionIDJSON fields: 2 - name: ReceiptEgressJSON fields: 0 - name: ReceiptHotelEgressJSON fields: 2 - name: ReceiptHotelJSON fields: 16 - name: ReceiptItemEgressJSON fields: 13 - name: ReceiptItemMerchantJSON fields: 13 - name: ReceiptItemRetailJSON fields: 12 - name: ReceiptMerchantEgressJSON fields: 2 - name: ReceiptMerchantJSON fields: 19 - name: ReceiptPaymentEgressJSON fields: 14 - name: ReceiptPaymentHotelJSON fields: 17 - name: ReceiptPaymentMerchantJSON fields: 17 - name: ReceiptPaymentRetailJSON fields: 17 - name: ReceiptRetailJSON fields: 16 - name: RxSearchMerchantJSON fields: 5 - name: SpaChargeEgressJSON fields: 5 - name: SpaChargeHotelJSON fields: 5 - name: SpaChargeMerchantJSON fields: 5 - name: TagCounterDailyCountJSON fields: 4 - name: TagCounterQueryRequestJSON fields: 5 - name: TagCounterQueryResponseJSON fields: 1 - name: TransactionEgressJSON fields: 12 - name: TransactionIngressJSON fields: 10 - name: TransactionPaymentEgressJSON fields: 13 - name: TransactionPaymentIngressJSON fields: 13 - name: ValidationJSON fields: 3 - name: VersionDataJSON fields: 8 - name: VersionResultJSON fields: 2 - name: WebhookAppOutJSON fields: 7 - name: WebhookEndpointIDJSON fields: 1 - name: WebhookEndpointInJSON fields: 10 - name: WebhookEndpointOutJSON fields: 12 - name: WebhookEndpointUpdateJSON fields: 9 - name: WebhookEventTypeOutJSON fields: 7 relationships: - from: ErrorJSON to: ValidationJSON type: has_many via: validations - from: ErrorResponseJSON to: ErrorJSON type: has_many via: errors - from: VersionResultJSON to: VersionDataJSON type: has_many via: data - from: OfferEntityJSON to: OfferCriteriaEntityJSON type: has_one via: offer_criteria - from: OfferEntityJSON to: OfferHotelCriteriaEntityJSON type: has_one via: offer_hotel_criteria - from: OfferIngressJSON to: OfferCriteriaIngressJSON type: has_one via: offer_criteria - from: OfferIngressJSON to: OfferHotelCriteriaIngressJSON type: has_one via: offer_hotel_criteria - from: PatchOfferInputJSON to: PatchOfferCriteriaInputJSON type: has_one via: offer_criteria - from: PatchOfferInputJSON to: PatchOfferHotelCriteriaInputJSON type: has_one via: offer_hotel_criteria - from: HotelDailyChargesHotelJSON to: HotelDiningHotelJSON type: has_one via: dining - from: HotelDailyChargesHotelJSON to: HotelFeesHotelJSON type: has_one via: fees - from: HotelDailyChargesHotelJSON to: HotelRoomHotelJSON type: has_one via: room - from: HotelDailyChargesHotelJSON to: SpaChargeHotelJSON type: has_many via: spa - from: HotelDailyChargesHotelJSON to: HotelTaxesHotelJSON type: has_one via: tax - from: HotelDiningHotelJSON to: DiningItemHotelJSON type: has_many via: minibar - from: HotelDiningHotelJSON to: DiningItemHotelJSON type: has_many via: room_service_dining - from: HotelReceiptHotelJSON to: EncryptedSensitiveDataHotelJSON type: has_one via: guest_information - from: LocationHotelJSON to: AddressHotelJSON type: has_one via: address - from: ReceiptHotelJSON to: HotelReceiptHotelJSON type: has_one via: hotel - from: ReceiptHotelJSON to: LocationHotelJSON type: has_one via: location - from: ReceiptHotelJSON to: MerchantHotelJSON type: has_one via: merchant - from: ReceiptHotelJSON to: ReceiptPaymentHotelJSON type: has_many via: payments - from: LocationRetailJSON to: AddressRetailJSON type: has_one via: address - from: ReceiptRetailJSON to: ReceiptItemRetailJSON type: has_many via: items - from: ReceiptRetailJSON to: LocationRetailJSON type: has_one via: location - from: ReceiptRetailJSON to: MerchantRetailJSON type: has_one via: merchant - from: ReceiptRetailJSON to: ReceiptPaymentRetailJSON type: has_many via: payments - from: HotelDailyChargesMerchantJSON to: HotelDiningMerchantJSON type: has_one via: dining - from: HotelDailyChargesMerchantJSON to: HotelFeesMerchantJSON type: has_one via: fees - from: HotelDailyChargesMerchantJSON to: HotelRoomMerchantJSON type: has_one via: room - from: HotelDailyChargesMerchantJSON to: SpaChargeMerchantJSON type: has_many via: spa - from: HotelDailyChargesMerchantJSON to: HotelTaxesMerchantJSON type: has_one via: tax - from: HotelDiningMerchantJSON to: DiningItemMerchantJSON type: has_many via: minibar - from: HotelDiningMerchantJSON to: DiningItemMerchantJSON type: has_many via: room_service_dining - from: HotelReceiptMerchantJSON to: EncryptedSensitiveDataMerchantJSON type: has_one via: guest_information - from: LocationMerchantJSON to: AddressMerchantJSON type: has_one via: address - from: ReceiptMerchantJSON to: HotelReceiptMerchantJSON type: has_one via: hotel - from: ReceiptMerchantJSON to: ReceiptItemMerchantJSON type: has_many via: items - from: ReceiptMerchantJSON to: LocationMerchantJSON type: has_one via: location - from: ReceiptMerchantJSON to: MerchantMerchantJSON type: has_one via: merchant - from: ReceiptMerchantJSON to: ReceiptPaymentMerchantJSON type: has_many via: payments - from: TagCounterQueryResponseJSON to: TagCounterDailyCountJSON type: has_many via: daily_counts - from: LocationIngressJSON to: AddressIngressJSON type: has_one via: address - from: TransactionIngressJSON to: LocationIngressJSON type: has_one via: location - from: TransactionIngressJSON to: MerchantIngressJSON type: has_one via: merchant - from: TransactionIngressJSON to: TransactionPaymentIngressJSON type: has_one via: payment - from: LocationEgressJSON to: AddressEgressJSON type: has_one via: address - from: TransactionEgressJSON to: LocationEgressJSON type: has_one via: location - from: TransactionEgressJSON to: MerchantEgressJSON type: has_one via: merchant - from: TransactionEgressJSON to: TransactionPaymentEgressJSON type: has_one via: payment - from: BaseEnrichedTransactionEgressJSON to: TransactionEgressJSON type: has_one via: transaction - from: BaseReceiptEgressJSON to: HotelReceiptEgressJSON type: has_one via: hotel - from: BaseReceiptEgressJSON to: ReceiptItemEgressJSON type: has_many via: items - from: BaseReceiptEgressJSON to: LocationEgressJSON type: has_one via: location - from: BaseReceiptEgressJSON to: MerchantEgressJSON type: has_one via: merchant - from: EnrichedTransactionEgressJSON to: ReceiptEgressJSON type: has_one via: receipt - from: HotelDailyChargesEgressJSON to: HotelDiningEgressJSON type: has_one via: dining - from: HotelDailyChargesEgressJSON to: HotelFeesEgressJSON type: has_one via: fees - from: HotelDailyChargesEgressJSON to: HotelRoomEgressJSON type: has_one via: room - from: HotelDailyChargesEgressJSON to: SpaChargeEgressJSON type: has_many via: spa - from: HotelDailyChargesEgressJSON to: HotelTaxesEgressJSON type: has_one via: tax - from: HotelDiningEgressJSON to: DiningItemEgressJSON type: has_many via: minibar - from: HotelDiningEgressJSON to: DiningItemEgressJSON type: has_many via: room_service_dining - from: HotelReceiptEgressJSON to: EncryptedSensitiveDataEgressJSON type: has_one via: guest_information - from: ReceiptHotelEgressJSON to: HotelReceiptEgressJSON type: has_one via: hotel - from: ReceiptHotelEgressJSON to: ReceiptPaymentEgressJSON type: has_one via: payment - from: ReceiptMerchantEgressJSON to: ReceiptItemEgressJSON type: has_many via: items - from: ReceiptMerchantEgressJSON to: ReceiptPaymentEgressJSON type: has_one via: payment - from: BaseOfferRedemptionEgressJSON to: CampaignEgressJSON type: has_one via: campaign - from: BaseOfferRedemptionEgressJSON to: OfferEgressJSON type: has_one via: offer - from: BaseOfferRedemptionEgressJSON to: OfferActivationEgressJSON type: has_one via: offer_activation - from: BaseOfferRedemptionEgressJSON to: OfferRedemptionResultEgressJSON type: has_one via: result - from: OfferEgressJSON to: OfferCriteriaEgressJSON type: has_one via: offer_criteria - from: OfferEgressJSON to: OfferHotelCriteriaEgressJSON type: has_one via: offer_hotel_criteria - from: OfferRedemptionEgressJSON to: EnrichedTransactionEgressJSON type: has_one via: enriched_transaction - from: OfferRedemptionResultEgressJSON to: OfferRedemptionHotelResultEgressJSON type: has_one via: hotel - from: OfferRedemptionResultEgressJSON to: OfferRedemptionItemsResultEgressJSON type: has_one via: items - from: BaseEnrichedTransactionMerchantJSON to: ReceiptMerchantJSON type: has_one via: receipt - from: EnrichedTransactionMerchantJSON to: TransactionEgressJSON type: has_one via: transaction - from: ConsentIngressJSON to: ConsentDecisionIngressJSON type: has_many via: log - from: ConsentEgressJSON to: ConsentDecisionEgressJSON type: has_many via: log