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,187 @@
1
+ /**
2
+ * Query builder utility for constructing filter, pagination, and sorting parameters
3
+ */
4
+ export class QueryBuilder {
5
+ constructor() {
6
+ this.params = {};
7
+ this.filters = new Map();
8
+ this.sortOrder = 'asc';
9
+ }
10
+ /**
11
+ * Add a filter condition
12
+ * @param field - Field name to filter on
13
+ * @param operator - Filter operator (default: 'eq')
14
+ * @param value - Filter value
15
+ */
16
+ filter(field, operatorOrValue, value) {
17
+ let operator;
18
+ let filterValue;
19
+ if (value === undefined) {
20
+ // If only two arguments, treat first as operator/value
21
+ if (typeof operatorOrValue === 'string' && this.isOperator(operatorOrValue)) {
22
+ throw new Error('Filter operator requires a value');
23
+ }
24
+ operator = 'eq';
25
+ filterValue = operatorOrValue;
26
+ }
27
+ else {
28
+ operator = operatorOrValue;
29
+ filterValue = value;
30
+ }
31
+ this.filters.set(field, { operator, value: filterValue });
32
+ return this;
33
+ }
34
+ /**
35
+ * Add an equality filter (shorthand)
36
+ */
37
+ eq(field, value) {
38
+ return this.filter(field, 'eq', value);
39
+ }
40
+ /**
41
+ * Add a "not equal" filter (shorthand)
42
+ */
43
+ ne(field, value) {
44
+ return this.filter(field, 'ne', value);
45
+ }
46
+ /**
47
+ * Add a "greater than" filter (shorthand)
48
+ */
49
+ gt(field, value) {
50
+ return this.filter(field, 'gt', value);
51
+ }
52
+ /**
53
+ * Add a "greater than or equal" filter (shorthand)
54
+ */
55
+ gte(field, value) {
56
+ return this.filter(field, 'gte', value);
57
+ }
58
+ /**
59
+ * Add a "less than" filter (shorthand)
60
+ */
61
+ lt(field, value) {
62
+ return this.filter(field, 'lt', value);
63
+ }
64
+ /**
65
+ * Add a "less than or equal" filter (shorthand)
66
+ */
67
+ lte(field, value) {
68
+ return this.filter(field, 'lte', value);
69
+ }
70
+ /**
71
+ * Add an "in" filter (shorthand)
72
+ */
73
+ in(field, values) {
74
+ return this.filter(field, 'in', values);
75
+ }
76
+ /**
77
+ * Add a "contains" filter (shorthand)
78
+ */
79
+ contains(field, value) {
80
+ return this.filter(field, 'contains', value);
81
+ }
82
+ /**
83
+ * Set sort field and order
84
+ * @param field - Field to sort by
85
+ * @param order - Sort order ('asc' or 'desc', default: 'asc')
86
+ */
87
+ sort(field, order = 'asc') {
88
+ this.sortField = field;
89
+ this.sortOrder = order;
90
+ return this;
91
+ }
92
+ /**
93
+ * Sort in descending order (shorthand)
94
+ */
95
+ sortDesc(field) {
96
+ return this.sort(field, 'desc');
97
+ }
98
+ /**
99
+ * Set page number
100
+ */
101
+ page(page) {
102
+ this.params.page = typeof page === 'string' ? page : page.toString();
103
+ return this;
104
+ }
105
+ /**
106
+ * Set page size
107
+ */
108
+ size(size) {
109
+ if (size < 1) {
110
+ throw new Error('Page size must be at least 1');
111
+ }
112
+ if (size > 100) {
113
+ throw new Error('Page size cannot exceed 100');
114
+ }
115
+ this.params.size = size;
116
+ return this;
117
+ }
118
+ /**
119
+ * Add a custom parameter
120
+ */
121
+ param(key, value) {
122
+ this.params[key] = value;
123
+ return this;
124
+ }
125
+ /**
126
+ * Build the query parameters object
127
+ */
128
+ build() {
129
+ const result = { ...this.params };
130
+ // Add filters
131
+ for (const [field, { operator, value }] of this.filters.entries()) {
132
+ if (operator === 'eq') {
133
+ // Simple equality filters don't need operator notation
134
+ result[field] = String(value);
135
+ }
136
+ else if (operator === 'exists') {
137
+ // Exists operator uses special syntax
138
+ result[`${field}[exists]`] = String(value);
139
+ }
140
+ else {
141
+ // Other operators use bracket notation
142
+ result[`${field}[${operator}]`] = Array.isArray(value) ? value.join(',') : String(value);
143
+ }
144
+ }
145
+ // Add sort
146
+ if (this.sortField) {
147
+ result.sort = this.sortOrder === 'desc' ? `-${this.sortField}` : this.sortField;
148
+ }
149
+ return result;
150
+ }
151
+ /**
152
+ * Build query string
153
+ */
154
+ buildQueryString() {
155
+ const params = this.build();
156
+ const pairs = Object.entries(params)
157
+ .filter(([_, value]) => value !== undefined)
158
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);
159
+ return pairs.length > 0 ? `?${pairs.join('&')}` : '';
160
+ }
161
+ /**
162
+ * Reset the builder
163
+ */
164
+ reset() {
165
+ this.params = {};
166
+ this.filters.clear();
167
+ this.sortField = undefined;
168
+ this.sortOrder = 'asc';
169
+ return this;
170
+ }
171
+ isOperator(value) {
172
+ return [
173
+ 'eq',
174
+ 'ne',
175
+ 'gt',
176
+ 'gte',
177
+ 'lt',
178
+ 'lte',
179
+ 'in',
180
+ 'contains',
181
+ 'notContains',
182
+ 'beginsWith',
183
+ 'endsWith',
184
+ 'exists',
185
+ ].includes(value);
186
+ }
187
+ }
package/dist/sdk.d.ts ADDED
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Main PI-SPI SDK class
3
+ *
4
+ * This is the entry point for interacting with the PI-SPI API.
5
+ * Provides organized access to all API services.
6
+ */
7
+ import { handleApiError } from './error-handler';
8
+ import type { PiSpiConfig } from './config';
9
+ import { ComptesService } from './services/comptes';
10
+ import { AliasService } from './services/alias';
11
+ import { WebhooksService } from './services/webhooks';
12
+ import { DemandesPaiementService } from './services/demandes-paiement';
13
+ import { DemandesPaiementEnMasseService } from './services/demandes-paiement-en-masse';
14
+ import { PaiementsService } from './services/paiements';
15
+ import { PaiementsEnMasseService } from './services/paiements-en-masse';
16
+ import { RetoursFondsService } from './services/retours-fonds';
17
+ import { DemandesAnnulationService } from './services/demandes-annulation';
18
+ export declare class PiSpiSDK {
19
+ /**
20
+ * Accounts service
21
+ * Handles account-related operations: balance, operations, transfers
22
+ */
23
+ readonly comptes: ComptesService;
24
+ /**
25
+ * Aliases service
26
+ * Handles account alias management
27
+ */
28
+ readonly alias: AliasService;
29
+ /**
30
+ * Webhooks service
31
+ * Handles webhook configuration and management
32
+ */
33
+ readonly webhooks: WebhooksService;
34
+ /**
35
+ * Payment requests service
36
+ * Handles payment request creation and management
37
+ */
38
+ readonly demandesPaiement: DemandesPaiementService;
39
+ /**
40
+ * Bulk payment requests service
41
+ * Handles bulk payment request operations
42
+ */
43
+ readonly demandesPaiementEnMasse: DemandesPaiementEnMasseService;
44
+ /**
45
+ * Payments service
46
+ * Handles immediate payment operations
47
+ */
48
+ readonly paiements: PaiementsService;
49
+ /**
50
+ * Bulk payments service
51
+ * Handles bulk payment operations
52
+ */
53
+ readonly paiementsEnMasse: PaiementsEnMasseService;
54
+ /**
55
+ * Fund returns service
56
+ * Handles fund return operations
57
+ */
58
+ readonly retoursFonds: RetoursFondsService;
59
+ /**
60
+ * Cancellation requests service
61
+ * Handles payment cancellation requests
62
+ */
63
+ readonly demandesAnnulation: DemandesAnnulationService;
64
+ /**
65
+ * Initialize the PI-SPI SDK
66
+ *
67
+ * @param config - SDK configuration
68
+ *
69
+ * @example
70
+ * ```typescript
71
+ * const sdk = new PiSpiSDK({
72
+ * baseUrl: 'https://sandbox.api.pi-bceao.com/piz/v1',
73
+ * accessToken: 'your-oauth2-token',
74
+ * });
75
+ * ```
76
+ */
77
+ constructor(config: PiSpiConfig);
78
+ /**
79
+ * Update the access token
80
+ * Useful when tokens are refreshed
81
+ */
82
+ setAccessToken(token: string): void;
83
+ /**
84
+ * Get the current base URL
85
+ */
86
+ getBaseUrl(): string;
87
+ }
88
+ export { handleApiError };
package/dist/sdk.js ADDED
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Main PI-SPI SDK class
3
+ *
4
+ * This is the entry point for interacting with the PI-SPI API.
5
+ * Provides organized access to all API services.
6
+ */
7
+ import { handleApiError } from './error-handler';
8
+ import { ComptesService } from './services/comptes';
9
+ import { AliasService } from './services/alias';
10
+ import { WebhooksService } from './services/webhooks';
11
+ import { DemandesPaiementService } from './services/demandes-paiement';
12
+ import { DemandesPaiementEnMasseService } from './services/demandes-paiement-en-masse';
13
+ import { PaiementsService } from './services/paiements';
14
+ import { PaiementsEnMasseService } from './services/paiements-en-masse';
15
+ import { RetoursFondsService } from './services/retours-fonds';
16
+ import { DemandesAnnulationService } from './services/demandes-annulation';
17
+ // OpenAPI will be imported from generated code after running pnpm run generate
18
+ // For now, we'll use a dynamic import approach
19
+ let OpenAPI;
20
+ // Try to import generated OpenAPI config
21
+ async function loadOpenAPI() {
22
+ try {
23
+ const generated = await import('./generated');
24
+ return generated.OpenAPI;
25
+ }
26
+ catch {
27
+ // Return placeholder if not generated yet
28
+ return {
29
+ BASE: 'https://sandbox.api.pi-bceao.com/piz/v1',
30
+ TOKEN: undefined,
31
+ HEADERS: undefined,
32
+ };
33
+ }
34
+ }
35
+ export class PiSpiSDK {
36
+ /**
37
+ * Initialize the PI-SPI SDK
38
+ *
39
+ * @param config - SDK configuration
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const sdk = new PiSpiSDK({
44
+ * baseUrl: 'https://sandbox.api.pi-bceao.com/piz/v1',
45
+ * accessToken: 'your-oauth2-token',
46
+ * });
47
+ * ```
48
+ */
49
+ constructor(config) {
50
+ // Initialize OpenAPI configuration synchronously
51
+ // Note: This will work better after code generation when OpenAPI is properly exported
52
+ try {
53
+ // In a real scenario, we'd import this properly
54
+ // For now, we'll set it up directly
55
+ OpenAPI = {
56
+ BASE: config.baseUrl || 'https://sandbox.api.pi-bceao.com/piz/v1',
57
+ TOKEN: config.accessToken,
58
+ HEADERS: {
59
+ ...config.headers,
60
+ Authorization: `Bearer ${config.accessToken}`,
61
+ },
62
+ };
63
+ }
64
+ catch {
65
+ // Fallback configuration
66
+ OpenAPI = {
67
+ BASE: config.baseUrl || 'https://sandbox.api.pi-bceao.com/piz/v1',
68
+ TOKEN: config.accessToken,
69
+ HEADERS: {
70
+ ...config.headers,
71
+ Authorization: `Bearer ${config.accessToken}`,
72
+ },
73
+ };
74
+ }
75
+ // Initialize services
76
+ this.comptes = new ComptesService();
77
+ this.alias = new AliasService();
78
+ this.webhooks = new WebhooksService();
79
+ this.demandesPaiement = new DemandesPaiementService();
80
+ this.demandesPaiementEnMasse = new DemandesPaiementEnMasseService();
81
+ this.paiements = new PaiementsService();
82
+ this.paiementsEnMasse = new PaiementsEnMasseService();
83
+ this.retoursFonds = new RetoursFondsService();
84
+ this.demandesAnnulation = new DemandesAnnulationService();
85
+ }
86
+ /**
87
+ * Update the access token
88
+ * Useful when tokens are refreshed
89
+ */
90
+ setAccessToken(token) {
91
+ if (OpenAPI) {
92
+ OpenAPI.TOKEN = token;
93
+ OpenAPI.HEADERS = {
94
+ ...OpenAPI.HEADERS,
95
+ Authorization: `Bearer ${token}`,
96
+ };
97
+ }
98
+ }
99
+ /**
100
+ * Get the current base URL
101
+ */
102
+ getBaseUrl() {
103
+ return OpenAPI?.BASE || 'https://sandbox.api.pi-bceao.com/piz/v1';
104
+ }
105
+ }
106
+ // Export error handler for advanced use cases
107
+ export { handleApiError };
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Aliases service wrapper
3
+ *
4
+ * Provides methods for managing account aliases.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Create a SHID alias (available for all client types)
9
+ * const alias = await sdk.alias.create({
10
+ * compte: 'CIC2344256727788288822',
11
+ * type: AliasType.SHID
12
+ * });
13
+ * // Returns: { cle: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', type: 'SHID', ... }
14
+ *
15
+ * // Create an MCOD alias (business clients only)
16
+ * const merchantAlias = await sdk.alias.create({
17
+ * compte: 'SNC2344256727788288822',
18
+ * type: AliasType.MCOD
19
+ * });
20
+ * // Returns: { cle: 'SNF00_2E4TY', type: 'MCOD', ... }
21
+ * ```
22
+ */
23
+ import { BaseService } from './base';
24
+ import type { QueryParams } from '../query-builder';
25
+ import type { AliasType } from '../types/alias';
26
+ export declare class AliasService extends BaseService {
27
+ /**
28
+ * Create an account alias
29
+ *
30
+ * **Alias Types:**
31
+ * - `SHID`: System-generated unique payment address (UUID format, 36 chars). Available for all client types (P, C, B, G)
32
+ * - `MCOD`: Merchant code for USSD payments. Available for business clients only (C, B, G)
33
+ * - `MBNO`: Mobile phone number. Available for individuals only (P)
34
+ *
35
+ * **Limits:**
36
+ * - Default: 20 aliases per account
37
+ * - Limit can be increased based on client needs
38
+ *
39
+ * @param alias - Alias creation data
40
+ * @param alias.compte - Account number (e.g., 'CIC2344256727788288822')
41
+ * @param alias.type - Alias type: 'SHID', 'MCOD', or 'MBNO'
42
+ * @returns Created alias with generated `cle` (key) value
43
+ * @throws {PiSpiError} If account not found or limit exceeded
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * // For business clients (C, B, G)
48
+ * await sdk.alias.create({
49
+ * compte: 'SNC2344256727788288822',
50
+ * type: AliasType.SHID
51
+ * });
52
+ * ```
53
+ */
54
+ create(alias: {
55
+ compte: string;
56
+ type: AliasType;
57
+ }): Promise<never>;
58
+ /**
59
+ * List aliases for an account
60
+ *
61
+ * @param compte - Account number
62
+ * @param params - Query parameters for pagination
63
+ * @returns Paginated list of aliases
64
+ */
65
+ list(compte: string, params?: QueryParams): Promise<never>;
66
+ /**
67
+ * Delete an alias
68
+ *
69
+ * @param alias - Alias identifier
70
+ */
71
+ delete(alias: string): Promise<never>;
72
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Aliases service wrapper
3
+ *
4
+ * Provides methods for managing account aliases.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Create a SHID alias (available for all client types)
9
+ * const alias = await sdk.alias.create({
10
+ * compte: 'CIC2344256727788288822',
11
+ * type: AliasType.SHID
12
+ * });
13
+ * // Returns: { cle: '8b1b2499-3e50-435b-b757-ac7a83d8aa7f', type: 'SHID', ... }
14
+ *
15
+ * // Create an MCOD alias (business clients only)
16
+ * const merchantAlias = await sdk.alias.create({
17
+ * compte: 'SNC2344256727788288822',
18
+ * type: AliasType.MCOD
19
+ * });
20
+ * // Returns: { cle: 'SNF00_2E4TY', type: 'MCOD', ... }
21
+ * ```
22
+ */
23
+ import { BaseService } from './base';
24
+ export class AliasService extends BaseService {
25
+ /**
26
+ * Create an account alias
27
+ *
28
+ * **Alias Types:**
29
+ * - `SHID`: System-generated unique payment address (UUID format, 36 chars). Available for all client types (P, C, B, G)
30
+ * - `MCOD`: Merchant code for USSD payments. Available for business clients only (C, B, G)
31
+ * - `MBNO`: Mobile phone number. Available for individuals only (P)
32
+ *
33
+ * **Limits:**
34
+ * - Default: 20 aliases per account
35
+ * - Limit can be increased based on client needs
36
+ *
37
+ * @param alias - Alias creation data
38
+ * @param alias.compte - Account number (e.g., 'CIC2344256727788288822')
39
+ * @param alias.type - Alias type: 'SHID', 'MCOD', or 'MBNO'
40
+ * @returns Created alias with generated `cle` (key) value
41
+ * @throws {PiSpiError} If account not found or limit exceeded
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * // For business clients (C, B, G)
46
+ * await sdk.alias.create({
47
+ * compte: 'SNC2344256727788288822',
48
+ * type: AliasType.SHID
49
+ * });
50
+ * ```
51
+ */
52
+ async create(alias) {
53
+ return this.execute(async () => {
54
+ // This will call the generated service after codegen
55
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
56
+ });
57
+ }
58
+ /**
59
+ * List aliases for an account
60
+ *
61
+ * @param compte - Account number
62
+ * @param params - Query parameters for pagination
63
+ * @returns Paginated list of aliases
64
+ */
65
+ async list(compte, params) {
66
+ return this.execute(async () => {
67
+ // This will call the generated service after codegen
68
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
69
+ });
70
+ }
71
+ /**
72
+ * Delete an alias
73
+ *
74
+ * @param alias - Alias identifier
75
+ */
76
+ async delete(alias) {
77
+ return this.execute(async () => {
78
+ // This will call the generated service after codegen
79
+ throw new Error('Service not yet generated. Run "pnpm run generate" first.');
80
+ });
81
+ }
82
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Base service class with common error handling
3
+ */
4
+ export declare abstract class BaseService {
5
+ /**
6
+ * Wrap an async operation with error handling
7
+ */
8
+ protected execute<T>(operation: () => Promise<T>): Promise<T>;
9
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Base service class with common error handling
3
+ */
4
+ import { handleApiError } from '../error-handler';
5
+ export class BaseService {
6
+ /**
7
+ * Wrap an async operation with error handling
8
+ */
9
+ async execute(operation) {
10
+ try {
11
+ return await operation();
12
+ }
13
+ catch (error) {
14
+ handleApiError(error);
15
+ }
16
+ }
17
+ }