pi-spi-sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +22 -0
  3. package/README.md +300 -0
  4. package/dist/config.d.ts +35 -0
  5. package/dist/config.js +4 -0
  6. package/dist/error-handler.d.ts +7 -0
  7. package/dist/error-handler.js +52 -0
  8. package/dist/errors.d.ts +25 -0
  9. package/dist/errors.js +40 -0
  10. package/dist/examples.d.ts +8 -0
  11. package/dist/examples.js +91 -0
  12. package/dist/generated/core/ApiError.d.ts +10 -0
  13. package/dist/generated/core/ApiError.js +11 -0
  14. package/dist/generated/core/ApiRequestOptions.d.ts +13 -0
  15. package/dist/generated/core/ApiRequestOptions.js +1 -0
  16. package/dist/generated/core/ApiResult.d.ts +7 -0
  17. package/dist/generated/core/ApiResult.js +1 -0
  18. package/dist/generated/core/CancelablePromise.d.ts +20 -0
  19. package/dist/generated/core/CancelablePromise.js +111 -0
  20. package/dist/generated/core/OpenAPI.d.ts +16 -0
  21. package/dist/generated/core/OpenAPI.js +11 -0
  22. package/dist/generated/core/request.d.ts +34 -0
  23. package/dist/generated/core/request.js +269 -0
  24. package/dist/generated/index.d.ts +78 -0
  25. package/dist/generated/index.js +43 -0
  26. package/dist/generated/models/AliasCreationReponse.d.ts +22 -0
  27. package/dist/generated/models/AliasCreationReponse.js +1 -0
  28. package/dist/generated/models/AliasCreationRequest.d.ts +11 -0
  29. package/dist/generated/models/AliasCreationRequest.js +1 -0
  30. package/dist/generated/models/AliasReponseListe.d.ts +26 -0
  31. package/dist/generated/models/AliasReponseListe.js +1 -0
  32. package/dist/generated/models/AnnulationStatut.d.ts +13 -0
  33. package/dist/generated/models/AnnulationStatut.js +18 -0
  34. package/dist/generated/models/Champs.d.ts +1 -0
  35. package/dist/generated/models/Champs.js +1 -0
  36. package/dist/generated/models/CompteOperation.d.ts +72 -0
  37. package/dist/generated/models/CompteOperation.js +24 -0
  38. package/dist/generated/models/CompteOperationListe.d.ts +18 -0
  39. package/dist/generated/models/CompteOperationListe.js +1 -0
  40. package/dist/generated/models/CompteSolde.d.ts +129 -0
  41. package/dist/generated/models/CompteSolde.js +71 -0
  42. package/dist/generated/models/CompteTransfertIntraReponse.d.ts +33 -0
  43. package/dist/generated/models/CompteTransfertIntraReponse.js +12 -0
  44. package/dist/generated/models/CompteTransfertIntraRequest.d.ts +9 -0
  45. package/dist/generated/models/CompteTransfertIntraRequest.js +1 -0
  46. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +14 -0
  47. package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +19 -0
  48. package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +41 -0
  49. package/dist/generated/models/DemandePaiementConfirmationReponse.js +13 -0
  50. package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +3 -0
  51. package/dist/generated/models/DemandePaiementConfirmationRequest.js +1 -0
  52. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +9 -0
  53. package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +1 -0
  54. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +9 -0
  55. package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +1 -0
  56. package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +151 -0
  57. package/dist/generated/models/DemandePaiementConsultationReponse.js +27 -0
  58. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +3 -0
  59. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +1 -0
  60. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
  61. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +1 -0
  62. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
  63. package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +1 -0
  64. package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +74 -0
  65. package/dist/generated/models/DemandePaiementEnMasseRequest.js +1 -0
  66. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +98 -0
  67. package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +20 -0
  68. package/dist/generated/models/DemandePaiementListe.d.ts +26 -0
  69. package/dist/generated/models/DemandePaiementListe.js +1 -0
  70. package/dist/generated/models/DemandePaiementListeItem.d.ts +163 -0
  71. package/dist/generated/models/DemandePaiementListeItem.js +27 -0
  72. package/dist/generated/models/DemandePaiementReponse.d.ts +129 -0
  73. package/dist/generated/models/DemandePaiementReponse.js +1 -0
  74. package/dist/generated/models/DemandePaiementReponseRequest.d.ts +21 -0
  75. package/dist/generated/models/DemandePaiementReponseRequest.js +11 -0
  76. package/dist/generated/models/DemandePaiementRequest.d.ts +98 -0
  77. package/dist/generated/models/DemandePaiementRequest.js +7 -0
  78. package/dist/generated/models/DemandePaiementRequestBase.d.ts +42 -0
  79. package/dist/generated/models/DemandePaiementRequestBase.js +1 -0
  80. package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +12 -0
  81. package/dist/generated/models/DemandePaiementRequestCategorie.js +17 -0
  82. package/dist/generated/models/DemandePaiementStatut.d.ts +13 -0
  83. package/dist/generated/models/DemandePaiementStatut.js +18 -0
  84. package/dist/generated/models/DemandePaiementStatutRaison.d.ts +46 -0
  85. package/dist/generated/models/DemandePaiementStatutRaison.js +51 -0
  86. package/dist/generated/models/ListeMeta.d.ts +14 -0
  87. package/dist/generated/models/ListeMeta.js +1 -0
  88. package/dist/generated/models/Paiement.d.ts +156 -0
  89. package/dist/generated/models/Paiement.js +28 -0
  90. package/dist/generated/models/PaiementAnnulationMotif.d.ts +17 -0
  91. package/dist/generated/models/PaiementAnnulationMotif.js +22 -0
  92. package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +11 -0
  93. package/dist/generated/models/PaiementAnnulationReponseRequest.js +1 -0
  94. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +9 -0
  95. package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +1 -0
  96. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +9 -0
  97. package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +1 -0
  98. package/dist/generated/models/PaiementAnnulationRequest.d.ts +4 -0
  99. package/dist/generated/models/PaiementAnnulationRequest.js +1 -0
  100. package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +21 -0
  101. package/dist/generated/models/PaiementAnnulationStatutRaison.js +26 -0
  102. package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +3 -0
  103. package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +1 -0
  104. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
  105. package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +1 -0
  106. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
  107. package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +1 -0
  108. package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +97 -0
  109. package/dist/generated/models/PaiementEnMasseReponseStatut.js +20 -0
  110. package/dist/generated/models/PaiementEnMasseRequest.d.ts +54 -0
  111. package/dist/generated/models/PaiementEnMasseRequest.js +1 -0
  112. package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +31 -0
  113. package/dist/generated/models/PaiementImmediatConfirmationReponse.js +7 -0
  114. package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +3 -0
  115. package/dist/generated/models/PaiementImmediatConfirmationRequest.js +1 -0
  116. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +9 -0
  117. package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +1 -0
  118. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +9 -0
  119. package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +1 -0
  120. package/dist/generated/models/PaiementImmediatReponse.d.ts +98 -0
  121. package/dist/generated/models/PaiementImmediatReponse.js +7 -0
  122. package/dist/generated/models/PaiementImmediatRequest.d.ts +13 -0
  123. package/dist/generated/models/PaiementImmediatRequest.js +1 -0
  124. package/dist/generated/models/PaiementListe.d.ts +6 -0
  125. package/dist/generated/models/PaiementListe.js +1 -0
  126. package/dist/generated/models/PaiementRequest.d.ts +33 -0
  127. package/dist/generated/models/PaiementRequest.js +1 -0
  128. package/dist/generated/models/PaiementStatut.d.ts +13 -0
  129. package/dist/generated/models/PaiementStatut.js +18 -0
  130. package/dist/generated/models/PaiementStatutRaison.d.ts +56 -0
  131. package/dist/generated/models/PaiementStatutRaison.js +61 -0
  132. package/dist/generated/models/Problem7807.d.ts +31 -0
  133. package/dist/generated/models/Problem7807.js +1 -0
  134. package/dist/generated/models/RefDocType.d.ts +38 -0
  135. package/dist/generated/models/RefDocType.js +43 -0
  136. package/dist/generated/models/RetourStatut.d.ts +13 -0
  137. package/dist/generated/models/RetourStatut.js +18 -0
  138. package/dist/generated/models/RetourStatutRaison.d.ts +25 -0
  139. package/dist/generated/models/RetourStatutRaison.js +30 -0
  140. package/dist/generated/models/WebhookCreationRequest.d.ts +14 -0
  141. package/dist/generated/models/WebhookCreationRequest.js +1 -0
  142. package/dist/generated/models/WebhookCreationResponse.d.ts +12 -0
  143. package/dist/generated/models/WebhookCreationResponse.js +1 -0
  144. package/dist/generated/models/WebhookData.d.ts +8 -0
  145. package/dist/generated/models/WebhookData.js +1 -0
  146. package/dist/generated/models/WebhookEvent.d.ts +191 -0
  147. package/dist/generated/models/WebhookEvent.js +42 -0
  148. package/dist/generated/models/WebhookEventsList.d.ts +13 -0
  149. package/dist/generated/models/WebhookEventsList.js +1 -0
  150. package/dist/generated/models/WebhookList.d.ts +13 -0
  151. package/dist/generated/models/WebhookList.js +1 -0
  152. package/dist/generated/models/WebhookModificationRequest.d.ts +4 -0
  153. package/dist/generated/models/WebhookModificationRequest.js +1 -0
  154. package/dist/generated/models/WebhooksEvents.d.ts +12 -0
  155. package/dist/generated/models/WebhooksEvents.js +17 -0
  156. package/dist/generated/services/AliasService.d.ts +63 -0
  157. package/dist/generated/services/AliasService.js +84 -0
  158. package/dist/generated/services/ComptesService.d.ts +64 -0
  159. package/dist/generated/services/ComptesService.js +86 -0
  160. package/dist/generated/services/DemandeAnnulationService.d.ts +84 -0
  161. package/dist/generated/services/DemandeAnnulationService.js +99 -0
  162. package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +161 -0
  163. package/dist/generated/services/DemandesDePaiementEnMasseService.js +189 -0
  164. package/dist/generated/services/DemandesDePaiementService.d.ts +123 -0
  165. package/dist/generated/services/DemandesDePaiementService.js +161 -0
  166. package/dist/generated/services/NotificationService.d.ts +80 -0
  167. package/dist/generated/services/NotificationService.js +132 -0
  168. package/dist/generated/services/PaiementEnMasseService.d.ts +159 -0
  169. package/dist/generated/services/PaiementEnMasseService.js +187 -0
  170. package/dist/generated/services/PaiementImmediatService.d.ts +135 -0
  171. package/dist/generated/services/PaiementImmediatService.js +176 -0
  172. package/dist/generated/services/RetoursdeFondsService.d.ts +28 -0
  173. package/dist/generated/services/RetoursdeFondsService.js +37 -0
  174. package/dist/index.d.ts +14 -0
  175. package/dist/index.js +23 -0
  176. package/dist/query-builder.d.ts +91 -0
  177. package/dist/query-builder.js +187 -0
  178. package/dist/sdk.d.ts +88 -0
  179. package/dist/sdk.js +107 -0
  180. package/dist/services/alias.d.ts +72 -0
  181. package/dist/services/alias.js +82 -0
  182. package/dist/services/base.d.ts +9 -0
  183. package/dist/services/base.js +17 -0
  184. package/dist/services/comptes.d.ts +149 -0
  185. package/dist/services/comptes.js +158 -0
  186. package/dist/services/demandes-annulation.d.ts +97 -0
  187. package/dist/services/demandes-annulation.js +104 -0
  188. package/dist/services/demandes-paiement-en-masse.d.ts +139 -0
  189. package/dist/services/demandes-paiement-en-masse.js +139 -0
  190. package/dist/services/demandes-paiement.d.ts +144 -0
  191. package/dist/services/demandes-paiement.js +151 -0
  192. package/dist/services/paiements-en-masse.d.ts +152 -0
  193. package/dist/services/paiements-en-masse.js +153 -0
  194. package/dist/services/paiements.d.ts +135 -0
  195. package/dist/services/paiements.js +135 -0
  196. package/dist/services/retours-fonds.d.ts +94 -0
  197. package/dist/services/retours-fonds.js +100 -0
  198. package/dist/services/webhooks.d.ts +131 -0
  199. package/dist/services/webhooks.js +142 -0
  200. package/dist/types/alias.d.ts +64 -0
  201. package/dist/types/alias.js +73 -0
  202. package/dist/utils/constants.d.ts +93 -0
  203. package/dist/utils/constants.js +93 -0
  204. package/dist/utils/index.d.ts +60 -0
  205. package/dist/utils/index.js +115 -0
  206. package/package.json +81 -0
  207. package/scripts/post-generate.js +129 -0
  208. package/scripts/pre-generate.js +106 -0
@@ -0,0 +1,135 @@
1
+ import type { Paiement } from '../models/Paiement';
2
+ import type { PaiementImmediatConfirmationReponse } from '../models/PaiementImmediatConfirmationReponse';
3
+ import type { PaiementImmediatConfirmationRequest } from '../models/PaiementImmediatConfirmationRequest';
4
+ import type { PaiementImmediatReponse } from '../models/PaiementImmediatReponse';
5
+ import type { PaiementImmediatRequest } from '../models/PaiementImmediatRequest';
6
+ import type { PaiementListe } from '../models/PaiementListe';
7
+ import type { CancelablePromise } from '../core/CancelablePromise';
8
+ export declare class PaiementImmediatService {
9
+ /**
10
+ * Envoyer un paiement
11
+ * Ce point de terminaison permet au business d'effectuer des paiements.
12
+ *
13
+ * Le destinataire du paiement est identifié par son alias de compte.
14
+ *
15
+ * Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du bénéficiaire), puis attendra une confirmation explicite avant d'exécuter le paiement via l'endpoint `PUT /paiements/{txId}/confirmations`.
16
+ *
17
+ * **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
18
+ *
19
+ * @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
20
+ * - `INITIE` : En attente de confirmation (si `confirmation: true`)
21
+ * - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
22
+ * - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
23
+ * - `DU03` : txId dupliqué (déjà utilisé)
24
+ * - `BE23` : Alias bénéficiaire invalide
25
+ * - Autres codes ISO 20022
26
+ *
27
+ * @throws ApiError
28
+ */
29
+ static paiementCreer({ requestBody, }: {
30
+ /**
31
+ * Pour effectuer le transfert, le client doit fournir l'alias du destinataire ainsi que le montant du transfert à effectuer.
32
+ */
33
+ requestBody: PaiementImmediatRequest;
34
+ }): CancelablePromise<PaiementImmediatReponse>;
35
+ /**
36
+ * Lister les paiements
37
+ * Ce point de terminaison permet de lister les paiements effectués par le client.
38
+ * @returns PaiementListe Succès de l'opération
39
+ * @throws ApiError
40
+ */
41
+ static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }: {
42
+ payeAlias?: string;
43
+ payeCompte?: string;
44
+ payeurAlias?: string;
45
+ payeurCompte?: string;
46
+ dateEnvoi?: string;
47
+ dateIrrevocabilite?: string;
48
+ statut?: 'INITIE' | 'ENVOYE' | 'IRREVOCABLE' | 'REJETE';
49
+ categorie?: '631' | '000' | '400' | '733' | '300' | '999' | '500' | '521' | '401';
50
+ montantAchat?: number;
51
+ montantRetrait?: number;
52
+ motif?: string;
53
+ refDocType?: string;
54
+ instructionId?: string;
55
+ txId?: string;
56
+ annulationStatut?: string;
57
+ annulationMotif?: string;
58
+ retourStatut?: string;
59
+ page?: string;
60
+ size?: string;
61
+ sort?: string;
62
+ fields?: any;
63
+ }): CancelablePromise<PaiementListe>;
64
+ /**
65
+ * Détails d'un paiement
66
+ * Cet point de terminaison permet de consulter les details d'un paiement.
67
+ *
68
+ * @returns Paiement Opération effectuée avec succès
69
+ * @throws ApiError
70
+ */
71
+ static paiementRecuperer({ txId, }: {
72
+ /**
73
+ * L'identifiant de la transaction dans le SI du client
74
+ */
75
+ txId: string;
76
+ }): CancelablePromise<Paiement>;
77
+ /**
78
+ * Confirmer le paiement
79
+ * Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
80
+ * après vérification du nom et du pays du bénéficiaire.
81
+ *
82
+ * **Idempotence** : Cet endpoint est idempotent.
83
+ * - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
84
+ * - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
85
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
86
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
87
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
88
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
89
+ *
90
+ * **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
91
+ *
92
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
93
+ *
94
+ * @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
95
+ * @throws ApiError
96
+ */
97
+ static paiementConfirmer({ txId, requestBody, }: {
98
+ /**
99
+ * L'identifiant de la transaction dans le SI du payé
100
+ */
101
+ txId: string;
102
+ /**
103
+ * Le client envoie oui ou non s'il confirme l'envoi du paiement.
104
+ */
105
+ requestBody: PaiementImmediatConfirmationRequest;
106
+ }): CancelablePromise<PaiementImmediatConfirmationReponse>;
107
+ /**
108
+ * Vérifier un paiement
109
+ * Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
110
+ *
111
+ * Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
112
+ * Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
113
+ *
114
+ * Le **participant** doit, dans ce cas, vérifier dans sa base de données et s'il ne trouve pas le paiement, il doit interroger l’endpoint de PI-SPI permettant de **récupérer le statut d’un paiement**, puis **retourner ce statut** dans sa réponse.
115
+ *
116
+ * Le statut retourné doit être soit :
117
+ * - `IRREVOCABLE` (paiement irrévocable), ou
118
+ * - `REJETE` (paiement rejeté).
119
+ *
120
+ * Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
121
+ *
122
+ * ⚠️ **Remarques :**
123
+ * - La vérification ne doit concerner que les paiements réalisés depuis **moins de 3 mois (90 jours)** afin de garantir la disponibilité de la réponse.
124
+ * - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
125
+ *
126
+ * @returns Paiement Opération effectuée avec succès
127
+ * @throws ApiError
128
+ */
129
+ static paiementVerifier({ end2EndId, }: {
130
+ /**
131
+ * L'identifiant de bout en bout de la transaction
132
+ */
133
+ end2EndId: string;
134
+ }): CancelablePromise<Paiement>;
135
+ }
@@ -0,0 +1,176 @@
1
+ import { OpenAPI } from '../core/OpenAPI';
2
+ import { request as __request } from '../core/request';
3
+ export class PaiementImmediatService {
4
+ /**
5
+ * Envoyer un paiement
6
+ * Ce point de terminaison permet au business d'effectuer des paiements.
7
+ *
8
+ * Le destinataire du paiement est identifié par son alias de compte.
9
+ *
10
+ * Le business peut définir le champ `confirmation` à `true` pour demander une validation en deux étapes : le PSP retournera d'abord le résultat de la recherche d'alias (avec le nom et le pays du bénéficiaire), puis attendra une confirmation explicite avant d'exécuter le paiement via l'endpoint `PUT /paiements/{txId}/confirmations`.
11
+ *
12
+ * **Timeout de confirmation** : Si le business demande une confirmation, il dispose de **24 heures** pour confirmer. Passé ce délai, la demande expire automatiquement.
13
+ *
14
+ * @returns PaiementImmediatReponse Paiement traité. Le champ `statut` indique le résultat :
15
+ * - `INITIE` : En attente de confirmation (si `confirmation: true`)
16
+ * - `ENVOYE` : Paiement envoyé avec succès (si `confirmation: false`)
17
+ * - `REJETE` : Paiement rejeté. Le champ `statutRaison` contient le code d'erreur :
18
+ * - `DU03` : txId dupliqué (déjà utilisé)
19
+ * - `BE23` : Alias bénéficiaire invalide
20
+ * - Autres codes ISO 20022
21
+ *
22
+ * @throws ApiError
23
+ */
24
+ static paiementCreer({ requestBody, }) {
25
+ return __request(OpenAPI, {
26
+ method: 'POST',
27
+ url: '/paiements',
28
+ body: requestBody,
29
+ mediaType: 'application/json',
30
+ errors: {
31
+ 400: `La requête est malformée`,
32
+ 401: `Autorisations manquantes`,
33
+ 403: `Interdiction d'effectuer le paiement (erreurs métier non-retriables)`,
34
+ 429: `Erreur inattendue`,
35
+ 503: `Erreur inattendue du serveur`,
36
+ },
37
+ });
38
+ }
39
+ /**
40
+ * Lister les paiements
41
+ * Ce point de terminaison permet de lister les paiements effectués par le client.
42
+ * @returns PaiementListe Succès de l'opération
43
+ * @throws ApiError
44
+ */
45
+ static paiementLister({ payeAlias, payeCompte, payeurAlias, payeurCompte, dateEnvoi, dateIrrevocabilite, statut, categorie, montantAchat, montantRetrait, motif, refDocType, instructionId, txId, annulationStatut, annulationMotif, retourStatut, page, size, sort, fields, }) {
46
+ return __request(OpenAPI, {
47
+ method: 'GET',
48
+ url: '/paiements',
49
+ query: {
50
+ 'payeAlias': payeAlias,
51
+ 'payeCompte': payeCompte,
52
+ 'payeurAlias': payeurAlias,
53
+ 'payeurCompte': payeurCompte,
54
+ 'dateEnvoi': dateEnvoi,
55
+ 'dateIrrevocabilite': dateIrrevocabilite,
56
+ 'statut': statut,
57
+ 'categorie': categorie,
58
+ 'montantAchat': montantAchat,
59
+ 'montantRetrait': montantRetrait,
60
+ 'motif': motif,
61
+ 'refDocType': refDocType,
62
+ 'instructionId': instructionId,
63
+ 'txId': txId,
64
+ 'annulationStatut': annulationStatut,
65
+ 'annulationMotif': annulationMotif,
66
+ 'retourStatut': retourStatut,
67
+ 'page': page,
68
+ 'size': size,
69
+ 'sort': sort,
70
+ 'fields': fields,
71
+ },
72
+ errors: {
73
+ 401: `Autorisations manquantes`,
74
+ 429: `Erreur inattendue`,
75
+ 503: `Erreur inattendue du serveur`,
76
+ },
77
+ });
78
+ }
79
+ /**
80
+ * Détails d'un paiement
81
+ * Cet point de terminaison permet de consulter les details d'un paiement.
82
+ *
83
+ * @returns Paiement Opération effectuée avec succès
84
+ * @throws ApiError
85
+ */
86
+ static paiementRecuperer({ txId, }) {
87
+ return __request(OpenAPI, {
88
+ method: 'GET',
89
+ url: '/paiements/{txId}',
90
+ path: {
91
+ 'txId': txId,
92
+ },
93
+ errors: {
94
+ 401: `Autorisations manquantes`,
95
+ 404: `La ressource n'existe pas dans le système`,
96
+ 429: `Erreur inattendue`,
97
+ 503: `Erreur inattendue du serveur`,
98
+ },
99
+ });
100
+ }
101
+ /**
102
+ * Confirmer le paiement
103
+ * Ce point de terminaison permet d'envoyer la confirmation de l'envoi d'un paiement immédiat
104
+ * après vérification du nom et du pays du bénéficiaire.
105
+ *
106
+ * **Idempotence** : Cet endpoint est idempotent.
107
+ * - Premier appel avec `decision: true` → Lance le paiement, retourne `200 OK {statut: "ENVOYE"}`
108
+ * - Appels suivants avec `decision: true` → Retourne `200 OK` avec l'état actuel (ENVOYE, IRREVOCABLE, ou REJETE) - idempotent
109
+ * - Premier appel avec `decision: false` → Annule, retourne `200 OK {statut: "ANNULE"}`
110
+ * - Appels suivants avec `decision: false` → Retourne `200 OK {statut: "ANNULE"}` (idempotent)
111
+ * - `decision: true` après `decision: false` → Retourne `403 Forbidden` (déjà annulé)
112
+ * - `decision: false` après `decision: true` → Retourne `403 Forbidden` (déjà confirmé)
113
+ *
114
+ * **Timeout** : La confirmation doit être envoyée dans les **24 heures** suivant la création de la demande. Passé ce délai, la demande expire automatiquement et ne peut plus être confirmée.
115
+ *
116
+ * **Changement de décision** : Une fois une décision prise, elle est définitive. Impossible de confirmer après avoir annulé, et vice-versa.
117
+ *
118
+ * @returns PaiementImmediatConfirmationReponse Paiement en cours d'envoi
119
+ * @throws ApiError
120
+ */
121
+ static paiementConfirmer({ txId, requestBody, }) {
122
+ return __request(OpenAPI, {
123
+ method: 'PUT',
124
+ url: '/paiements/{txId}/confirmations',
125
+ path: {
126
+ 'txId': txId,
127
+ },
128
+ body: requestBody,
129
+ mediaType: 'application/json',
130
+ errors: {
131
+ 401: `Autorisations manquantes`,
132
+ 403: `Opération interdite`,
133
+ 404: `La ressource n'existe pas dans le système`,
134
+ 429: `Erreur inattendue`,
135
+ 503: `Erreur inattendue du serveur`,
136
+ },
137
+ });
138
+ }
139
+ /**
140
+ * Vérifier un paiement
141
+ * Ce point de terminaison permet de vérifier la réception d’un paiement à partir de l’`end2endId`.
142
+ *
143
+ * Dans certains cas, le **client business** peut ne pas avoir reçu la notification de paiement.
144
+ * Le **client payeur** peut alors lui communiquer l’`end2endId` afin qu’il puisse vérifier manuellement le statut du paiement.
145
+ *
146
+ * Le **participant** doit, dans ce cas, vérifier dans sa base de données et s'il ne trouve pas le paiement, il doit interroger l’endpoint de PI-SPI permettant de **récupérer le statut d’un paiement**, puis **retourner ce statut** dans sa réponse.
147
+ *
148
+ * Le statut retourné doit être soit :
149
+ * - `IRREVOCABLE` (paiement irrévocable), ou
150
+ * - `REJETE` (paiement rejeté).
151
+ *
152
+ * Un transfert **ne peut pas** être signalé comme « en cours de traitement » dans ce contexte.
153
+ *
154
+ * ⚠️ **Remarques :**
155
+ * - La vérification ne doit concerner que les paiements réalisés depuis **moins de 3 mois (90 jours)** afin de garantir la disponibilité de la réponse.
156
+ * - La garantie de réponse n’est assurée qu’à partir de **20 secondes après l’envoi du transfert**.
157
+ *
158
+ * @returns Paiement Opération effectuée avec succès
159
+ * @throws ApiError
160
+ */
161
+ static paiementVerifier({ end2EndId, }) {
162
+ return __request(OpenAPI, {
163
+ method: 'GET',
164
+ url: '/paiements/{end2endId}/statuts',
165
+ path: {
166
+ 'end2endId': end2EndId,
167
+ },
168
+ errors: {
169
+ 401: `Autorisations manquantes`,
170
+ 404: `Ce paiement n'a pas été trouvé`,
171
+ 429: `Erreur inattendue`,
172
+ 503: `Erreur inattendue du serveur`,
173
+ },
174
+ });
175
+ }
176
+ }
@@ -0,0 +1,28 @@
1
+ import type { Paiement } from '../models/Paiement';
2
+ import type { CancelablePromise } from '../core/CancelablePromise';
3
+ export declare class RetoursdeFondsService {
4
+ /**
5
+ * Retourner les fonds
6
+ * Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
7
+ *
8
+ * **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
9
+ * Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
10
+ * Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
11
+ * Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
12
+ *
13
+ * **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
14
+ * - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
15
+ * - Une notification `RETOUR_REJETE` en cas de rejet de la demande
16
+ *
17
+ * **Vérification du statut** : Pour obtenir le statut d'un retour de fonds envoyé, vous pouvez invoquer l'endpoint `GET /paiements/{end2endId}` et le champ `retourStatut` de la réponse indiquera l'état du retour de fonds.
18
+ *
19
+ * @returns Paiement Retour de fonds enregistré avec succès
20
+ * @throws ApiError
21
+ */
22
+ static retourFondsEnvoyer({ end2EndId, }: {
23
+ /**
24
+ * L'identifiant unique de bout en bout de la transaction
25
+ */
26
+ end2EndId: string;
27
+ }): CancelablePromise<Paiement>;
28
+ }
@@ -0,0 +1,37 @@
1
+ import { OpenAPI } from '../core/OpenAPI';
2
+ import { request as __request } from '../core/request';
3
+ export class RetoursdeFondsService {
4
+ /**
5
+ * Retourner les fonds
6
+ * Ce point de terminaison permet au business de retourner les fonds d'un paiement reçu.
7
+ *
8
+ * **Idempotence** : Cet endpoint est idempotent. Plusieurs appels avec le même `end2endId` produiront le même résultat.
9
+ * Si le retour de fonds a déjà été envoyé et irrévocable, le champ `retourStatut` de la réponse sera `IRREVOCABLE`.
10
+ * Si le retour de fonds a été envoyé et rejeté, le retour de fonds sera envoyé à nouveau.
11
+ * Si le retour de fonds est en cours d'envoi, le champ `retourStatut` de la réponse sera `INITIE`.
12
+ *
13
+ * **Notifications webhook** : Après envoi du retour de fonds, si le business a souscrit au service de webhook, il recevra :
14
+ * - Une notification `RETOUR_ENVOYE` en cas de succès du retour de fonds
15
+ * - Une notification `RETOUR_REJETE` en cas de rejet de la demande
16
+ *
17
+ * **Vérification du statut** : Pour obtenir le statut d'un retour de fonds envoyé, vous pouvez invoquer l'endpoint `GET /paiements/{end2endId}` et le champ `retourStatut` de la réponse indiquera l'état du retour de fonds.
18
+ *
19
+ * @returns Paiement Retour de fonds enregistré avec succès
20
+ * @throws ApiError
21
+ */
22
+ static retourFondsEnvoyer({ end2EndId, }) {
23
+ return __request(OpenAPI, {
24
+ method: 'PUT',
25
+ url: '/paiements/{end2endId}/retours',
26
+ path: {
27
+ 'end2endId': end2EndId,
28
+ },
29
+ errors: {
30
+ 401: `Autorisations manquantes`,
31
+ 403: `Interdiction d'effectuer le retour de fonds`,
32
+ 429: `Erreur inattendue`,
33
+ 503: `Erreur inattendue du serveur`,
34
+ },
35
+ });
36
+ }
37
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Main entry point for PI-SPI SDK
3
+ *
4
+ * @module pi-spi-sdk
5
+ */
6
+ export { PiSpiSDK } from './sdk';
7
+ export type { PiSpiConfig } from './config';
8
+ export { PiSpiError, PiSpiValidationError, PiSpiAuthError, PiSpiNotFoundError, PiSpiRateLimitError, } from './errors';
9
+ export { QueryBuilder, type QueryParams, type FilterOperator } from './query-builder';
10
+ export { handleApiError } from './error-handler';
11
+ export { AliasType, ALIAS_TYPES, isValidAliasType, getAvailableAliasTypes, type AliasType as AliasTypeType, } from './types/alias';
12
+ export { formatAmount, xofToCentimes, centimesToXof, isValidAccountNumber, isValidShidAlias, isValidPhoneNumber, getCountryFromAccount, sleep, retryWithBackoff, } from './utils';
13
+ export { PI_SPI_ENDPOINTS, PAYMENT_STATUS, ACCOUNT_STATUS, ACCOUNT_TYPE, CLIENT_TYPE, UEMOA_COUNTRIES, CURRENCY, DEFAULT_LIMITS, WEBHOOK_EVENTS, } from './utils/constants';
14
+ export * from './generated';
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Main entry point for PI-SPI SDK
3
+ *
4
+ * @module pi-spi-sdk
5
+ */
6
+ // Export main SDK class
7
+ export { PiSpiSDK } from './sdk';
8
+ // Export error classes
9
+ export { PiSpiError, PiSpiValidationError, PiSpiAuthError, PiSpiNotFoundError, PiSpiRateLimitError, } from './errors';
10
+ // Export query builder
11
+ export { QueryBuilder } from './query-builder';
12
+ // Export error handler for advanced use cases
13
+ export { handleApiError } from './error-handler';
14
+ // Export alias types and utilities
15
+ export { AliasType, ALIAS_TYPES, isValidAliasType, getAvailableAliasTypes, } from './types/alias';
16
+ // Export utility functions
17
+ export { formatAmount, xofToCentimes, centimesToXof, isValidAccountNumber, isValidShidAlias, isValidPhoneNumber, getCountryFromAccount, sleep, retryWithBackoff, } from './utils';
18
+ // Export constants
19
+ export { PI_SPI_ENDPOINTS, PAYMENT_STATUS, ACCOUNT_STATUS, ACCOUNT_TYPE, CLIENT_TYPE, UEMOA_COUNTRIES, CURRENCY, DEFAULT_LIMITS, WEBHOOK_EVENTS, } from './utils/constants';
20
+ // Note: ALIAS_TYPES is exported from './types/alias' above
21
+ // Re-export generated types and services (available after running generate)
22
+ // These will be available once the OpenAPI codegen is run
23
+ export * from './generated';
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Query builder utility for constructing filter, pagination, and sorting parameters
3
+ */
4
+ export type FilterOperator = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains' | 'notContains' | 'beginsWith' | 'endsWith' | 'exists';
5
+ export interface FilterOptions {
6
+ operator?: FilterOperator;
7
+ value: string | number | boolean | string[];
8
+ }
9
+ export interface QueryParams {
10
+ [key: string]: string | number | undefined;
11
+ }
12
+ export declare class QueryBuilder {
13
+ private params;
14
+ private filters;
15
+ private sortField?;
16
+ private sortOrder;
17
+ /**
18
+ * Add a filter condition
19
+ * @param field - Field name to filter on
20
+ * @param operator - Filter operator (default: 'eq')
21
+ * @param value - Filter value
22
+ */
23
+ filter(field: string, operatorOrValue: FilterOperator | string | number | boolean, value?: string | number | boolean | string[]): this;
24
+ /**
25
+ * Add an equality filter (shorthand)
26
+ */
27
+ eq(field: string, value: string | number | boolean): this;
28
+ /**
29
+ * Add a "not equal" filter (shorthand)
30
+ */
31
+ ne(field: string, value: string | number | boolean): this;
32
+ /**
33
+ * Add a "greater than" filter (shorthand)
34
+ */
35
+ gt(field: string, value: string | number): this;
36
+ /**
37
+ * Add a "greater than or equal" filter (shorthand)
38
+ */
39
+ gte(field: string, value: string | number): this;
40
+ /**
41
+ * Add a "less than" filter (shorthand)
42
+ */
43
+ lt(field: string, value: string | number): this;
44
+ /**
45
+ * Add a "less than or equal" filter (shorthand)
46
+ */
47
+ lte(field: string, value: string | number): this;
48
+ /**
49
+ * Add an "in" filter (shorthand)
50
+ */
51
+ in(field: string, values: string[]): this;
52
+ /**
53
+ * Add a "contains" filter (shorthand)
54
+ */
55
+ contains(field: string, value: string): this;
56
+ /**
57
+ * Set sort field and order
58
+ * @param field - Field to sort by
59
+ * @param order - Sort order ('asc' or 'desc', default: 'asc')
60
+ */
61
+ sort(field: string, order?: 'asc' | 'desc'): this;
62
+ /**
63
+ * Sort in descending order (shorthand)
64
+ */
65
+ sortDesc(field: string): this;
66
+ /**
67
+ * Set page number
68
+ */
69
+ page(page: number | string): this;
70
+ /**
71
+ * Set page size
72
+ */
73
+ size(size: number): this;
74
+ /**
75
+ * Add a custom parameter
76
+ */
77
+ param(key: string, value: string | number): this;
78
+ /**
79
+ * Build the query parameters object
80
+ */
81
+ build(): QueryParams;
82
+ /**
83
+ * Build query string
84
+ */
85
+ buildQueryString(): string;
86
+ /**
87
+ * Reset the builder
88
+ */
89
+ reset(): this;
90
+ private isOperator;
91
+ }