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.
- package/CHANGELOG.md +33 -0
- package/LICENSE +22 -0
- package/README.md +300 -0
- package/dist/config.d.ts +35 -0
- package/dist/config.js +4 -0
- package/dist/error-handler.d.ts +7 -0
- package/dist/error-handler.js +52 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.js +40 -0
- package/dist/examples.d.ts +8 -0
- package/dist/examples.js +91 -0
- package/dist/generated/core/ApiError.d.ts +10 -0
- package/dist/generated/core/ApiError.js +11 -0
- package/dist/generated/core/ApiRequestOptions.d.ts +13 -0
- package/dist/generated/core/ApiRequestOptions.js +1 -0
- package/dist/generated/core/ApiResult.d.ts +7 -0
- package/dist/generated/core/ApiResult.js +1 -0
- package/dist/generated/core/CancelablePromise.d.ts +20 -0
- package/dist/generated/core/CancelablePromise.js +111 -0
- package/dist/generated/core/OpenAPI.d.ts +16 -0
- package/dist/generated/core/OpenAPI.js +11 -0
- package/dist/generated/core/request.d.ts +34 -0
- package/dist/generated/core/request.js +269 -0
- package/dist/generated/index.d.ts +78 -0
- package/dist/generated/index.js +43 -0
- package/dist/generated/models/AliasCreationReponse.d.ts +22 -0
- package/dist/generated/models/AliasCreationReponse.js +1 -0
- package/dist/generated/models/AliasCreationRequest.d.ts +11 -0
- package/dist/generated/models/AliasCreationRequest.js +1 -0
- package/dist/generated/models/AliasReponseListe.d.ts +26 -0
- package/dist/generated/models/AliasReponseListe.js +1 -0
- package/dist/generated/models/AnnulationStatut.d.ts +13 -0
- package/dist/generated/models/AnnulationStatut.js +18 -0
- package/dist/generated/models/Champs.d.ts +1 -0
- package/dist/generated/models/Champs.js +1 -0
- package/dist/generated/models/CompteOperation.d.ts +72 -0
- package/dist/generated/models/CompteOperation.js +24 -0
- package/dist/generated/models/CompteOperationListe.d.ts +18 -0
- package/dist/generated/models/CompteOperationListe.js +1 -0
- package/dist/generated/models/CompteSolde.d.ts +129 -0
- package/dist/generated/models/CompteSolde.js +71 -0
- package/dist/generated/models/CompteTransfertIntraReponse.d.ts +33 -0
- package/dist/generated/models/CompteTransfertIntraReponse.js +12 -0
- package/dist/generated/models/CompteTransfertIntraRequest.d.ts +9 -0
- package/dist/generated/models/CompteTransfertIntraRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.d.ts +14 -0
- package/dist/generated/models/DemandePaiementConfirmationAnnulationRaison.js +19 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.d.ts +41 -0
- package/dist/generated/models/DemandePaiementConfirmationReponse.js +13 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.d.ts +151 -0
- package/dist/generated/models/DemandePaiementConsultationReponse.js +27 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/DemandePaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.d.ts +74 -0
- package/dist/generated/models/DemandePaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.d.ts +98 -0
- package/dist/generated/models/DemandePaiementEnMasseStatutReponse.js +20 -0
- package/dist/generated/models/DemandePaiementListe.d.ts +26 -0
- package/dist/generated/models/DemandePaiementListe.js +1 -0
- package/dist/generated/models/DemandePaiementListeItem.d.ts +163 -0
- package/dist/generated/models/DemandePaiementListeItem.js +27 -0
- package/dist/generated/models/DemandePaiementReponse.d.ts +129 -0
- package/dist/generated/models/DemandePaiementReponse.js +1 -0
- package/dist/generated/models/DemandePaiementReponseRequest.d.ts +21 -0
- package/dist/generated/models/DemandePaiementReponseRequest.js +11 -0
- package/dist/generated/models/DemandePaiementRequest.d.ts +98 -0
- package/dist/generated/models/DemandePaiementRequest.js +7 -0
- package/dist/generated/models/DemandePaiementRequestBase.d.ts +42 -0
- package/dist/generated/models/DemandePaiementRequestBase.js +1 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.d.ts +12 -0
- package/dist/generated/models/DemandePaiementRequestCategorie.js +17 -0
- package/dist/generated/models/DemandePaiementStatut.d.ts +13 -0
- package/dist/generated/models/DemandePaiementStatut.js +18 -0
- package/dist/generated/models/DemandePaiementStatutRaison.d.ts +46 -0
- package/dist/generated/models/DemandePaiementStatutRaison.js +51 -0
- package/dist/generated/models/ListeMeta.d.ts +14 -0
- package/dist/generated/models/ListeMeta.js +1 -0
- package/dist/generated/models/Paiement.d.ts +156 -0
- package/dist/generated/models/Paiement.js +28 -0
- package/dist/generated/models/PaiementAnnulationMotif.d.ts +17 -0
- package/dist/generated/models/PaiementAnnulationMotif.js +22 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.d.ts +11 -0
- package/dist/generated/models/PaiementAnnulationReponseRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementAnnulationReponseRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementAnnulationRequest.d.ts +4 -0
- package/dist/generated/models/PaiementAnnulationRequest.js +1 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.d.ts +21 -0
- package/dist/generated/models/PaiementAnnulationStatutRaison.js +26 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementEnMasseConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.d.ts +97 -0
- package/dist/generated/models/PaiementEnMasseReponseStatut.js +20 -0
- package/dist/generated/models/PaiementEnMasseRequest.d.ts +54 -0
- package/dist/generated/models/PaiementEnMasseRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.d.ts +31 -0
- package/dist/generated/models/PaiementImmediatConfirmationReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.d.ts +3 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequest.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestAccepter.js +1 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.d.ts +9 -0
- package/dist/generated/models/PaiementImmediatConfirmationRequestRejeter.js +1 -0
- package/dist/generated/models/PaiementImmediatReponse.d.ts +98 -0
- package/dist/generated/models/PaiementImmediatReponse.js +7 -0
- package/dist/generated/models/PaiementImmediatRequest.d.ts +13 -0
- package/dist/generated/models/PaiementImmediatRequest.js +1 -0
- package/dist/generated/models/PaiementListe.d.ts +6 -0
- package/dist/generated/models/PaiementListe.js +1 -0
- package/dist/generated/models/PaiementRequest.d.ts +33 -0
- package/dist/generated/models/PaiementRequest.js +1 -0
- package/dist/generated/models/PaiementStatut.d.ts +13 -0
- package/dist/generated/models/PaiementStatut.js +18 -0
- package/dist/generated/models/PaiementStatutRaison.d.ts +56 -0
- package/dist/generated/models/PaiementStatutRaison.js +61 -0
- package/dist/generated/models/Problem7807.d.ts +31 -0
- package/dist/generated/models/Problem7807.js +1 -0
- package/dist/generated/models/RefDocType.d.ts +38 -0
- package/dist/generated/models/RefDocType.js +43 -0
- package/dist/generated/models/RetourStatut.d.ts +13 -0
- package/dist/generated/models/RetourStatut.js +18 -0
- package/dist/generated/models/RetourStatutRaison.d.ts +25 -0
- package/dist/generated/models/RetourStatutRaison.js +30 -0
- package/dist/generated/models/WebhookCreationRequest.d.ts +14 -0
- package/dist/generated/models/WebhookCreationRequest.js +1 -0
- package/dist/generated/models/WebhookCreationResponse.d.ts +12 -0
- package/dist/generated/models/WebhookCreationResponse.js +1 -0
- package/dist/generated/models/WebhookData.d.ts +8 -0
- package/dist/generated/models/WebhookData.js +1 -0
- package/dist/generated/models/WebhookEvent.d.ts +191 -0
- package/dist/generated/models/WebhookEvent.js +42 -0
- package/dist/generated/models/WebhookEventsList.d.ts +13 -0
- package/dist/generated/models/WebhookEventsList.js +1 -0
- package/dist/generated/models/WebhookList.d.ts +13 -0
- package/dist/generated/models/WebhookList.js +1 -0
- package/dist/generated/models/WebhookModificationRequest.d.ts +4 -0
- package/dist/generated/models/WebhookModificationRequest.js +1 -0
- package/dist/generated/models/WebhooksEvents.d.ts +12 -0
- package/dist/generated/models/WebhooksEvents.js +17 -0
- package/dist/generated/services/AliasService.d.ts +63 -0
- package/dist/generated/services/AliasService.js +84 -0
- package/dist/generated/services/ComptesService.d.ts +64 -0
- package/dist/generated/services/ComptesService.js +86 -0
- package/dist/generated/services/DemandeAnnulationService.d.ts +84 -0
- package/dist/generated/services/DemandeAnnulationService.js +99 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.d.ts +161 -0
- package/dist/generated/services/DemandesDePaiementEnMasseService.js +189 -0
- package/dist/generated/services/DemandesDePaiementService.d.ts +123 -0
- package/dist/generated/services/DemandesDePaiementService.js +161 -0
- package/dist/generated/services/NotificationService.d.ts +80 -0
- package/dist/generated/services/NotificationService.js +132 -0
- package/dist/generated/services/PaiementEnMasseService.d.ts +159 -0
- package/dist/generated/services/PaiementEnMasseService.js +187 -0
- package/dist/generated/services/PaiementImmediatService.d.ts +135 -0
- package/dist/generated/services/PaiementImmediatService.js +176 -0
- package/dist/generated/services/RetoursdeFondsService.d.ts +28 -0
- package/dist/generated/services/RetoursdeFondsService.js +37 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +23 -0
- package/dist/query-builder.d.ts +91 -0
- package/dist/query-builder.js +187 -0
- package/dist/sdk.d.ts +88 -0
- package/dist/sdk.js +107 -0
- package/dist/services/alias.d.ts +72 -0
- package/dist/services/alias.js +82 -0
- package/dist/services/base.d.ts +9 -0
- package/dist/services/base.js +17 -0
- package/dist/services/comptes.d.ts +149 -0
- package/dist/services/comptes.js +158 -0
- package/dist/services/demandes-annulation.d.ts +97 -0
- package/dist/services/demandes-annulation.js +104 -0
- package/dist/services/demandes-paiement-en-masse.d.ts +139 -0
- package/dist/services/demandes-paiement-en-masse.js +139 -0
- package/dist/services/demandes-paiement.d.ts +144 -0
- package/dist/services/demandes-paiement.js +151 -0
- package/dist/services/paiements-en-masse.d.ts +152 -0
- package/dist/services/paiements-en-masse.js +153 -0
- package/dist/services/paiements.d.ts +135 -0
- package/dist/services/paiements.js +135 -0
- package/dist/services/retours-fonds.d.ts +94 -0
- package/dist/services/retours-fonds.js +100 -0
- package/dist/services/webhooks.d.ts +131 -0
- package/dist/services/webhooks.js +142 -0
- package/dist/types/alias.d.ts +64 -0
- package/dist/types/alias.js +73 -0
- package/dist/utils/constants.d.ts +93 -0
- package/dist/utils/constants.js +93 -0
- package/dist/utils/index.d.ts +60 -0
- package/dist/utils/index.js +115 -0
- package/package.json +81 -0
- package/scripts/post-generate.js +129 -0
- 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,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
|
+
}
|