1use chrono::{DateTime, NaiveDate, Utc};
4use uuid::Uuid;
5
6#[derive(Clone, Debug, Deserialize, PartialEq)]
8#[serde(rename_all = "camelCase")]
9pub struct WebhookDispatchFeedItem {
10 pub webhook_event_uid: Uuid,
12 pub event_timestamp: DateTime<Utc>,
14 pub account_holder_uid: Uuid,
16 pub content: FeedItem,
18}
19
20#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
22#[serde(rename_all = "camelCase")]
23pub struct WebhookDispatchPaymentOrderWebhookEventPayload {
24 pub webhook_event_uid: Uuid,
26 pub event_timestamp: DateTime<Utc>,
28 pub account_holder_uid: Uuid,
30 pub content: PaymentOrderWebhookEventPayload,
32}
33
34#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
36#[serde(rename_all = "camelCase")]
37pub struct WebhookDispatchPaymentOrder {
38 pub webhook_event_uid: Uuid,
40 pub event_timestamp: DateTime<Utc>,
42 pub account_holder_uid: Uuid,
44 pub content: PaymentOrder,
46}
47
48#[derive(Clone, Debug, Deserialize, PartialEq)]
50#[serde(rename_all = "camelCase")]
51pub struct FeedItem {
52 pub feed_item_uid: Uuid,
54 pub category_uid: Uuid,
56 pub account_uid: Uuid,
58 pub amount: CurrencyAndAmount,
60 pub source_amount: CurrencyAndAmount,
62 pub direction: Direction,
64 pub updated_at: DateTime<Utc>,
66 pub transaction_time: DateTime<Utc>,
68 pub settlement_time: DateTime<Utc>,
70 pub source: Source,
72 pub source_sub_type: SourceSubtype,
74 pub status: Status,
76 pub transacting_application_user_uid: Uuid,
78 pub counter_party_type: CounterPartyType,
80 pub counter_party_uid: Uuid,
82 pub counter_party_name: String,
84 pub counter_party_sub_entity_uid: Uuid,
86 pub counter_party_sub_entity_name: String,
88 pub counter_party_sub_entity_identifier: String,
90 pub counter_party_sub_entity_sub_identifier: String,
92 pub exchange_rate: f64,
94 pub total_fee_amount: CurrencyAndAmount,
96 pub reference: String,
98 pub country: Country,
100 pub spending_category: SpendingCategory,
102 pub user_note: String,
104 pub round_up: AssociatedFeedRoundUp,
106 pub has_attachment: bool,
108 pub receipt_present: bool,
110 pub feed_item_failure_reason: FeedItemFailureReason,
112 pub master_card_feed_details: MasterCardFeedItemData,
114}
115
116#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
118#[serde(rename_all = "camelCase")]
119pub struct PaymentOrderWebhookEventPayload {
120 pub payment_order: PaymentOrder,
122 pub success: bool,
124 pub reason: String,
126 pub payment_uid: Uuid,
128}
129
130#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
132#[serde(rename_all = "camelCase")]
133pub struct PaymentOrder {
134 pub payment_order_uid: Uuid,
136 pub category_uid: Uuid,
138 pub amount: CurrencyAndAmount,
140 pub reference: String,
142 pub payee_uid: Uuid,
144 pub payee_account_uid: Uuid,
146 pub payment_order_recurrance: Option<StandingOrderRecurrance>,
148 pub processed_immediately: bool,
151 pub next_date: NaiveDate,
153 pub cancelled_at: DateTime<Utc>,
155 pub updated_at: DateTime<Utc>,
157 pub spending_category: Option<SpendingCategory>,
159 pub standing_order_recurrance: Option<StandingOrderRecurrance>,
161}
162
163#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
165#[serde(rename_all = "camelCase")]
166pub struct StandingOrderRecurrance {
167 pub start_date: NaiveDate,
169 pub frequency: Option<Frequency>,
171 pub interval: Option<i32>,
173 pub count: Option<i32>,
175 pub until_date: NaiveDate,
177}
178
179#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
181#[serde(rename_all = "camelCase")]
182pub struct CurrencyAndAmount {
183 pub currency: Currency,
185 pub minor_units: i64,
187}
188
189#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
191#[serde(rename_all = "camelCase")]
192pub struct AssociatedFeedRoundUp {
193 pub goal_category_uid: Uuid,
195 pub amount: CurrencyAndAmount,
197}
198
199#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
201#[serde(rename_all = "camelCase")]
202pub struct MasterCardFeedItemData {
203 pub merchant_identifier: String,
205 pub mcc: i32,
207 pub pos_timestamp: LocalTime,
209 pub authorisation_code: String,
211 pub card_last_4: String,
213}
214
215#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
217#[serde(rename_all = "camelCase")]
218pub struct LocalTime {
219 pub hour: i32,
220 pub minute: i32,
221 pub second: i32,
222 pub nano: i32,
223}
224
225#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
227pub enum Currency {
228 NDEFINED,
229 AED,
230 AFN,
231 ALL,
232 AMD,
233 ANG,
234 AOA,
235 ARS,
236 AUD,
237 AWG,
238 AZN,
239 BAM,
240 BBD,
241 BDT,
242 BGN,
243 BHD,
244 BIF,
245 BMD,
246 BND,
247 BOB,
248 BOV,
249 BRL,
250 BSD,
251 BTN,
252 BWP,
253 BYN,
254 BYR,
255 BZD,
256 CAD,
257 CDF,
258 CHE,
259 CHF,
260 CHW,
261 CLF,
262 CLP,
263 CNY,
264 COP,
265 COU,
266 CRC,
267 CUC,
268 CUP,
269 CVE,
270 CZK,
271 DJF,
272 DKK,
273 DOP,
274 DZD,
275 EGP,
276 ERN,
277 ETB,
278 EUR,
279 FJD,
280 FKP,
281 GBP,
282 GEL,
283 GHS,
284 GIP,
285 GMD,
286 GNF,
287 GTQ,
288 GYD,
289 HKD,
290 HNL,
291 HRK,
292 HTG,
293 HUF,
294 IDR,
295 ILS,
296 INR,
297 IQD,
298 IRR,
299 ISK,
300 JMD,
301 JOD,
302 JPY,
303 KES,
304 KGS,
305 KHR,
306 KMF,
307 KPW,
308 KRW,
309 KWD,
310 KYD,
311 KZT,
312 LAK,
313 LBP,
314 LKR,
315 LRD,
316 LSL,
317 LTL,
318 LYD,
319 MAD,
320 MDL,
321 MGA,
322 MKD,
323 MMK,
324 MNT,
325 MOP,
326 MRO,
327 MRU,
328 MUR,
329 MVR,
330 MWK,
331 MXN,
332 MXV,
333 MYR,
334 MZN,
335 NAD,
336 NGN,
337 NIO,
338 NOK,
339 NPR,
340 NZD,
341 OMR,
342 PAB,
343 PEN,
344 PGK,
345 PHP,
346 PKR,
347 PLN,
348 PYG,
349 QAR,
350 RON,
351 RSD,
352 RUB,
353 RUR,
354 RWF,
355 SAR,
356 SBD,
357 SCR,
358 SDG,
359 SEK,
360 SGD,
361 SHP,
362 SLL,
363 SOS,
364 SRD,
365 SSP,
366 STD,
367 STN,
368 SVC,
369 SYP,
370 SZL,
371 THB,
372 TJS,
373 TMT,
374 TND,
375 TOP,
376 TRY,
377 TTD,
378 TWD,
379 TZS,
380 UAH,
381 UGX,
382 USD,
383 USN,
384 USS,
385 UYI,
386 UYU,
387 UZS,
388 VEF,
389 VES,
390 VND,
391 VUV,
392 WST,
393 XAF,
394 XAG,
395 XAU,
396 XBA,
397 XBB,
398 XBC,
399 XBD,
400 XCD,
401 XDR,
402 XOF,
403 XPD,
404 XPF,
405 XPT,
406 XSU,
407 XTS,
408 XUA,
409 XXX,
410 YER,
411 ZAR,
412 ZMW,
413 ZWL,
414}
415
416#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
418#[serde(rename_all = "UPPERCASE")]
419pub enum Direction {
420 In,
421 Out,
422}
423
424#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
426#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
427pub enum Source {
428 BritishBusinessBankFees,
429 CashDeposit,
430 CashDepositCharge,
431 CashWithdrawal,
432 CashWithdrawalCharge,
433 Chaps,
434 Cheque,
435 CicsCheque,
436 CurrencyCloud,
437 DirectCredit,
438 DirectDebit,
439 DirectDebitDispute,
440 InternalTransfer,
441 MasterCard,
442 MastercardMoneysend,
443 MastercardChargeback,
444 FasterPaymentsIn,
445 FasterPaymentsOut,
446 FasterPaymentsReversal,
447 StripeFunding,
448 InterestPayment,
449 NostroDeposit,
450 Overdraft,
451 OverdraftInterestWaived,
452 FasterPaymentsRefund,
453 StarlingPayStripe,
454 OnUsPayMe,
455 LoanPrincipalPayment,
456 LoanRepayment,
457 LoanOverpayment,
458 LoanLatePayment,
459 LoanFeePayment,
460 SepaCreditTransfer,
461 SepaDirectDebit,
462 Target2CustomerPayment,
463 FxTransfer,
464 IssPayment,
465 StarlingPayment,
466 SubscriptionCharge,
467 OverdraftFee,
468}
469
470#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
472#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
473pub enum SourceSubtype {
474 Contactless,
475 MagneticStrip,
476 ManualKeyEntry,
477 ChipAndPin,
478 Online,
479 Atm,
480 CreditAuth,
481 ApplePay,
482 AndroidPay,
483 FitbitPay,
484 GarminPay,
485 SamsungPay,
486 OtherWallet,
487 NotApplicable,
488 Unknown,
489 Deposit,
490 Overdraft,
491 SettleUp,
492 Nearby,
493 TransferSameCurrency,
494 SctPayment,
495 SctRejection,
496 SctReturn,
497 SctRecall,
498 SddPending,
499 SddPayment,
500 SddReturn,
501 CcExchange,
502 CcDomestic,
503 FxTransferSameAccountHolder,
504 FxTransferBetweenAccountHolders,
505}
506
507#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
509#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
510pub enum Status {
511 Upcoming,
512 Pending,
513 Retrying,
514 Reversed,
515 Settled,
516 Declined,
517 Refunded,
518 AccountCheck,
519}
520
521#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
523#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
524pub enum CounterPartyType {
525 Category,
526 Cheque,
527 Customer,
528 Payee,
529 Merchant,
530 Sender,
531 Starling,
532 Loan,
533}
534
535#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
537pub enum Country {
538 UNDEFINED,
539 AC,
540 AD,
541 AE,
542 AF,
543 AG,
544 AI,
545 AL,
546 AM,
547 AN,
548 AO,
549 AQ,
550 AR,
551 AS,
552 AT,
553 AU,
554 AW,
555 AX,
556 AZ,
557 BA,
558 BB,
559 BD,
560 BE,
561 BF,
562 BG,
563 BH,
564 BI,
565 BJ,
566 BL,
567 BM,
568 BN,
569 BO,
570 BQ,
571 BR,
572 BS,
573 BT,
574 BU,
575 BV,
576 BW,
577 BY,
578 BZ,
579 CA,
580 CC,
581 CD,
582 CF,
583 CG,
584 CH,
585 CI,
586 CK,
587 CL,
588 CM,
589 CN,
590 CO,
591 CP,
592 CR,
593 CS,
594 CU,
595 CV,
596 CW,
597 CX,
598 CY,
599 CZ,
600 DE,
601 DG,
602 DJ,
603 DK,
604 DM,
605 DO,
606 DZ,
607 EA,
608 EC,
609 EE,
610 EG,
611 EH,
612 ER,
613 ES,
614 ET,
615 EU,
616 EZ,
617 FI,
618 FJ,
619 FK,
620 FM,
621 FO,
622 FR,
623 FX,
624 GA,
625 GB,
626 GD,
627 GE,
628 GF,
629 GG,
630 GH,
631 GI,
632 GL,
633 GM,
634 GN,
635 GP,
636 GQ,
637 GR,
638 GS,
639 GT,
640 GU,
641 GW,
642 GY,
643 HK,
644 HM,
645 HN,
646 HR,
647 HT,
648 HU,
649 IC,
650 ID,
651 IE,
652 IL,
653 IM,
654 IN,
655 IO,
656 IQ,
657 IR,
658 IS,
659 IT,
660 JE,
661 JM,
662 JO,
663 JP,
664 KE,
665 KG,
666 KH,
667 KI,
668 KM,
669 KN,
670 KP,
671 KR,
672 KW,
673 KY,
674 KZ,
675 LA,
676 LB,
677 LC,
678 LI,
679 LK,
680 LR,
681 LS,
682 LT,
683 LU,
684 LV,
685 LY,
686 MA,
687 MC,
688 MD,
689 ME,
690 MF,
691 MG,
692 MH,
693 MK,
694 ML,
695 MM,
696 MN,
697 MO,
698 MP,
699 MQ,
700 MR,
701 MS,
702 MT,
703 MU,
704 MV,
705 MW,
706 MX,
707 MY,
708 MZ,
709 NA,
710 NC,
711 NE,
712 NF,
713 NG,
714 NI,
715 NL,
716 NO,
717 NP,
718 NR,
719 NT,
720 NU,
721 NZ,
722 OM,
723 PA,
724 PE,
725 PF,
726 PG,
727 PH,
728 PK,
729 PL,
730 PM,
731 PN,
732 PR,
733 PS,
734 PT,
735 PW,
736 PY,
737 QA,
738 RE,
739 RO,
740 RS,
741 RU,
742 RW,
743 SA,
744 SB,
745 SC,
746 SD,
747 SE,
748 SF,
749 SG,
750 SH,
751 SI,
752 SJ,
753 SK,
754 SL,
755 SM,
756 SN,
757 SO,
758 SR,
759 SS,
760 ST,
761 SU,
762 SV,
763 SX,
764 SY,
765 SZ,
766 TA,
767 TC,
768 TD,
769 TF,
770 TG,
771 TH,
772 TJ,
773 TK,
774 TL,
775 TM,
776 TN,
777 TO,
778 TP,
779 TR,
780 TT,
781 TV,
782 TW,
783 TZ,
784 UA,
785 UG,
786 UK,
787 UM,
788 US,
789 UY,
790 UZ,
791 VA,
792 VC,
793 VE,
794 VG,
795 VI,
796 VN,
797 VU,
798 WF,
799 WS,
800 XK,
801 YE,
802 YT,
803 YU,
804 ZA,
805 ZM,
806 ZR,
807 ZW,
808}
809
810#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
812#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
813pub enum SpendingCategory {
814 BillsAndServices,
815 Charity,
816 EatingOut,
817 Entertainment,
818 Expenses,
819 Family,
820 Gambling,
821 General,
822 Gifts,
823 Groceries,
824 Holidays,
825 Home,
826 Income,
827 Lifestyle,
828 Payments,
829 Pets,
830 Saving,
831 Shopping,
832 Transport,
833 None,
834 Revenue,
835 OtherIncome,
836 ClientRefunds,
837 Inventory,
838 Staff,
839 Travel,
840 Workplace,
841 RepairsAndMaintenance,
842 Admin,
843 Marketing,
844 BusinessEntertainment,
845 InterestPayments,
846 BankCharges,
847 Other,
848 FoodAndDrink,
849 Equipment,
850 ProfessionalServices,
851 PhoneAndInternet,
852 Vehicles,
853 DirectorsWages,
854 Vat,
855 CorporationTax,
856 SelfAssessmentTax,
857 InvestmentCapital,
858 Transfers,
859 LoanPrincipal,
860 Personal,
861 Dividends,
862}
863
864#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
866#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
867pub enum FeedItemFailureReason {
868 CardWalletLimit,
869 CardApplePayLimit,
870 CardPosDisabled,
871 CardAtmDisabled,
872 CardMobileWalletDisabled,
873 CardOnlineDisabled,
874 CardGamblingDisabled,
875 CardDisabled,
876 CardCancelled,
877 CardNotActivated,
878 CardMagneticStripDisabled,
879 CardManualKeyEntryDisabled,
880 CardPayAtPumpDeclined,
881 CardInsufficientFunds,
882 ChildCardMerchantDisabled,
883 DestinationAccountInvalid,
884 ReferenceInformationIncorrect,
885 DestinationAccountCurrencyIncorrect,
886 DestinationAccountNameMismatch,
887 DestinationAccountUnavailable,
888 IncorrectPin,
889 IncorrectCvv2,
890 InsufficientFunds,
891 MandateCancelled,
892 MandateNotFound,
893 ChequeBeingRepresented,
894 ChequeIssuerAccountClosed,
895 ChequeNotSignedInAccordanceWithMandate,
896 ChequeStopped,
897 ChequeDeclinedReferToIssuer,
898 LastBillItemCancelled,
899 ScaRequired,
900 PinTriesExceeded,
901 CvcTriesExceeded,
902 SuspiciousCardTransaction,
903}
904
905#[derive(Copy, Clone, Debug, Deserialize, Eq, PartialEq)]
907pub enum Frequency {
908 Daily,
909 Weekly,
910 Monthly,
911 Yearly,
912}