nomba-python 0.2.0__py3-none-any.whl → 0.2.1__py3-none-any.whl
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.
- nomba/http.py +21 -7
- nomba/resources/accounts.py +12 -13
- nomba/resources/airtime_data.py +4 -5
- nomba/resources/betting.py +6 -7
- nomba/resources/cabletv.py +4 -5
- nomba/resources/charge.py +16 -17
- nomba/resources/checkout.py +16 -17
- nomba/resources/direct_debits.py +8 -9
- nomba/resources/electricity.py +6 -7
- nomba/resources/global_collections.py +6 -7
- nomba/resources/global_payout.py +12 -13
- nomba/resources/terminals.py +6 -8
- nomba/resources/transactions.py +8 -9
- nomba/resources/transfers.py +8 -9
- nomba/resources/virtual_accounts.py +4 -5
- {nomba_python-0.2.0.dist-info → nomba_python-0.2.1.dist-info}/METADATA +1 -1
- nomba_python-0.2.1.dist-info/RECORD +33 -0
- nomba_python-0.2.0.dist-info/RECORD +0 -33
- {nomba_python-0.2.0.dist-info → nomba_python-0.2.1.dist-info}/WHEEL +0 -0
- {nomba_python-0.2.0.dist-info → nomba_python-0.2.1.dist-info}/licenses/LICENSE +0 -0
nomba/http.py
CHANGED
|
@@ -69,7 +69,14 @@ class NombaClient:
|
|
|
69
69
|
self._token_expires_at: float = 0.0
|
|
70
70
|
self._token_lock = threading.Lock()
|
|
71
71
|
|
|
72
|
-
self._http = httpx.Client(base_url=self.base_url, timeout=timeout)
|
|
72
|
+
self._http = httpx.Client(base_url=self.base_url, timeout=timeout, verify= not sandbox)
|
|
73
|
+
|
|
74
|
+
if sandbox:
|
|
75
|
+
import warnings
|
|
76
|
+
warnings.warn(
|
|
77
|
+
"Sandbox mode enabled: SSL verification disabled. Do not use in production.",
|
|
78
|
+
UserWarning
|
|
79
|
+
)
|
|
73
80
|
|
|
74
81
|
# -- auth -----------------------------------------------------------
|
|
75
82
|
|
|
@@ -89,7 +96,7 @@ class NombaClient:
|
|
|
89
96
|
)
|
|
90
97
|
except httpx.HTTPError as exc:
|
|
91
98
|
raise NombaAuthError(f"Failed to reach Nomba auth endpoint: {exc}") from exc
|
|
92
|
-
|
|
99
|
+
|
|
93
100
|
if response.status_code >= 400:
|
|
94
101
|
raise NombaAuthError(
|
|
95
102
|
"Failed to obtain access token",
|
|
@@ -106,10 +113,10 @@ class NombaClient:
|
|
|
106
113
|
response_body=body,
|
|
107
114
|
)
|
|
108
115
|
|
|
109
|
-
expires_in = data.get("expires_in",
|
|
116
|
+
expires_in = data.get("expires_in", 3000)
|
|
110
117
|
self._access_token = token
|
|
111
118
|
# refresh a little early to avoid edge-of-expiry failures
|
|
112
|
-
self._token_expires_at = time.monotonic() + max(int(expires_in) -
|
|
119
|
+
self._token_expires_at = time.monotonic() + max(int(expires_in) - 50, 0)
|
|
113
120
|
|
|
114
121
|
def _ensure_token(self) -> str:
|
|
115
122
|
# fast path: token already valid, no lock needed
|
|
@@ -269,7 +276,14 @@ class AsyncNombaClient:
|
|
|
269
276
|
self._token_expires_at: float = 0.0
|
|
270
277
|
self._token_lock = asyncio.Lock()
|
|
271
278
|
|
|
272
|
-
self._http = httpx.AsyncClient(base_url=self.base_url, timeout=timeout)
|
|
279
|
+
self._http = httpx.AsyncClient(base_url=self.base_url, timeout=timeout, verify= not sandbox )
|
|
280
|
+
|
|
281
|
+
if sandbox:
|
|
282
|
+
import warnings
|
|
283
|
+
warnings.warn(
|
|
284
|
+
"Sandbox mode enabled: SSL verification disabled. Do not use in production.",
|
|
285
|
+
UserWarning
|
|
286
|
+
)
|
|
273
287
|
|
|
274
288
|
# -- auth -----------------------------------------------------------
|
|
275
289
|
|
|
@@ -306,9 +320,9 @@ class AsyncNombaClient:
|
|
|
306
320
|
response_body=body,
|
|
307
321
|
)
|
|
308
322
|
|
|
309
|
-
expires_in = data.get("expires_in",
|
|
323
|
+
expires_in = data.get("expires_in", 3000)
|
|
310
324
|
self._access_token = token
|
|
311
|
-
self._token_expires_at = time.monotonic() + max(int(expires_in) -
|
|
325
|
+
self._token_expires_at = time.monotonic() + max(int(expires_in) - 50, 0)
|
|
312
326
|
|
|
313
327
|
async def _ensure_token(self) -> str:
|
|
314
328
|
if self._access_token is not None and time.monotonic() < self._token_expires_at:
|
nomba/resources/accounts.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -23,7 +22,7 @@ class Accounts:
|
|
|
23
22
|
|
|
24
23
|
You can use this endpoints to fetch all the accounts tied to a business. Accounts are sorted by date, with the most recently-created account appearing first.
|
|
25
24
|
"""
|
|
26
|
-
path =
|
|
25
|
+
path = "/v1/accounts"
|
|
27
26
|
params: dict[str, object] = {}
|
|
28
27
|
if limit is not None:
|
|
29
28
|
params["limit"] = limit
|
|
@@ -61,7 +60,7 @@ class Accounts:
|
|
|
61
60
|
callbackUrl: Callback url
|
|
62
61
|
expiryDate: Expiry date
|
|
63
62
|
"""
|
|
64
|
-
path =
|
|
63
|
+
path = "/v1/accounts"
|
|
65
64
|
params = None
|
|
66
65
|
body: dict[str, object] = {}
|
|
67
66
|
body["accountRef"] = account_ref
|
|
@@ -91,7 +90,7 @@ class Accounts:
|
|
|
91
90
|
|
|
92
91
|
You can use this endpoint to get details of a sub account.
|
|
93
92
|
"""
|
|
94
|
-
path =
|
|
93
|
+
path = "/v1/accounts/sub-account-details"
|
|
95
94
|
params: dict[str, object] = {}
|
|
96
95
|
if account_id is not None:
|
|
97
96
|
params["accountId"] = account_id
|
|
@@ -107,7 +106,7 @@ class Accounts:
|
|
|
107
106
|
|
|
108
107
|
You can use this endpoint to get details of the parent account.
|
|
109
108
|
"""
|
|
110
|
-
path =
|
|
109
|
+
path = "/v1/accounts/parent"
|
|
111
110
|
params = None
|
|
112
111
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
113
112
|
|
|
@@ -131,7 +130,7 @@ class Accounts:
|
|
|
131
130
|
|
|
132
131
|
You can use this endpoint to get the balance of the parent account.
|
|
133
132
|
"""
|
|
134
|
-
path =
|
|
133
|
+
path = "/v1/accounts/balance"
|
|
135
134
|
params = None
|
|
136
135
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
137
136
|
|
|
@@ -208,7 +207,7 @@ class Accounts:
|
|
|
208
207
|
|
|
209
208
|
You can use this endpoint to fetch terminals linked to the parent account.
|
|
210
209
|
"""
|
|
211
|
-
path =
|
|
210
|
+
path = "/v1/accounts/terminals"
|
|
212
211
|
params: dict[str, object] = {}
|
|
213
212
|
if limit is not None:
|
|
214
213
|
params["limit"] = limit
|
|
@@ -295,7 +294,7 @@ class AsyncAccounts:
|
|
|
295
294
|
|
|
296
295
|
You can use this endpoints to fetch all the accounts tied to a business. Accounts are sorted by date, with the most recently-created account appearing first.
|
|
297
296
|
"""
|
|
298
|
-
path =
|
|
297
|
+
path = "/v1/accounts"
|
|
299
298
|
params: dict[str, object] = {}
|
|
300
299
|
if limit is not None:
|
|
301
300
|
params["limit"] = limit
|
|
@@ -333,7 +332,7 @@ class AsyncAccounts:
|
|
|
333
332
|
callbackUrl: Callback url
|
|
334
333
|
expiryDate: Expiry date
|
|
335
334
|
"""
|
|
336
|
-
path =
|
|
335
|
+
path = "/v1/accounts"
|
|
337
336
|
params = None
|
|
338
337
|
body: dict[str, object] = {}
|
|
339
338
|
body["accountRef"] = account_ref
|
|
@@ -363,7 +362,7 @@ class AsyncAccounts:
|
|
|
363
362
|
|
|
364
363
|
You can use this endpoint to get details of a sub account.
|
|
365
364
|
"""
|
|
366
|
-
path =
|
|
365
|
+
path = "/v1/accounts/sub-account-details"
|
|
367
366
|
params: dict[str, object] = {}
|
|
368
367
|
if account_id is not None:
|
|
369
368
|
params["accountId"] = account_id
|
|
@@ -379,7 +378,7 @@ class AsyncAccounts:
|
|
|
379
378
|
|
|
380
379
|
You can use this endpoint to get details of the parent account.
|
|
381
380
|
"""
|
|
382
|
-
path =
|
|
381
|
+
path = "/v1/accounts/parent"
|
|
383
382
|
params = None
|
|
384
383
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
385
384
|
|
|
@@ -403,7 +402,7 @@ class AsyncAccounts:
|
|
|
403
402
|
|
|
404
403
|
You can use this endpoint to get the balance of the parent account.
|
|
405
404
|
"""
|
|
406
|
-
path =
|
|
405
|
+
path = "/v1/accounts/balance"
|
|
407
406
|
params = None
|
|
408
407
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
409
408
|
|
|
@@ -480,7 +479,7 @@ class AsyncAccounts:
|
|
|
480
479
|
|
|
481
480
|
You can use this endpoint to fetch terminals linked to the parent account.
|
|
482
481
|
"""
|
|
483
|
-
path =
|
|
482
|
+
path = "/v1/accounts/terminals"
|
|
484
483
|
params: dict[str, object] = {}
|
|
485
484
|
if limit is not None:
|
|
486
485
|
params["limit"] = limit
|
nomba/resources/airtime_data.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -40,7 +39,7 @@ class AirtimeData:
|
|
|
40
39
|
This is an idempotency key and must be unique per transaction.
|
|
41
40
|
senderName: A name to describe the sender of the airtime
|
|
42
41
|
"""
|
|
43
|
-
path =
|
|
42
|
+
path = "/v1/bill/topup"
|
|
44
43
|
params = None
|
|
45
44
|
body: dict[str, object] = {}
|
|
46
45
|
body["amount"] = amount
|
|
@@ -94,7 +93,7 @@ class AirtimeData:
|
|
|
94
93
|
merchantTxRef (required): Merchant Transaction Identifier reference (Unique to merchant)
|
|
95
94
|
senderName: A name to describe the sender of the data
|
|
96
95
|
"""
|
|
97
|
-
path =
|
|
96
|
+
path = "/v1/bill/data"
|
|
98
97
|
params = None
|
|
99
98
|
body: dict[str, object] = {}
|
|
100
99
|
body["amount"] = amount
|
|
@@ -166,7 +165,7 @@ class AsyncAirtimeData:
|
|
|
166
165
|
This is an idempotency key and must be unique per transaction.
|
|
167
166
|
senderName: A name to describe the sender of the airtime
|
|
168
167
|
"""
|
|
169
|
-
path =
|
|
168
|
+
path = "/v1/bill/topup"
|
|
170
169
|
params = None
|
|
171
170
|
body: dict[str, object] = {}
|
|
172
171
|
body["amount"] = amount
|
|
@@ -220,7 +219,7 @@ class AsyncAirtimeData:
|
|
|
220
219
|
merchantTxRef (required): Merchant Transaction Identifier reference (Unique to merchant)
|
|
221
220
|
senderName: A name to describe the sender of the data
|
|
222
221
|
"""
|
|
223
|
-
path =
|
|
222
|
+
path = "/v1/bill/data"
|
|
224
223
|
params = None
|
|
225
224
|
body: dict[str, object] = {}
|
|
226
225
|
body["amount"] = amount
|
nomba/resources/betting.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -21,7 +20,7 @@ class Betting:
|
|
|
21
20
|
|
|
22
21
|
You can use this endpoint to fetch betting providers
|
|
23
22
|
"""
|
|
24
|
-
path =
|
|
23
|
+
path = "/v1/bill/betting/providers"
|
|
25
24
|
params = None
|
|
26
25
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
27
26
|
|
|
@@ -31,7 +30,7 @@ class Betting:
|
|
|
31
30
|
|
|
32
31
|
This endpoint is for fetching customer information data from a bet vending provider
|
|
33
32
|
"""
|
|
34
|
-
path =
|
|
33
|
+
path = "/v1/bill/betting/lookup"
|
|
35
34
|
params: dict[str, object] = {}
|
|
36
35
|
if provider_id is not None:
|
|
37
36
|
params["providerId"] = provider_id
|
|
@@ -53,7 +52,7 @@ class Betting:
|
|
|
53
52
|
amount:
|
|
54
53
|
customerId:
|
|
55
54
|
"""
|
|
56
|
-
path =
|
|
55
|
+
path = "/v1/bill/betting"
|
|
57
56
|
params = None
|
|
58
57
|
body: dict[str, object] = {}
|
|
59
58
|
if betting_provider is not None:
|
|
@@ -119,7 +118,7 @@ class AsyncBetting:
|
|
|
119
118
|
|
|
120
119
|
You can use this endpoint to fetch betting providers
|
|
121
120
|
"""
|
|
122
|
-
path =
|
|
121
|
+
path = "/v1/bill/betting/providers"
|
|
123
122
|
params = None
|
|
124
123
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
125
124
|
|
|
@@ -129,7 +128,7 @@ class AsyncBetting:
|
|
|
129
128
|
|
|
130
129
|
This endpoint is for fetching customer information data from a bet vending provider
|
|
131
130
|
"""
|
|
132
|
-
path =
|
|
131
|
+
path = "/v1/bill/betting/lookup"
|
|
133
132
|
params: dict[str, object] = {}
|
|
134
133
|
if provider_id is not None:
|
|
135
134
|
params["providerId"] = provider_id
|
|
@@ -151,7 +150,7 @@ class AsyncBetting:
|
|
|
151
150
|
amount:
|
|
152
151
|
customerId:
|
|
153
152
|
"""
|
|
154
|
-
path =
|
|
153
|
+
path = "/v1/bill/betting"
|
|
155
154
|
params = None
|
|
156
155
|
body: dict[str, object] = {}
|
|
157
156
|
if betting_provider is not None:
|
nomba/resources/cabletv.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -21,7 +20,7 @@ class CableTv:
|
|
|
21
20
|
|
|
22
21
|
This endpoint is for fetching customer information data
|
|
23
22
|
"""
|
|
24
|
-
path =
|
|
23
|
+
path = "/v1/bill/cabletv/lookup"
|
|
25
24
|
params: dict[str, object] = {}
|
|
26
25
|
if customer_id is not None:
|
|
27
26
|
params["customerId"] = customer_id
|
|
@@ -42,7 +41,7 @@ class CableTv:
|
|
|
42
41
|
amount:
|
|
43
42
|
customerId:
|
|
44
43
|
"""
|
|
45
|
-
path =
|
|
44
|
+
path = "/v1/bill/cabletv"
|
|
46
45
|
params = None
|
|
47
46
|
body: dict[str, object] = {}
|
|
48
47
|
if cable_tv_type is not None:
|
|
@@ -103,7 +102,7 @@ class AsyncCableTv:
|
|
|
103
102
|
|
|
104
103
|
This endpoint is for fetching customer information data
|
|
105
104
|
"""
|
|
106
|
-
path =
|
|
105
|
+
path = "/v1/bill/cabletv/lookup"
|
|
107
106
|
params: dict[str, object] = {}
|
|
108
107
|
if customer_id is not None:
|
|
109
108
|
params["customerId"] = customer_id
|
|
@@ -124,7 +123,7 @@ class AsyncCableTv:
|
|
|
124
123
|
amount:
|
|
125
124
|
customerId:
|
|
126
125
|
"""
|
|
127
|
-
path =
|
|
126
|
+
path = "/v1/bill/cabletv"
|
|
128
127
|
params = None
|
|
129
128
|
body: dict[str, object] = {}
|
|
130
129
|
if cable_tv_type is not None:
|
nomba/resources/charge.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -38,7 +37,7 @@ class Charge:
|
|
|
38
37
|
saveCard: if true, this this user cardn will be saved for the user's future use. Note the process is not complete until the user-card verification endpoints are called to authenticate the user's phone number.
|
|
39
38
|
deviceInformation:
|
|
40
39
|
"""
|
|
41
|
-
path =
|
|
40
|
+
path = "/v1/checkout/checkout-card-detail"
|
|
42
41
|
params = None
|
|
43
42
|
body: dict[str, object] = {}
|
|
44
43
|
if card_details is not None:
|
|
@@ -66,7 +65,7 @@ class Charge:
|
|
|
66
65
|
orderReference (required): order reference
|
|
67
66
|
transactionId (required): transaction id returend when the card details were submitted
|
|
68
67
|
"""
|
|
69
|
-
path =
|
|
68
|
+
path = "/v1/checkout/checkout-card-otp"
|
|
70
69
|
params = None
|
|
71
70
|
body: dict[str, object] = {}
|
|
72
71
|
body["otp"] = otp
|
|
@@ -85,7 +84,7 @@ class Charge:
|
|
|
85
84
|
Body fields:
|
|
86
85
|
orderReference (required): order reference
|
|
87
86
|
"""
|
|
88
|
-
path =
|
|
87
|
+
path = "/v1/checkout/resend-otp"
|
|
89
88
|
params = None
|
|
90
89
|
body: dict[str, object] = {}
|
|
91
90
|
body["orderReference"] = order_reference
|
|
@@ -102,7 +101,7 @@ class Charge:
|
|
|
102
101
|
Body fields:
|
|
103
102
|
orderReference (required): order reference
|
|
104
103
|
"""
|
|
105
|
-
path =
|
|
104
|
+
path = "/v1/checkout/confirm-transaction-receipt"
|
|
106
105
|
params = None
|
|
107
106
|
body: dict[str, object] = {}
|
|
108
107
|
body["orderReference"] = order_reference
|
|
@@ -130,7 +129,7 @@ class Charge:
|
|
|
130
129
|
orderReference (required): order reference
|
|
131
130
|
phoneNumber (required): customer's phone number
|
|
132
131
|
"""
|
|
133
|
-
path =
|
|
132
|
+
path = "/v1/checkout/user-card/auth"
|
|
134
133
|
params = None
|
|
135
134
|
body: dict[str, object] = {}
|
|
136
135
|
body["orderReference"] = order_reference
|
|
@@ -148,7 +147,7 @@ class Charge:
|
|
|
148
147
|
Body fields:
|
|
149
148
|
orderReference (required): order reference
|
|
150
149
|
"""
|
|
151
|
-
path =
|
|
150
|
+
path = "/v1/checkout/user-card/saved-card/auth"
|
|
152
151
|
params = None
|
|
153
152
|
body: dict[str, object] = {}
|
|
154
153
|
body["orderReference"] = order_reference
|
|
@@ -167,7 +166,7 @@ class Charge:
|
|
|
167
166
|
phoneNumber (required): customer's phone number
|
|
168
167
|
otp (required): otp send to the customer's mobile phone
|
|
169
168
|
"""
|
|
170
|
-
path =
|
|
169
|
+
path = "/v1/checkout/user-card"
|
|
171
170
|
params = None
|
|
172
171
|
body: dict[str, object] = {}
|
|
173
172
|
body["orderReference"] = order_reference
|
|
@@ -199,7 +198,7 @@ class Charge:
|
|
|
199
198
|
transactionId (required): the transaction Id returned when the card details were submitted
|
|
200
199
|
forceCancel (required): Force the cancelation of the transaction
|
|
201
200
|
"""
|
|
202
|
-
path =
|
|
201
|
+
path = "/v1/checkout/transaction/cancel"
|
|
203
202
|
params = None
|
|
204
203
|
body: dict[str, object] = {}
|
|
205
204
|
body["transactionId"] = transaction_id
|
|
@@ -239,7 +238,7 @@ class AsyncCharge:
|
|
|
239
238
|
saveCard: if true, this this user cardn will be saved for the user's future use. Note the process is not complete until the user-card verification endpoints are called to authenticate the user's phone number.
|
|
240
239
|
deviceInformation:
|
|
241
240
|
"""
|
|
242
|
-
path =
|
|
241
|
+
path = "/v1/checkout/checkout-card-detail"
|
|
243
242
|
params = None
|
|
244
243
|
body: dict[str, object] = {}
|
|
245
244
|
if card_details is not None:
|
|
@@ -267,7 +266,7 @@ class AsyncCharge:
|
|
|
267
266
|
orderReference (required): order reference
|
|
268
267
|
transactionId (required): transaction id returend when the card details were submitted
|
|
269
268
|
"""
|
|
270
|
-
path =
|
|
269
|
+
path = "/v1/checkout/checkout-card-otp"
|
|
271
270
|
params = None
|
|
272
271
|
body: dict[str, object] = {}
|
|
273
272
|
body["otp"] = otp
|
|
@@ -286,7 +285,7 @@ class AsyncCharge:
|
|
|
286
285
|
Body fields:
|
|
287
286
|
orderReference (required): order reference
|
|
288
287
|
"""
|
|
289
|
-
path =
|
|
288
|
+
path = "/v1/checkout/resend-otp"
|
|
290
289
|
params = None
|
|
291
290
|
body: dict[str, object] = {}
|
|
292
291
|
body["orderReference"] = order_reference
|
|
@@ -303,7 +302,7 @@ class AsyncCharge:
|
|
|
303
302
|
Body fields:
|
|
304
303
|
orderReference (required): order reference
|
|
305
304
|
"""
|
|
306
|
-
path =
|
|
305
|
+
path = "/v1/checkout/confirm-transaction-receipt"
|
|
307
306
|
params = None
|
|
308
307
|
body: dict[str, object] = {}
|
|
309
308
|
body["orderReference"] = order_reference
|
|
@@ -331,7 +330,7 @@ class AsyncCharge:
|
|
|
331
330
|
orderReference (required): order reference
|
|
332
331
|
phoneNumber (required): customer's phone number
|
|
333
332
|
"""
|
|
334
|
-
path =
|
|
333
|
+
path = "/v1/checkout/user-card/auth"
|
|
335
334
|
params = None
|
|
336
335
|
body: dict[str, object] = {}
|
|
337
336
|
body["orderReference"] = order_reference
|
|
@@ -349,7 +348,7 @@ class AsyncCharge:
|
|
|
349
348
|
Body fields:
|
|
350
349
|
orderReference (required): order reference
|
|
351
350
|
"""
|
|
352
|
-
path =
|
|
351
|
+
path = "/v1/checkout/user-card/saved-card/auth"
|
|
353
352
|
params = None
|
|
354
353
|
body: dict[str, object] = {}
|
|
355
354
|
body["orderReference"] = order_reference
|
|
@@ -368,7 +367,7 @@ class AsyncCharge:
|
|
|
368
367
|
phoneNumber (required): customer's phone number
|
|
369
368
|
otp (required): otp send to the customer's mobile phone
|
|
370
369
|
"""
|
|
371
|
-
path =
|
|
370
|
+
path = "/v1/checkout/user-card"
|
|
372
371
|
params = None
|
|
373
372
|
body: dict[str, object] = {}
|
|
374
373
|
body["orderReference"] = order_reference
|
|
@@ -400,7 +399,7 @@ class AsyncCharge:
|
|
|
400
399
|
transactionId (required): the transaction Id returned when the card details were submitted
|
|
401
400
|
forceCancel (required): Force the cancelation of the transaction
|
|
402
401
|
"""
|
|
403
|
-
path =
|
|
402
|
+
path = "/v1/checkout/transaction/cancel"
|
|
404
403
|
params = None
|
|
405
404
|
body: dict[str, object] = {}
|
|
406
405
|
body["transactionId"] = transaction_id
|
nomba/resources/checkout.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -25,7 +24,7 @@ class Checkout:
|
|
|
25
24
|
order (required):
|
|
26
25
|
tokenizeCard: Determines if the card used for payment is to be tokenized
|
|
27
26
|
"""
|
|
28
|
-
path =
|
|
27
|
+
path = "/v1/checkout/order"
|
|
29
28
|
params = None
|
|
30
29
|
body: dict[str, object] = {}
|
|
31
30
|
body["order"] = order
|
|
@@ -45,7 +44,7 @@ class Checkout:
|
|
|
45
44
|
tokenKey (required): the token key returned in the webhook
|
|
46
45
|
order:
|
|
47
46
|
"""
|
|
48
|
-
path =
|
|
47
|
+
path = "/v1/checkout/tokenized-card-payment"
|
|
49
48
|
params = None
|
|
50
49
|
body: dict[str, object] = {}
|
|
51
50
|
body["tokenKey"] = token_key
|
|
@@ -61,7 +60,7 @@ class Checkout:
|
|
|
61
60
|
|
|
62
61
|
Fetch list of merchant's tokenized cards
|
|
63
62
|
"""
|
|
64
|
-
path =
|
|
63
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
65
64
|
params: dict[str, object] = {}
|
|
66
65
|
if customer_email is not None:
|
|
67
66
|
params["customerEmail"] = customer_email
|
|
@@ -84,7 +83,7 @@ class Checkout:
|
|
|
84
83
|
currentEmailAddress (required): customer email currently associated with the key
|
|
85
84
|
newEmailAddress (required): new email to replace the old one
|
|
86
85
|
"""
|
|
87
|
-
path =
|
|
86
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
88
87
|
params = None
|
|
89
88
|
body: dict[str, object] = {}
|
|
90
89
|
body["tokenKey"] = token_key
|
|
@@ -103,7 +102,7 @@ class Checkout:
|
|
|
103
102
|
Body fields:
|
|
104
103
|
tokenKey (required): token key
|
|
105
104
|
"""
|
|
106
|
-
path =
|
|
105
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
107
106
|
params = None
|
|
108
107
|
body: dict[str, object] = {}
|
|
109
108
|
body["tokenKey"] = token_key
|
|
@@ -115,7 +114,7 @@ class Checkout:
|
|
|
115
114
|
"""
|
|
116
115
|
Fetch checkout transaction
|
|
117
116
|
"""
|
|
118
|
-
path =
|
|
117
|
+
path = "/v1/checkout/transaction"
|
|
119
118
|
params: dict[str, object] = {}
|
|
120
119
|
if id_type is not None:
|
|
121
120
|
params["idType"] = id_type
|
|
@@ -135,7 +134,7 @@ class Checkout:
|
|
|
135
134
|
accountNumber: The account number for the refund
|
|
136
135
|
bankCode: The bank code for the refund
|
|
137
136
|
"""
|
|
138
|
-
path =
|
|
137
|
+
path = "/v1/checkout/refund"
|
|
139
138
|
params = None
|
|
140
139
|
body: dict[str, object] = {}
|
|
141
140
|
body["transactionId"] = transaction_id
|
|
@@ -158,7 +157,7 @@ class Checkout:
|
|
|
158
157
|
Body fields:
|
|
159
158
|
orderReference (required): The unique reference of the checkout order to cancel
|
|
160
159
|
"""
|
|
161
|
-
path =
|
|
160
|
+
path = "/v1/checkout/order/cancel"
|
|
162
161
|
params = None
|
|
163
162
|
body: dict[str, object] = {}
|
|
164
163
|
body["orderReference"] = order_reference
|
|
@@ -184,7 +183,7 @@ class AsyncCheckout:
|
|
|
184
183
|
order (required):
|
|
185
184
|
tokenizeCard: Determines if the card used for payment is to be tokenized
|
|
186
185
|
"""
|
|
187
|
-
path =
|
|
186
|
+
path = "/v1/checkout/order"
|
|
188
187
|
params = None
|
|
189
188
|
body: dict[str, object] = {}
|
|
190
189
|
body["order"] = order
|
|
@@ -204,7 +203,7 @@ class AsyncCheckout:
|
|
|
204
203
|
tokenKey (required): the token key returned in the webhook
|
|
205
204
|
order:
|
|
206
205
|
"""
|
|
207
|
-
path =
|
|
206
|
+
path = "/v1/checkout/tokenized-card-payment"
|
|
208
207
|
params = None
|
|
209
208
|
body: dict[str, object] = {}
|
|
210
209
|
body["tokenKey"] = token_key
|
|
@@ -220,7 +219,7 @@ class AsyncCheckout:
|
|
|
220
219
|
|
|
221
220
|
Fetch list of merchant's tokenized cards
|
|
222
221
|
"""
|
|
223
|
-
path =
|
|
222
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
224
223
|
params: dict[str, object] = {}
|
|
225
224
|
if customer_email is not None:
|
|
226
225
|
params["customerEmail"] = customer_email
|
|
@@ -243,7 +242,7 @@ class AsyncCheckout:
|
|
|
243
242
|
currentEmailAddress (required): customer email currently associated with the key
|
|
244
243
|
newEmailAddress (required): new email to replace the old one
|
|
245
244
|
"""
|
|
246
|
-
path =
|
|
245
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
247
246
|
params = None
|
|
248
247
|
body: dict[str, object] = {}
|
|
249
248
|
body["tokenKey"] = token_key
|
|
@@ -262,7 +261,7 @@ class AsyncCheckout:
|
|
|
262
261
|
Body fields:
|
|
263
262
|
tokenKey (required): token key
|
|
264
263
|
"""
|
|
265
|
-
path =
|
|
264
|
+
path = "/v1/checkout/tokenized-card-data"
|
|
266
265
|
params = None
|
|
267
266
|
body: dict[str, object] = {}
|
|
268
267
|
body["tokenKey"] = token_key
|
|
@@ -274,7 +273,7 @@ class AsyncCheckout:
|
|
|
274
273
|
"""
|
|
275
274
|
Fetch checkout transaction
|
|
276
275
|
"""
|
|
277
|
-
path =
|
|
276
|
+
path = "/v1/checkout/transaction"
|
|
278
277
|
params: dict[str, object] = {}
|
|
279
278
|
if id_type is not None:
|
|
280
279
|
params["idType"] = id_type
|
|
@@ -294,7 +293,7 @@ class AsyncCheckout:
|
|
|
294
293
|
accountNumber: The account number for the refund
|
|
295
294
|
bankCode: The bank code for the refund
|
|
296
295
|
"""
|
|
297
|
-
path =
|
|
296
|
+
path = "/v1/checkout/refund"
|
|
298
297
|
params = None
|
|
299
298
|
body: dict[str, object] = {}
|
|
300
299
|
body["transactionId"] = transaction_id
|
|
@@ -317,7 +316,7 @@ class AsyncCheckout:
|
|
|
317
316
|
Body fields:
|
|
318
317
|
orderReference (required): The unique reference of the checkout order to cancel
|
|
319
318
|
"""
|
|
320
|
-
path =
|
|
319
|
+
path = "/v1/checkout/order/cancel"
|
|
321
320
|
params = None
|
|
322
321
|
body: dict[str, object] = {}
|
|
323
322
|
body["orderReference"] = order_reference
|
nomba/resources/direct_debits.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -28,7 +27,7 @@ class DirectDebits:
|
|
|
28
27
|
"""
|
|
29
28
|
Get mandates by filters
|
|
30
29
|
"""
|
|
31
|
-
path =
|
|
30
|
+
path = "/v1/direct-debits/mandates"
|
|
32
31
|
params: dict[str, object] = {}
|
|
33
32
|
if page is not None:
|
|
34
33
|
params["page"] = page
|
|
@@ -54,7 +53,7 @@ class DirectDebits:
|
|
|
54
53
|
mandateId (required): Unique identifier of the mandate
|
|
55
54
|
status (required): New status of the mandate
|
|
56
55
|
"""
|
|
57
|
-
path =
|
|
56
|
+
path = "/v1/direct-debits/update-status"
|
|
58
57
|
params = None
|
|
59
58
|
body: dict[str, object] = {}
|
|
60
59
|
body["mandateId"] = mandate_id
|
|
@@ -75,7 +74,7 @@ class DirectDebits:
|
|
|
75
74
|
mandateId (required): Unique identifier of the mandate to debit
|
|
76
75
|
amount (required): Amount to be debited
|
|
77
76
|
"""
|
|
78
|
-
path =
|
|
77
|
+
path = "/v1/direct-debits/debit-mandate"
|
|
79
78
|
params = None
|
|
80
79
|
body: dict[str, object] = {}
|
|
81
80
|
body["mandateId"] = mandate_id
|
|
@@ -150,7 +149,7 @@ class DirectDebits:
|
|
|
150
149
|
customerPhoneNumber:
|
|
151
150
|
startImmediately:
|
|
152
151
|
"""
|
|
153
|
-
path =
|
|
152
|
+
path = "/v1/direct-debits"
|
|
154
153
|
params = None
|
|
155
154
|
body: dict[str, object] = {}
|
|
156
155
|
body["customerAccountNumber"] = customer_account_number
|
|
@@ -195,7 +194,7 @@ class AsyncDirectDebits:
|
|
|
195
194
|
"""
|
|
196
195
|
Get mandates by filters
|
|
197
196
|
"""
|
|
198
|
-
path =
|
|
197
|
+
path = "/v1/direct-debits/mandates"
|
|
199
198
|
params: dict[str, object] = {}
|
|
200
199
|
if page is not None:
|
|
201
200
|
params["page"] = page
|
|
@@ -221,7 +220,7 @@ class AsyncDirectDebits:
|
|
|
221
220
|
mandateId (required): Unique identifier of the mandate
|
|
222
221
|
status (required): New status of the mandate
|
|
223
222
|
"""
|
|
224
|
-
path =
|
|
223
|
+
path = "/v1/direct-debits/update-status"
|
|
225
224
|
params = None
|
|
226
225
|
body: dict[str, object] = {}
|
|
227
226
|
body["mandateId"] = mandate_id
|
|
@@ -242,7 +241,7 @@ class AsyncDirectDebits:
|
|
|
242
241
|
mandateId (required): Unique identifier of the mandate to debit
|
|
243
242
|
amount (required): Amount to be debited
|
|
244
243
|
"""
|
|
245
|
-
path =
|
|
244
|
+
path = "/v1/direct-debits/debit-mandate"
|
|
246
245
|
params = None
|
|
247
246
|
body: dict[str, object] = {}
|
|
248
247
|
body["mandateId"] = mandate_id
|
|
@@ -317,7 +316,7 @@ class AsyncDirectDebits:
|
|
|
317
316
|
customerPhoneNumber:
|
|
318
317
|
startImmediately:
|
|
319
318
|
"""
|
|
320
|
-
path =
|
|
319
|
+
path = "/v1/direct-debits"
|
|
321
320
|
params = None
|
|
322
321
|
body: dict[str, object] = {}
|
|
323
322
|
body["customerAccountNumber"] = customer_account_number
|
nomba/resources/electricity.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -21,7 +20,7 @@ class Electricity:
|
|
|
21
20
|
|
|
22
21
|
You can use this endpoint to fetch electricity providers/discos
|
|
23
22
|
"""
|
|
24
|
-
path =
|
|
23
|
+
path = "/v1/bill/electricity/discos"
|
|
25
24
|
params = None
|
|
26
25
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
27
26
|
|
|
@@ -31,7 +30,7 @@ class Electricity:
|
|
|
31
30
|
|
|
32
31
|
This endpoint is for fetching customer information data from an electricity vending provider
|
|
33
32
|
"""
|
|
34
|
-
path =
|
|
33
|
+
path = "/v1/bill/electricity/lookup"
|
|
35
34
|
params: dict[str, object] = {}
|
|
36
35
|
if disco is not None:
|
|
37
36
|
params["disco"] = disco
|
|
@@ -53,7 +52,7 @@ class Electricity:
|
|
|
53
52
|
customerId:
|
|
54
53
|
meterType:
|
|
55
54
|
"""
|
|
56
|
-
path =
|
|
55
|
+
path = "/v1/bill/electricity"
|
|
57
56
|
params = None
|
|
58
57
|
body: dict[str, object] = {}
|
|
59
58
|
if disco is not None:
|
|
@@ -119,7 +118,7 @@ class AsyncElectricity:
|
|
|
119
118
|
|
|
120
119
|
You can use this endpoint to fetch electricity providers/discos
|
|
121
120
|
"""
|
|
122
|
-
path =
|
|
121
|
+
path = "/v1/bill/electricity/discos"
|
|
123
122
|
params = None
|
|
124
123
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
125
124
|
|
|
@@ -129,7 +128,7 @@ class AsyncElectricity:
|
|
|
129
128
|
|
|
130
129
|
This endpoint is for fetching customer information data from an electricity vending provider
|
|
131
130
|
"""
|
|
132
|
-
path =
|
|
131
|
+
path = "/v1/bill/electricity/lookup"
|
|
133
132
|
params: dict[str, object] = {}
|
|
134
133
|
if disco is not None:
|
|
135
134
|
params["disco"] = disco
|
|
@@ -151,7 +150,7 @@ class AsyncElectricity:
|
|
|
151
150
|
customerId:
|
|
152
151
|
meterType:
|
|
153
152
|
"""
|
|
154
|
-
path =
|
|
153
|
+
path = "/v1/bill/electricity"
|
|
155
154
|
params = None
|
|
156
155
|
body: dict[str, object] = {}
|
|
157
156
|
if disco is not None:
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -28,7 +27,7 @@ class GlobalCollections:
|
|
|
28
27
|
topupVendor (required): Mobile money network provider (e.g. AIRTEL, MPESA).
|
|
29
28
|
idempotencyKey: A client-generated key used to safely retry the request without risk of duplicate charges. If not provided, the server generates one automatically and returns it in the response.
|
|
30
29
|
"""
|
|
31
|
-
path =
|
|
30
|
+
path = "/v1/global-collection/inflow/initiate"
|
|
32
31
|
params = None
|
|
33
32
|
body: dict[str, object] = {}
|
|
34
33
|
body["phoneNumber"] = phone_number
|
|
@@ -56,7 +55,7 @@ class GlobalCollections:
|
|
|
56
55
|
|
|
57
56
|
Returns the list of mobile money providers supported for DRC inflow. Use the returned code values as the topupVendor in the Initiate Mobile Money Inflow request.
|
|
58
57
|
"""
|
|
59
|
-
path =
|
|
58
|
+
path = "/v1/global-collection/drc/inflow/providers"
|
|
60
59
|
params = None
|
|
61
60
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
62
61
|
|
|
@@ -65,7 +64,7 @@ class GlobalCollections:
|
|
|
65
64
|
|
|
66
65
|
Sandbox version of Fetch DRC Inflow Providers. Returns the same static list of mobile money providers supported for DRC inflow for use in testing.
|
|
67
66
|
"""
|
|
68
|
-
path =
|
|
67
|
+
path = "/v1/sandbox/global-collection/drc/inflow/providers"
|
|
69
68
|
params = None
|
|
70
69
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
71
70
|
|
|
@@ -90,7 +89,7 @@ class AsyncGlobalCollections:
|
|
|
90
89
|
topupVendor (required): Mobile money network provider (e.g. AIRTEL, MPESA).
|
|
91
90
|
idempotencyKey: A client-generated key used to safely retry the request without risk of duplicate charges. If not provided, the server generates one automatically and returns it in the response.
|
|
92
91
|
"""
|
|
93
|
-
path =
|
|
92
|
+
path = "/v1/global-collection/inflow/initiate"
|
|
94
93
|
params = None
|
|
95
94
|
body: dict[str, object] = {}
|
|
96
95
|
body["phoneNumber"] = phone_number
|
|
@@ -118,7 +117,7 @@ class AsyncGlobalCollections:
|
|
|
118
117
|
|
|
119
118
|
Returns the list of mobile money providers supported for DRC inflow. Use the returned code values as the topupVendor in the Initiate Mobile Money Inflow request.
|
|
120
119
|
"""
|
|
121
|
-
path =
|
|
120
|
+
path = "/v1/global-collection/drc/inflow/providers"
|
|
122
121
|
params = None
|
|
123
122
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
124
123
|
|
|
@@ -127,7 +126,7 @@ class AsyncGlobalCollections:
|
|
|
127
126
|
|
|
128
127
|
Sandbox version of Fetch DRC Inflow Providers. Returns the same static list of mobile money providers supported for DRC inflow for use in testing.
|
|
129
128
|
"""
|
|
130
|
-
path =
|
|
129
|
+
path = "/v1/sandbox/global-collection/drc/inflow/providers"
|
|
131
130
|
params = None
|
|
132
131
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
133
132
|
|
nomba/resources/global_payout.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -43,7 +42,7 @@ class GlobalPayout:
|
|
|
43
42
|
bankZipCode: Bank ZIP code. Required for United States WIRE.
|
|
44
43
|
beneficiary: Required for INTERAC; partially required for BANK (Canada).
|
|
45
44
|
"""
|
|
46
|
-
path =
|
|
45
|
+
path = "/v1/global-payout/transfer/authorize"
|
|
47
46
|
params = None
|
|
48
47
|
body: dict[str, object] = {}
|
|
49
48
|
body["amount"] = amount
|
|
@@ -100,7 +99,7 @@ class GlobalPayout:
|
|
|
100
99
|
narration:
|
|
101
100
|
lockedExchangeRateId: The exchangeRateId from a prior Fetch Exchange Rates call. When provided, the exchange is fulfilled at that exact rate.
|
|
102
101
|
"""
|
|
103
|
-
path =
|
|
102
|
+
path = "/v1/global-payout/exchange/authorize"
|
|
104
103
|
params = None
|
|
105
104
|
body: dict[str, object] = {}
|
|
106
105
|
body["amount"] = amount
|
|
@@ -131,7 +130,7 @@ class GlobalPayout:
|
|
|
131
130
|
transactionType (required):
|
|
132
131
|
sourceCountryIsoCode (required):
|
|
133
132
|
"""
|
|
134
|
-
path =
|
|
133
|
+
path = "/v1/global-payout/money/convert"
|
|
135
134
|
params = None
|
|
136
135
|
body: dict[str, object] = {}
|
|
137
136
|
body["amount"] = amount
|
|
@@ -148,7 +147,7 @@ class GlobalPayout:
|
|
|
148
147
|
|
|
149
148
|
Retrieve the latest exchange rates for a currency pair before initiating a transfer.
|
|
150
149
|
"""
|
|
151
|
-
path =
|
|
150
|
+
path = "/v1/global-payout/exchange-rates"
|
|
152
151
|
params: dict[str, object] = {}
|
|
153
152
|
if from_ is not None:
|
|
154
153
|
params["from"] = from_
|
|
@@ -172,7 +171,7 @@ class GlobalPayout:
|
|
|
172
171
|
|
|
173
172
|
Returns all supported payment methods and their method-specific requirements. Filter by code or name to retrieve a specific method.
|
|
174
173
|
"""
|
|
175
|
-
path =
|
|
174
|
+
path = "/v1/global-payout/payment-methods"
|
|
176
175
|
params: dict[str, object] = {}
|
|
177
176
|
if code is not None:
|
|
178
177
|
params["code"] = code
|
|
@@ -185,7 +184,7 @@ class GlobalPayout:
|
|
|
185
184
|
|
|
186
185
|
Returns available bank, institution, or mobile money providers. Use isMobileMoney=false for bank/institution providers and isMobileMoney=true for mobile money providers. Use code as institutionCode and displayName as institutionName in Authorize Transfer.
|
|
187
186
|
"""
|
|
188
|
-
path =
|
|
187
|
+
path = "/v1/global-payout/bank/providers"
|
|
189
188
|
params: dict[str, object] = {}
|
|
190
189
|
if is_mobile_money is not None:
|
|
191
190
|
params["isMobileMoney"] = is_mobile_money
|
|
@@ -229,7 +228,7 @@ class AsyncGlobalPayout:
|
|
|
229
228
|
bankZipCode: Bank ZIP code. Required for United States WIRE.
|
|
230
229
|
beneficiary: Required for INTERAC; partially required for BANK (Canada).
|
|
231
230
|
"""
|
|
232
|
-
path =
|
|
231
|
+
path = "/v1/global-payout/transfer/authorize"
|
|
233
232
|
params = None
|
|
234
233
|
body: dict[str, object] = {}
|
|
235
234
|
body["amount"] = amount
|
|
@@ -286,7 +285,7 @@ class AsyncGlobalPayout:
|
|
|
286
285
|
narration:
|
|
287
286
|
lockedExchangeRateId: The exchangeRateId from a prior Fetch Exchange Rates call. When provided, the exchange is fulfilled at that exact rate.
|
|
288
287
|
"""
|
|
289
|
-
path =
|
|
288
|
+
path = "/v1/global-payout/exchange/authorize"
|
|
290
289
|
params = None
|
|
291
290
|
body: dict[str, object] = {}
|
|
292
291
|
body["amount"] = amount
|
|
@@ -317,7 +316,7 @@ class AsyncGlobalPayout:
|
|
|
317
316
|
transactionType (required):
|
|
318
317
|
sourceCountryIsoCode (required):
|
|
319
318
|
"""
|
|
320
|
-
path =
|
|
319
|
+
path = "/v1/global-payout/money/convert"
|
|
321
320
|
params = None
|
|
322
321
|
body: dict[str, object] = {}
|
|
323
322
|
body["amount"] = amount
|
|
@@ -334,7 +333,7 @@ class AsyncGlobalPayout:
|
|
|
334
333
|
|
|
335
334
|
Retrieve the latest exchange rates for a currency pair before initiating a transfer.
|
|
336
335
|
"""
|
|
337
|
-
path =
|
|
336
|
+
path = "/v1/global-payout/exchange-rates"
|
|
338
337
|
params: dict[str, object] = {}
|
|
339
338
|
if from_ is not None:
|
|
340
339
|
params["from"] = from_
|
|
@@ -358,7 +357,7 @@ class AsyncGlobalPayout:
|
|
|
358
357
|
|
|
359
358
|
Returns all supported payment methods and their method-specific requirements. Filter by code or name to retrieve a specific method.
|
|
360
359
|
"""
|
|
361
|
-
path =
|
|
360
|
+
path = "/v1/global-payout/payment-methods"
|
|
362
361
|
params: dict[str, object] = {}
|
|
363
362
|
if code is not None:
|
|
364
363
|
params["code"] = code
|
|
@@ -371,7 +370,7 @@ class AsyncGlobalPayout:
|
|
|
371
370
|
|
|
372
371
|
Returns available bank, institution, or mobile money providers. Use isMobileMoney=false for bank/institution providers and isMobileMoney=true for mobile money providers. Use code as institutionCode and displayName as institutionName in Authorize Transfer.
|
|
373
372
|
"""
|
|
374
|
-
path =
|
|
373
|
+
path = "/v1/global-payout/bank/providers"
|
|
375
374
|
params: dict[str, object] = {}
|
|
376
375
|
if is_mobile_money is not None:
|
|
377
376
|
params["isMobileMoney"] = is_mobile_money
|
nomba/resources/terminals.py
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
|
-
|
|
7
5
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
6
|
from ..validation import validate_body
|
|
9
7
|
from .. import models as _models
|
|
@@ -45,7 +43,7 @@ class Terminals:
|
|
|
45
43
|
serialNumber (required): Serial number
|
|
46
44
|
terminalLabel: Terminal label
|
|
47
45
|
"""
|
|
48
|
-
path =
|
|
46
|
+
path = "/v1/terminals/assign"
|
|
49
47
|
params = None
|
|
50
48
|
body: dict[str, object] = {}
|
|
51
49
|
body["serialNumber"] = serial_number
|
|
@@ -85,7 +83,7 @@ class Terminals:
|
|
|
85
83
|
serialNumber (required): Serial number
|
|
86
84
|
terminalLabel: Terminal label
|
|
87
85
|
"""
|
|
88
|
-
path =
|
|
86
|
+
path = "/v1/terminals/unassign"
|
|
89
87
|
params = None
|
|
90
88
|
body: dict[str, object] = {}
|
|
91
89
|
body["serialNumber"] = serial_number
|
|
@@ -95,7 +93,7 @@ class Terminals:
|
|
|
95
93
|
validate_body("post", "/v1/terminals/unassign", body)
|
|
96
94
|
return self._client.post(path, json=body, params=params) # type: ignore[return-value]
|
|
97
95
|
|
|
98
|
-
def send_payment_request_to_terminal(self, merchant_tx_ref, amount, currency, **extra: object) -> _models.SendPaymentRequestToTerminalResponse:
|
|
96
|
+
def send_payment_request_to_terminal(self, merchant_tx_ref, amount, currency,terminalId, **extra: object) -> _models.SendPaymentRequestToTerminalResponse:
|
|
99
97
|
"""
|
|
100
98
|
Send payment request to terminal
|
|
101
99
|
|
|
@@ -154,7 +152,7 @@ class AsyncTerminals:
|
|
|
154
152
|
serialNumber (required): Serial number
|
|
155
153
|
terminalLabel: Terminal label
|
|
156
154
|
"""
|
|
157
|
-
path =
|
|
155
|
+
path = "/v1/terminals/assign"
|
|
158
156
|
params = None
|
|
159
157
|
body: dict[str, object] = {}
|
|
160
158
|
body["serialNumber"] = serial_number
|
|
@@ -194,7 +192,7 @@ class AsyncTerminals:
|
|
|
194
192
|
serialNumber (required): Serial number
|
|
195
193
|
terminalLabel: Terminal label
|
|
196
194
|
"""
|
|
197
|
-
path =
|
|
195
|
+
path = "/v1/terminals/unassign"
|
|
198
196
|
params = None
|
|
199
197
|
body: dict[str, object] = {}
|
|
200
198
|
body["serialNumber"] = serial_number
|
|
@@ -204,7 +202,7 @@ class AsyncTerminals:
|
|
|
204
202
|
validate_body("post", "/v1/terminals/unassign", body)
|
|
205
203
|
return await self._client.post(path, json=body, params=params) # type: ignore[return-value]
|
|
206
204
|
|
|
207
|
-
async def send_payment_request_to_terminal(self, merchant_tx_ref, amount, currency, **extra: object) -> _models.SendPaymentRequestToTerminalResponse:
|
|
205
|
+
async def send_payment_request_to_terminal(self, merchant_tx_ref, amount, currency,terminalId, **extra: object) -> _models.SendPaymentRequestToTerminalResponse:
|
|
208
206
|
"""
|
|
209
207
|
Send payment request to terminal
|
|
210
208
|
|
nomba/resources/transactions.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -39,7 +38,7 @@ class Transactions:
|
|
|
39
38
|
|
|
40
39
|
You can use this endpoint to fetch credit/debit transactions on the parent account.
|
|
41
40
|
"""
|
|
42
|
-
path =
|
|
41
|
+
path = "/v1/transactions/bank"
|
|
43
42
|
params: dict[str, object] = {}
|
|
44
43
|
if limit is not None:
|
|
45
44
|
params["limit"] = limit
|
|
@@ -125,7 +124,7 @@ class Transactions:
|
|
|
125
124
|
|
|
126
125
|
You can use this endpoint to fetch transactions on the parent account.
|
|
127
126
|
"""
|
|
128
|
-
path =
|
|
127
|
+
path = "/v1/transactions/accounts"
|
|
129
128
|
params: dict[str, object] = {}
|
|
130
129
|
if limit is not None:
|
|
131
130
|
params["limit"] = limit
|
|
@@ -154,7 +153,7 @@ class Transactions:
|
|
|
154
153
|
orderReference: Online checkout order reference
|
|
155
154
|
orderId: Online checkout order id
|
|
156
155
|
"""
|
|
157
|
-
path =
|
|
156
|
+
path = "/v1/transactions/accounts"
|
|
158
157
|
params: dict[str, object] = {}
|
|
159
158
|
if limit is not None:
|
|
160
159
|
params["limit"] = limit
|
|
@@ -211,7 +210,7 @@ class Transactions:
|
|
|
211
210
|
|
|
212
211
|
You can use this endpoint to fetch a single transaction on the parent account.
|
|
213
212
|
"""
|
|
214
|
-
path =
|
|
213
|
+
path = "/v1/transactions/accounts/single"
|
|
215
214
|
params: dict[str, object] = {}
|
|
216
215
|
if transaction_ref is not None:
|
|
217
216
|
params["transactionRef"] = transaction_ref
|
|
@@ -265,7 +264,7 @@ class AsyncTransactions:
|
|
|
265
264
|
|
|
266
265
|
You can use this endpoint to fetch credit/debit transactions on the parent account.
|
|
267
266
|
"""
|
|
268
|
-
path =
|
|
267
|
+
path = "/v1/transactions/bank"
|
|
269
268
|
params: dict[str, object] = {}
|
|
270
269
|
if limit is not None:
|
|
271
270
|
params["limit"] = limit
|
|
@@ -351,7 +350,7 @@ class AsyncTransactions:
|
|
|
351
350
|
|
|
352
351
|
You can use this endpoint to fetch transactions on the parent account.
|
|
353
352
|
"""
|
|
354
|
-
path =
|
|
353
|
+
path = "/v1/transactions/accounts"
|
|
355
354
|
params: dict[str, object] = {}
|
|
356
355
|
if limit is not None:
|
|
357
356
|
params["limit"] = limit
|
|
@@ -380,7 +379,7 @@ class AsyncTransactions:
|
|
|
380
379
|
orderReference: Online checkout order reference
|
|
381
380
|
orderId: Online checkout order id
|
|
382
381
|
"""
|
|
383
|
-
path =
|
|
382
|
+
path = "/v1/transactions/accounts"
|
|
384
383
|
params: dict[str, object] = {}
|
|
385
384
|
if limit is not None:
|
|
386
385
|
params["limit"] = limit
|
|
@@ -437,7 +436,7 @@ class AsyncTransactions:
|
|
|
437
436
|
|
|
438
437
|
You can use this endpoint to fetch a single transaction on the parent account.
|
|
439
438
|
"""
|
|
440
|
-
path =
|
|
439
|
+
path = "/v1/transactions/accounts/single"
|
|
441
440
|
params: dict[str, object] = {}
|
|
442
441
|
if transaction_ref is not None:
|
|
443
442
|
params["transactionRef"] = transaction_ref
|
nomba/resources/transfers.py
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -21,7 +20,7 @@ class Transfers:
|
|
|
21
20
|
|
|
22
21
|
You can use this endpoint to fetch all banks, their names and codes.
|
|
23
22
|
"""
|
|
24
|
-
path =
|
|
23
|
+
path = "/v1/transfers/banks"
|
|
25
24
|
params = None
|
|
26
25
|
return self._client.get(path, params=params) # type: ignore[return-value]
|
|
27
26
|
|
|
@@ -35,7 +34,7 @@ class Transfers:
|
|
|
35
34
|
accountNumber (required): The account number to be looked up.
|
|
36
35
|
bankCode (required): The bankCode of the bank the account number belongs to. This can be obtained from a call to `/v1/transfers/banks`
|
|
37
36
|
"""
|
|
38
|
-
path =
|
|
37
|
+
path = "/v1/transfers/bank/lookup"
|
|
39
38
|
params = None
|
|
40
39
|
body: dict[str, object] = {}
|
|
41
40
|
body["accountNumber"] = account_number
|
|
@@ -61,7 +60,7 @@ This is an idempotency key and must be unique per transaction.
|
|
|
61
60
|
senderName: Sender name
|
|
62
61
|
narration: The payment narration
|
|
63
62
|
"""
|
|
64
|
-
path =
|
|
63
|
+
path = "/v2/transfers/bank"
|
|
65
64
|
params = None
|
|
66
65
|
body: dict[str, object] = {}
|
|
67
66
|
body["amount"] = amount
|
|
@@ -125,7 +124,7 @@ This is an idempotency key and must be unique per transaction.
|
|
|
125
124
|
This is an idempotency key and must be unique per transaction.
|
|
126
125
|
narration: The payment narration
|
|
127
126
|
"""
|
|
128
|
-
path =
|
|
127
|
+
path = "/v2/transfers/wallet"
|
|
129
128
|
params = None
|
|
130
129
|
body: dict[str, object] = {}
|
|
131
130
|
body["amount"] = amount
|
|
@@ -177,7 +176,7 @@ class AsyncTransfers:
|
|
|
177
176
|
|
|
178
177
|
You can use this endpoint to fetch all banks, their names and codes.
|
|
179
178
|
"""
|
|
180
|
-
path =
|
|
179
|
+
path = "/v1/transfers/banks"
|
|
181
180
|
params = None
|
|
182
181
|
return await self._client.get(path, params=params) # type: ignore[return-value]
|
|
183
182
|
|
|
@@ -191,7 +190,7 @@ class AsyncTransfers:
|
|
|
191
190
|
accountNumber (required): The account number to be looked up.
|
|
192
191
|
bankCode (required): The bankCode of the bank the account number belongs to. This can be obtained from a call to `/v1/transfers/banks`
|
|
193
192
|
"""
|
|
194
|
-
path =
|
|
193
|
+
path = "/v1/transfers/bank/lookup"
|
|
195
194
|
params = None
|
|
196
195
|
body: dict[str, object] = {}
|
|
197
196
|
body["accountNumber"] = account_number
|
|
@@ -217,7 +216,7 @@ This is an idempotency key and must be unique per transaction.
|
|
|
217
216
|
senderName: Sender name
|
|
218
217
|
narration: The payment narration
|
|
219
218
|
"""
|
|
220
|
-
path =
|
|
219
|
+
path = "/v2/transfers/bank"
|
|
221
220
|
params = None
|
|
222
221
|
body: dict[str, object] = {}
|
|
223
222
|
body["amount"] = amount
|
|
@@ -281,7 +280,7 @@ This is an idempotency key and must be unique per transaction.
|
|
|
281
280
|
This is an idempotency key and must be unique per transaction.
|
|
282
281
|
narration: The payment narration
|
|
283
282
|
"""
|
|
284
|
-
path =
|
|
283
|
+
path = "/v2/transfers/wallet"
|
|
285
284
|
params = None
|
|
286
285
|
body: dict[str, object] = {}
|
|
287
286
|
body["amount"] = amount
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
# regenerate via scripts/generate_resources.py instead.
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any
|
|
6
5
|
|
|
7
6
|
from ..http import AsyncNombaClient, NombaClient
|
|
8
7
|
from ..validation import validate_body
|
|
@@ -28,7 +27,7 @@ class VirtualAccounts:
|
|
|
28
27
|
expiryDate: Account expiry date. Optional. ⚠️Be careful with this.
|
|
29
28
|
expectedAmount: Amount the account can receive. Optional.
|
|
30
29
|
"""
|
|
31
|
-
path =
|
|
30
|
+
path = "/v1/accounts/virtual"
|
|
32
31
|
params = None
|
|
33
32
|
body: dict[str, object] = {}
|
|
34
33
|
body["accountRef"] = account_ref
|
|
@@ -87,7 +86,7 @@ class VirtualAccounts:
|
|
|
87
86
|
expired: Whether the virtual account is expired or not
|
|
88
87
|
resourceAcquired: Whether the virtual account is in use or not
|
|
89
88
|
"""
|
|
90
|
-
path =
|
|
89
|
+
path = "/v1/accounts/virtual/list"
|
|
91
90
|
params: dict[str, object] = {}
|
|
92
91
|
if limit is not None:
|
|
93
92
|
params["limit"] = limit
|
|
@@ -182,7 +181,7 @@ class AsyncVirtualAccounts:
|
|
|
182
181
|
expiryDate: Account expiry date. Optional. ⚠️Be careful with this.
|
|
183
182
|
expectedAmount: Amount the account can receive. Optional.
|
|
184
183
|
"""
|
|
185
|
-
path =
|
|
184
|
+
path = "/v1/accounts/virtual"
|
|
186
185
|
params = None
|
|
187
186
|
body: dict[str, object] = {}
|
|
188
187
|
body["accountRef"] = account_ref
|
|
@@ -241,7 +240,7 @@ class AsyncVirtualAccounts:
|
|
|
241
240
|
expired: Whether the virtual account is expired or not
|
|
242
241
|
resourceAcquired: Whether the virtual account is in use or not
|
|
243
242
|
"""
|
|
244
|
-
path =
|
|
243
|
+
path = "/v1/accounts/virtual/list"
|
|
245
244
|
params: dict[str, object] = {}
|
|
246
245
|
if limit is not None:
|
|
247
246
|
params["limit"] = limit
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
nomba/__init__.py,sha256=6T_OY_8zdHFHOzYp9VCLBcJNaB3ZhuLiikAElboqjOk,941
|
|
2
|
+
nomba/client.py,sha256=TNJKjsEiZEpdKvM8C7qh_BWY-U5_q53YlXxWGNvGl4E,5470
|
|
3
|
+
nomba/concurrency.py,sha256=0wTRJ57uLR-rXaIEMfivSRr4qEKvZMu3j5EXgAyLKoo,1870
|
|
4
|
+
nomba/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
nomba/data/nomba_openapi.json,sha256=NcY8i4EWEa1TlY86ITn5VfEbP0_WW99OKlcGOET13VY,608148
|
|
6
|
+
nomba/exceptions.py,sha256=Dx6OASM-7bvzsejmVbw_Iy6PXhm09K6Cu52mxlOjVY8,1484
|
|
7
|
+
nomba/flows/__init__.py,sha256=v2yT_QfBLIzWRvhCiDXXELFMWFTf3ye_VkVlEGA2kb0,155
|
|
8
|
+
nomba/flows/card_payment.py,sha256=Z0eJeFYrvJ_Za_JWl4qxalhU9Q-s-3LjO318ShtbN_k,7512
|
|
9
|
+
nomba/http.py,sha256=z5I990U3zy9wyw5v8-pNXbj55Lj-MigXp35xRpkAe6g,14553
|
|
10
|
+
nomba/models.py,sha256=5R0Wya5au4nvpnn6bHcm-pQfVL97HgMGSdsXQ1IWcTc,26900
|
|
11
|
+
nomba/pagination.py,sha256=g5EagLomsdkN9YojCCnp55mm9IrFCfXBaU9500G_Ri8,3678
|
|
12
|
+
nomba/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
nomba/resources/__init__.py,sha256=i3E8PWRR1_rnXjmKApjSpnAIVvTEI7mLruGvR0HqAJM,1342
|
|
14
|
+
nomba/resources/accounts.py,sha256=whNAEEWLtTi6NsBM6CCkSYUVSI7vP6_W1UL3G-JQ5AU,20103
|
|
15
|
+
nomba/resources/airtime_data.py,sha256=VdGrIm-jdMtflFt17Ts7yVWwPqTDwSzruSHM4NrCEWU,12549
|
|
16
|
+
nomba/resources/betting.py,sha256=q_mR3aifDwzkZvDhvQFQF-bVwL5suoAwtoeWIJ2A5hg,8723
|
|
17
|
+
nomba/resources/cabletv.py,sha256=1olnHtg7qtry2eLRhhlZjhuipMgGiLz1S5_ZtqzgAJI,7401
|
|
18
|
+
nomba/resources/charge.py,sha256=fuUmCoETYTqQW3CFMJqeQKeLjNk_i_7SZ4UjhENaKAc,19549
|
|
19
|
+
nomba/resources/checkout.py,sha256=J1SM4UVr_UIKLknMZ7eVD92UnAmastxuTPeUknIfkW4,13845
|
|
20
|
+
nomba/resources/direct_debits.py,sha256=031W1AM4FlH3Sb4d9Aw4Nmfv7Tj4DJVkwHMW1b3COwQ,12007
|
|
21
|
+
nomba/resources/electricity.py,sha256=kpDwt9iRi-5ac5pRePJ7jd1bAQwUYQNbcQwrB3faGfA,8651
|
|
22
|
+
nomba/resources/global_collections.py,sha256=7AQ4yJxfW88z6LniH2WBW8VimTY4n4qEskoQqWkcbHE,6091
|
|
23
|
+
nomba/resources/global_payout.py,sha256=SmuM6j7vSrprMNSJIQ5dwINE4wOIIOYaZ4syFl8YpjY,21321
|
|
24
|
+
nomba/resources/terminals.py,sha256=zCWh38IPOzs2YFwIz5qLIrqHPtymEZEFPZSdEE-a4IQ,9942
|
|
25
|
+
nomba/resources/transactions.py,sha256=NtDdQtd7z-HmScnyGxrxqxalmK1Fcm7nTzmyDCv9194,22303
|
|
26
|
+
nomba/resources/transfers.py,sha256=z2SzWeJ6c0VZLI5tf1wZp5AY9cnFUuvmPOp0R3E_IBo,15005
|
|
27
|
+
nomba/resources/virtual_accounts.py,sha256=KByqCxPhdkN2vbhWyZViNJPn4KXuJgTqNQxhQ87LM_o,15311
|
|
28
|
+
nomba/validation.py,sha256=sAlddQ0TDtQO4AiTgNQRRRg9GN-fHArJEfCsulPpNyw,3489
|
|
29
|
+
nomba/webhooks.py,sha256=wNJwMqNgkrWmk8zR8Ein_ynlW0XkW6wwrDfhh4gB4Ic,7016
|
|
30
|
+
nomba_python-0.2.1.dist-info/licenses/LICENSE,sha256=5ddBfMvz-MOkk_vJtDwfqiDR8gchx1KRaetdXNL238s,1070
|
|
31
|
+
nomba_python-0.2.1.dist-info/WHEEL,sha256=8ZlpUMJ7mlDirmlHRhDirEx_nPnARrwDjeE92mlk68E,81
|
|
32
|
+
nomba_python-0.2.1.dist-info/METADATA,sha256=CmR4o5EX4gxxLpgs2cUUVQNeBJ6HXUh_YKQ9iPSXGCI,11808
|
|
33
|
+
nomba_python-0.2.1.dist-info/RECORD,,
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
nomba/__init__.py,sha256=6T_OY_8zdHFHOzYp9VCLBcJNaB3ZhuLiikAElboqjOk,941
|
|
2
|
-
nomba/client.py,sha256=TNJKjsEiZEpdKvM8C7qh_BWY-U5_q53YlXxWGNvGl4E,5470
|
|
3
|
-
nomba/concurrency.py,sha256=0wTRJ57uLR-rXaIEMfivSRr4qEKvZMu3j5EXgAyLKoo,1870
|
|
4
|
-
nomba/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
nomba/data/nomba_openapi.json,sha256=NcY8i4EWEa1TlY86ITn5VfEbP0_WW99OKlcGOET13VY,608148
|
|
6
|
-
nomba/exceptions.py,sha256=Dx6OASM-7bvzsejmVbw_Iy6PXhm09K6Cu52mxlOjVY8,1484
|
|
7
|
-
nomba/flows/__init__.py,sha256=v2yT_QfBLIzWRvhCiDXXELFMWFTf3ye_VkVlEGA2kb0,155
|
|
8
|
-
nomba/flows/card_payment.py,sha256=Z0eJeFYrvJ_Za_JWl4qxalhU9Q-s-3LjO318ShtbN_k,7512
|
|
9
|
-
nomba/http.py,sha256=DVuw6Btcnwlqq95FFE2x62Zd-lp9QtB8-qVvB9sFc6Q,14078
|
|
10
|
-
nomba/models.py,sha256=5R0Wya5au4nvpnn6bHcm-pQfVL97HgMGSdsXQ1IWcTc,26900
|
|
11
|
-
nomba/pagination.py,sha256=g5EagLomsdkN9YojCCnp55mm9IrFCfXBaU9500G_Ri8,3678
|
|
12
|
-
nomba/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
-
nomba/resources/__init__.py,sha256=i3E8PWRR1_rnXjmKApjSpnAIVvTEI7mLruGvR0HqAJM,1342
|
|
14
|
-
nomba/resources/accounts.py,sha256=PRUbs0kXmewAPlioJaPgodAP1VR1fK92_Wqdumcd95I,20138
|
|
15
|
-
nomba/resources/airtime_data.py,sha256=7YjebX03hNBT4iDojxXIxmqek6soQ1U2sGYYUkvrEvM,12576
|
|
16
|
-
nomba/resources/betting.py,sha256=GZ-vdrmylEtCz8w9KDT8XfV7SF0cRu8AoTiLA4Xn3Kw,8752
|
|
17
|
-
nomba/resources/cabletv.py,sha256=fI-Oas2Rk2d3j6UbbT6cE-cZgfsVBxBULWUPPG6Ha6k,7428
|
|
18
|
-
nomba/resources/charge.py,sha256=ZDuQc4ZHToNND93BPai_RzPHEqh9lTLz7qdrXz44cRA,19588
|
|
19
|
-
nomba/resources/checkout.py,sha256=Qjr4FhE083qIBKExJqevWR0E0wUmSJKcWbd16SS61Yk,13884
|
|
20
|
-
nomba/resources/direct_debits.py,sha256=roI0qHZSdznIsQmj1XFXN5ps7tZyoFsrooK5cI9lDqg,12038
|
|
21
|
-
nomba/resources/electricity.py,sha256=EfmotvlrwxY_PdblcOEsr5pzY3PGOuE7pwMgCmDkO90,8680
|
|
22
|
-
nomba/resources/global_collections.py,sha256=dtL2Tdpx1PdhRQ3vrgssXQWMSHtaYR4_3wGWrtBCeiU,6120
|
|
23
|
-
nomba/resources/global_payout.py,sha256=QPfZmsu9TDPz9HyTy2JjnQsxLUGfZnB03jWn8d7ze7A,21356
|
|
24
|
-
nomba/resources/terminals.py,sha256=4v3IpIDb8-LuHd_Cc85RgfORp5jEdyNmvN9kfMV2tiE,9948
|
|
25
|
-
nomba/resources/transactions.py,sha256=W3D3Jev9OvTc7_rJpSVf1xPDIw6h8CONRu7v7SQl9Yk,22334
|
|
26
|
-
nomba/resources/transfers.py,sha256=KE6VlvY9Nl79kpFshsoypVhHH_boHbwRcL6rrAJfblM,15036
|
|
27
|
-
nomba/resources/virtual_accounts.py,sha256=KmDjU0pYuR-q5GgxKr-wXG6NBKePMh59h4X3H7GOFRI,15338
|
|
28
|
-
nomba/validation.py,sha256=sAlddQ0TDtQO4AiTgNQRRRg9GN-fHArJEfCsulPpNyw,3489
|
|
29
|
-
nomba/webhooks.py,sha256=wNJwMqNgkrWmk8zR8Ein_ynlW0XkW6wwrDfhh4gB4Ic,7016
|
|
30
|
-
nomba_python-0.2.0.dist-info/licenses/LICENSE,sha256=5ddBfMvz-MOkk_vJtDwfqiDR8gchx1KRaetdXNL238s,1070
|
|
31
|
-
nomba_python-0.2.0.dist-info/WHEEL,sha256=8ZlpUMJ7mlDirmlHRhDirEx_nPnARrwDjeE92mlk68E,81
|
|
32
|
-
nomba_python-0.2.0.dist-info/METADATA,sha256=ufw3KrNDgQjoh2HVKC6bDCU3__nObGEC7Im2e6XZew0,11808
|
|
33
|
-
nomba_python-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|