Version history
0.2.0
Breaking cleanup: gather_limited / gather_limited_ordered dropped the inert return_exceptions flag; AsyncPaginator accepts non-Unpin futures and reuses in-flight requests. Also removed the unused serde_with dependency, extended the bundled OpenAPI spec to the current /v2/bill/* and sandbox routes, and fixed the pagination examples.
0.1.0
First crates.io release as nomba-rs v0.2.0 (cargo add nomba-rs, author Righteousness Ude, AGPL-3.0-only), aligned with the current Nomba API documentation. Deprecated routes removed, missing current routes added.
- Crate renamed
nomba→nomba-rs(import asnomba_rs); canonical AGPL-3.0 license text. - Bills vending moved to the current
POST /v2/bill/*routes (airtime topup, data, electricity, cable TV, betting — parent and sub-account). - Global Payout → added
convert_money,fetch_exchange_rates(from, to, region),fetch_payment_methods,list_institution_providers,fetch_accounts_sandbox,fetch_account_sandbox. - Auth → added
refresh_access_token(POST /v1/auth/token/refresh). - Online Checkout → added tokenized-card methods and
request_saved_cards_otp; fixedfetch_transaction_details(POST /v1/checkout/confirm-transaction-receipt),request_user_otp(+phone_number),submit_user_otp(POST /v1/checkout/user-card),fetch_user_saved_cards(+otp). - Transfers → added
fetch_bank_codesandbank_account_lookup; removed incorrect Global Payout duplicates. - Global Collections → corrected
initiate_mobile_money_inflowcontract (+idempotency_key); splitfetch_drc_inflow_providers_sandboxonto its own path. - Terminals →
send_payment_requestnow sendsmerchantTxRefper the live contract. - Fixed an async token-cache deadlock (
ensure_token); lighterasyncfeature.
0.1.0
Initial release of the Rust SDK, aligned with Nomba's published OpenAPI spec and the nomba-python SDK for full feature parity.
- 99 endpoints from Nomba's OpenAPI spec, across 15 resource groups.
- Auth via client-credentials
/v1/auth/token/issue, with transparent token caching andrevoke_access_tokenon/v1/auth/token/revoke. - Full Accounts surface: list/create sub accounts, parent & sub balances, suspend/reactivate, access control, and terminal assignment.
- Virtual Accounts on
/v1/accounts/virtual/*: create (parent or sub), fetch, filter, update, and expire. - Online Checkout covering orders, transaction management, refunds, card-detail/OTP flows, flash account numbers, and the saved-card OTP flow.
- Charge sequence on
/v1/charge/*: tokenized cards, bank lookup, card details, OTP, resend, and confirm. - Transfers: bank/wallet transfers from parent or sub accounts, authorize, exchange authorize, convert, and live exchange rates (
/v1/transfers/*). - Terminals: assign/unassign (parent or sub account) and send a payment request to a terminal.
- Airtime & Data vending with
product_idand network-aware data-plan lookup on/v1/bill/*. - CableTV lookup, subscribe, and product-plan fetch on
/v1/bill/cableTvProduct. - Electricity and Betting vending with provider/customer lookups.
- Direct Debits mandates on
/v1/direct-debits/*: create, list, status, update, and debit. - Global Collections and Global Payout (accounts, transfer/exchange authorize, inflows).
- Sync-first design with a parallel async client (
NombavsAsyncNomba) behindblocking/asyncfeatures. - Typed responses via
serde, withcargoinstall andcargo addsupport. - Cursor pagination helpers (
paginate/apaginategenerators). - Guided card-payment OTP/3DS flow (
CardPaymentFlow) with sync and async variants. - Webhook signature verification with replay-window protection.
- Retry-with-backoff on 429/5xx and bounded-concurrency helpers (
gather_limited/gather_limited_async). - Optional nested request-body validation against the bundled OpenAPI spec (
validationfeature).
0.1.1
Corrected endpoint paths and HTTP verbs across the SDK to match Nomba's published OpenAPI spec (and developer.nomba.com). The earlier 0.1.0 shipped several resources against the wrong path namespaces; this release realigns them.
- Charge → moved to
/v1/checkout/*(tokenized-card-payment, tokenized-card-data) and/v1/transfers/*(banks, bank/lookup).update_tokenized_cardis now aPOSTthat updates a card's email (the spec has noPUT). - Online Checkout →
/v1/checkout/ordersbecame the singular/v1/checkout/order; card/OTP/resend/flash/user flows flattened to/v1/checkout/checkout-card-detail,/v1/checkout/checkout-card-otp,/v1/checkout/resend-otp,/v1/checkout/get-checkout-kta/{orderReference},/v1/checkout/user-card/*,/v1/checkout/transaction/cancel, and/v1/checkout/confirm-transaction-receipt. - Transactions →
/v1/transactions/credit-debit/*→/v1/transactions/bank[/...];/v1/transactions/filter/*and/v1/transactions/parent→/v1/transactions/accounts[/...]; session requery →/v1/transactions/requery/{sessionId}. - Global Collections → singular namespace
/v1/global-collection/*. Removedfetch_payment_methodsandlist_institution_providers(no matching spec endpoint). - Accounts, Betting, CableTV, Electricity, Terminals, Transfers → remapped to their spec paths (e.g.
/v1/bill/betting/*,/v1/terminals/assign,/v2/transfers/*). - API reference (
resources.html) regenerated directly from the SDK source so docs cannot drift from code.