From 2d927e65eb3cd78c48939ee9778905bf13cee73d Mon Sep 17 00:00:00 2001 From: ahntoni-seerbit Date: Mon, 14 Sep 2026 10:20:50 +0100 Subject: [PATCH] Rollback to a69f8c1 --- docs collection.postman_collection_1.json | 2863 ---------- package-lock.json | 1988 +++---- package.json | 7 +- redoc-static.html | 751 +++ scripts/build.sh | 11 - scripts/modify-pm-collection.js | 23 +- scripts/normalize-mintlify-openapi.js | 143 - specs/external-api.yml | 6328 ++++++++++----------- 8 files changed, 4486 insertions(+), 7628 deletions(-) delete mode 100644 docs collection.postman_collection_1.json create mode 100644 redoc-static.html delete mode 100644 scripts/normalize-mintlify-openapi.js diff --git a/docs collection.postman_collection_1.json b/docs collection.postman_collection_1.json deleted file mode 100644 index df0284e..0000000 --- a/docs collection.postman_collection_1.json +++ /dev/null @@ -1,2863 +0,0 @@ -{ - "info": { - "_postman_id": "a79d34ce-b3cd-4be3-97de-021f995c5a63", - "name": "docs collection", - "description": "SeerBit payment API collection, rebuilt to match doc.seerbit.com only (checked 2026-08-25) per an explicit instruction that doc.seerbit.com is the single source of truth. A prior pass had pulled in several endpoints from https://seerbit.github.io/openapi/ (Order Checkout, Authorization/Pre-Authorization, Initiate Payment/MOMO/non-3DS charge/Validate, Tokenize a Card, Initiate Subscription, Get a Subscription by billingId) that could not be located anywhere on doc.seerbit.com itself — those have been removed. Two new sections doc.seerbit.com does document but the original collection never covered — Payout and Partners API — have been added.\n\n### Getting started\n1. **Get your keys.** From your SeerBit dashboard, grab your `SECRET_KEY` and `publicKey`.\n2. **Mint a Bearer token.** Run *Authentication → Generate Encrypted Key* once. It returns an `EncryptedSecKey` — paste that into the `BearerToken` collection variable. Every other request in this collection inherits Bearer auth from the collection root, so you only set this in one place.\n3. **Set your variables.** At minimum fill in `publicKey` and `BearerToken` under this collection's Variables tab (or in an environment). Individual folders need extra variables of their own (e.g. `pocketID` and `passKey` for Payout) — each request's description lists what it needs.\n4. **A few endpoints break the pattern:**\n - *Generate Encrypted Key* and the Partners API auth endpoints (*Partner Login*, *Request Password Reset*, *Reset Password*) are set to **No Auth** — you don't have a token yet when you call them.\n - Several Payout and Partners endpoints need Bearer auth **plus** a `Public-Key` header. That's called out per request below.\n\n### Variable Reference\nPostman's collection-level Variables tab (where you set `publicKey`, `BearerToken`, etc.) doesn't support per-variable descriptions — this table is the substitute, kept here so it's visible without opening each request.\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `BearerToken` | OAuth access token returned by Get Access Token (Authentication folder). Sent as `Authorization: Bearer {{BearerToken}}` on requests that require an authenticated merchant session. |\n| `SECRET_KEY` | Your merchant secret key from the SeerBit dashboard. Used together with your public key to generate the encrypted key for Get Access Token — never send this in a request body or expose it client-side. |\n| `paymentReference` | A unique reference you generate per transaction attempt (not returned by SeerBit). Used to initiate a payment and to look it up afterwards via Check Payment Status. |\n| `customerId` | SeerBit's identifier for a customer, typically returned after tokenizing a card or creating a customer-linked resource such as a subscription plan. |\n| `billingId` | Identifier for a specific billing/recurring-charge record under a subscription plan. |\n| `batchId` | Identifier for a batch operation, e.g. a bulk invoice or bulk payout batch, used to check the status of the whole batch. |\n| `accountNumber` | A bank account number — either a virtual account SeerBit provisioned for a customer, or (for Payout/Bank Account Payment) the destination/source account to move funds to or from. |\n| `reference` | A generic transaction or operation reference used to look up a specific record where no more specific reference variable applies. |\n| `paymentLinkId` | Identifier for a payment link created via the Payment Links folder, used to fetch, update, or delete that link. |\n| `authorizationCode` | Card authorization code returned after a successful tokenized charge, used to charge the same card again without re-entering card details. |\n| `planId` | Identifier for a recurring/subscription plan created via the Recurring & Subscriptions folder. |\n| `pocketID` | Identifier for a SeerBit Pocket (an internal sub-wallet under your merchant account), used to fund, debit, or transfer between pockets. |\n| `passKey` | A pocket-specific security key required to authorize certain Pocket operations, separate from your account-level public/secret keys. |\n| `payoutSignature` | HMAC signature you generate to authenticate a Payout request, proving it was signed with your secret key rather than tampered with in transit. |\n| `partnerId` | Identifier for a partner/sub-merchant account under the Partners API, used to manage that partner's businesses and settings. |\n| `businessId` | Identifier for a specific business/sub-account created under a partner via the Partners API. |\n| `partnerPassword` | Password used to authenticate as a partner when calling Partners API endpoints. |\n| `newPartnerPassword` | New password value when calling a Partners API endpoint that changes a partner's password. |\n| `destinationPocketID` | The receiving Pocket's identifier in a Pocket-to-Pocket transfer, as distinct from the source `pocketID`. |\n| `pocketEmail` | Email address associated with a Pocket, used for Pocket creation or lookup. |\n| `pocketPassword` | Password for a Pocket account, required to authorize sensitive Pocket operations. |\n| `newPocketPassword` | New password value when calling the Pocket password-change endpoint. |\n| `yourWebhookUrl` | Placeholder for the callback URL you register with SeerBit to receive inbound webhook events (see the Webhooks (reference) folder) — not an endpoint you call, just documents what SeerBit will POST to. |\n| `customerEmail` | Customer email address used to look up invoices via Get Invoice by Customer Email. |\n| `InvoiceNo` | An invoice's number (e.g. SBT-INV-000054), used to fetch, resend, or reference a specific invoice. |\n| `orderNo` | The order number you supplied when creating an invoice, used to look that invoice up again. |\n\n### Response shape\nMost successful responses follow `{ \"status\": \"SUCCESS\", \"data\": { \"code\": \"00\", ... }, \"message\": \"Successful\" }`. A non-\"00\" `code` inside a 200 response usually still means something went wrong downstream (e.g. with the processor) — check `code` and `message`, not just the HTTP status.\n\n### Known inconsistencies (kept, not silently fixed)\n- Invoicing uses `merchant.seerbitapi.com` (singular) while Subscriptions/Plans use `merchants.seerbitapi.com` (plural). Both are correct as documented — easy to mistype.\n- The Payout doc page's own worked examples for *Generate OTP* / *Generate Signature* show `\"actionItem\"`/`\"actionType\": \"APPROVE_DISBURSEMENT\"`, while this collection's saved bodies use `\"PAYOUT\"`. Flagged in both requests — confirm which your sandbox actually accepts before relying on it.\n\nAuth is centralised at the collection level (Bearer, using `BearerToken`); a few payout/partner endpoints additionally need a `Public-Key` header (added per-request).\n\n### 2026-09-02 update\n- Added the **Pocket** folder (9 endpoints) — fully documented on doc.seerbit.com but missing from the original collection. Separate from Payout: Pocket-to-Pocket transfers stay internal; Payout sends money to an external bank.\n- Added a **Webhooks (reference)** folder — not callable requests, but the 6 inbound event payloads SeerBit POSTs to your callback URL, plus the V1/V2 acknowledgment protocol.\n- Fixed *Check Payment Status* to `/api/v3/...` (was v2) and *Standard Checkout*'s split-payment field from a flat `splitCode` to the documented `splits` object — both corrected against doc.seerbit.com.\n- Refund and Disputes & Chargebacks (After Payment nav items) intentionally left out of this pass.\n\n### 2026-09-02 update (2)\n- Added the **Payment Methods** folder (5 endpoints: Card, Bank Account, Transfer, USSD, Mobile Money Payment) — the doc site's \"PAYMENT METHODS\" nav section, entirely missing from the collection before this pass. All POST to `/api/v2/payments/initiates` with a `paymentType` discriminator; this is a direct/inline (PCI-scoped) alternative to the hosted-redirect **Standard Checkout** flow.\n- **Bank Account Payment** has two details flagged as unconfirmed in its own request description (the `paymentType` value, and a possible separate `/payments/validate` endpoint for OTP) rather than guessed — verify with SeerBit before using it.\n- Checked `doc.seerbit.com/libraries-plugins/integrations`: it documents Firebase-based ISV/POS reconciliation integrations (Odoo, Sage, Salesforce, Microsoft Business Central), not distinct API endpoints — nothing to add to this collection from that page.\n\n### 2026-09-03 update\n- Attempted to add descriptions to every collection variable, but Postman's collection-level **Variables** tab has no Description column and the API rejects a `description` field on collection variables entirely — that's a Postman product limitation, not something fixable from here. Corrected below: added a **Variable Reference** table to this Overview page instead, which is the one place in Postman collection-level variable descriptions can actually render.\n- Split **Standard Checkout** into three requests in the same folder: **Normal Payment (No Split)** (the original request, split fields removed), **Easy Split (Split Code)** (references a pre-configured split rule via `splitCode`), and **Full Dynamic Split** (recipients/shares specified inline via a `splits` object). Previously these were conflated into one request.\n- Added 4 requests to **Invoicing**: **Re-send an Invoice**, **Get Invoice by Customer Email**, **Get Invoice by Invoice Number**, **Get Invoice by Order Number** — confirmed against SeerBit's API reference (apis.seerbit.com). Flagged a host discrepancy: these use `seerbitapi.com/invoice/...` (matching the existing Create Invoice request) while doc.seerbit.com's Invoicing page shows `merchant.seerbitapi.com` instead — not resolved, both are documented, verify which one is live for your account.", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "createdAt": "2026-09-02T17:09:40.000Z", - "updatedAt": "2026-09-03T16:27:59.000Z", - "lastUpdatedBy": "37518756", - "uid": "37518756-a79d34ce-b3cd-4be3-97de-021f995c5a63" - }, - "item": [ - { - "name": "Authentication", - "item": [ - { - "name": "Generate Encrypted Key", - "id": "dd7e8a41-8305-431c-a0eb-b642b2da9dcb", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"key\": \"{{SECRET_KEY}}.{{publicKey}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/encrypt/keys", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "encrypt", - "keys" - ] - }, - "description": "Exchanges your `SECRET_KEY` and `publicKey` for an `EncryptedSecKey`. Use that value as the `BearerToken` collection variable — it's the Bearer token for every other authenticated request here. Call this once per session, or whenever your key changes; it does not expire on a fixed schedule but should be re-generated if a request starts failing auth.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `key` | string | Yes | Your `SECRET_KEY` and `publicKey` joined with a period: `SECRET_KEY.publicKey` |\n\nThis endpoint is intentionally **No Auth** — you don't have a token yet when you call it." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:09.000Z", - "uid": "37518756-dd7e8a41-8305-431c-a0eb-b642b2da9dcb" - }, - { - "name": "Generate Hash", - "id": "83409f5c-b1f1-4c94-af9e-e0d0b94b615d", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"paymentReference\": \"sub_ref_001\",\n \"planId\": \"{{planId}}\",\n \"cardNumber\": \"5123450000000008\",\n \"expiryMonth\": \"01\",\n \"callbackUrl\": \"https://example.com/callback\",\n \"expiryYear\": \"28\",\n \"cvv\": \"000\",\n \"amount\": \"100\",\n \"currency\": \"NGN\",\n \"productDescription\": \"Subscription\",\n \"productId\": \"product222\",\n \"country\": \"NG\",\n \"startDate\": \"2026-09-01\",\n \"cardName\": \"Jane Doe\",\n \"billingCycle\": \"MONTHLY\",\n \"email\": \"customer@example.com\",\n \"mobileNumber\": \"08012345678\",\n \"billingPeriod\": \"1\",\n \"subscriptionAmount\": false\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/encrypt/hashs", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "encrypt", - "hashs" - ] - }, - "description": "Generic hash-generation endpoint — you pass the exact same body as the request you want a hash for, and SeerBit returns a hash you attach to that other call. The doc page's own worked example happens to use a subscription-creation payload (shown in this request's saved body); swap the body for whatever request you're actually hashing, keeping the same field names and types that request expects.\n\n**Not independently re-confirmed in this pass:** the doc page's response example describes the _downstream_ payment response (redirectUrl, paymentReference) rather than what this endpoint itself returns — no saved example response here; verify against a live sandbox call before relying on the shape." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T10:00:34.000Z", - "uid": "37518756-83409f5c-b1f1-4c94-af9e-e0d0b94b615d" - } - ], - "id": "43063e0b-aad4-4d8a-8b64-9bd9dd5b5e36", - "description": "Turns your dashboard `SECRET_KEY` and `publicKey` into the Bearer token every other request in this collection uses, and generates signed hashes for the handful of endpoints that require one. Always start here.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `SECRET_KEY` | Your merchant secret key from the SeerBit dashboard. Used together with your public key to generate the encrypted key for Get Access Token — never send this in a request body or expose it client-side. |\n| `planId` | Identifier for a recurring/subscription plan created via the Recurring & Subscriptions folder. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-02T17:09:41.000Z", - "uid": "37518756-43063e0b-aad4-4d8a-8b64-9bd9dd5b5e36" - }, - { - "name": "Standard Checkout", - "item": [ - { - "name": "Normal Payment (No Split)", - "id": "088dca44-bfcc-40bd-b689-4a7ab5421647", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference8\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"tokenize\": false,\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments" - ] - }, - "description": "Creates a transaction and returns a `redirectLink` to SeerBit's hosted checkout page — send the customer there to enter payment details and complete the charge. No card data touches your server with this flow, and the full amount settles to your main merchant account with no split.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key from the dashboard |\n| `amount` | string | Yes | Amount to charge |\n| `currency` | string | Yes | Transaction currency, e.g. `NGN`, `USD` |\n| `country` | string | Yes | Country the transaction originates from |\n| `paymentReference` | string | Yes | Unique reference you generate per transaction |\n| `email` | string | Yes | Customer email address |\n| `fullName` | string | Yes | Customer full name |\n| `callbackUrl` | string | Yes | Where SeerBit redirects the customer after payment |\n| `tokenize` | boolean | No | **Confirmed by SeerBit.** If `true`: (1) the checkout page on `redirectLink` only offers **Card** as a payment method — no bank transfer, USSD, or other channels; (2) SeerBit tokenizes the card, and the resulting `authorizationCode` is not in this endpoint's own response — it's returned when you call **Check Payment Status** afterward with the `paymentReference`. Use that `authorizationCode` with *Charge Authorization Token* / *Bulk Charge Token* to charge the same card again. Defaults to `false` if omitted. |\n\nThis is the baseline request with no split fields — see the sibling requests in this folder **Standard Checkout — Easy Split (Split Code)** and **Standard Checkout — Full Dynamic Split** for the two ways to divide a payment across sub-accounts.\n\nA `409` means `paymentReference` has already been used — generate a new one per attempt, don't retry with the same value." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T10:15:35.000Z", - "uid": "37518756-088dca44-bfcc-40bd-b689-4a7ab5421647" - }, - { - "name": "Standard Checkout — Easy Split (Split Code)", - "id": "79a129fe-920d-4668-b816-f6f1e70b92a2", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_split_code1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"tokenize\": false,\n \"callbackUrl\": \"https://example.com/callback\",\n \"splitCode\": \"SPLIT_RULE_CODE\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments" - ] - }, - "description": "Same Standard Checkout flow as **Normal Payment (No Split)**, plus a single `splitCode` field: the code of a split rule you pre-configure once (recipients, percentages/amounts, fee bearer) on the SeerBit dashboard, then reference by code at payment time. This is the \"easy\" option — you don't specify recipients or amounts inline; the rule already defines them.\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `splitCode` | string | Yes (for this variant) | Reference to a split rule created in advance on the SeerBit dashboard. |\n| `tokenize` | boolean | No | **Confirmed by SeerBit.** If `true`, the checkout page restricts payment to **Card only**, and the `authorizationCode` for the tokenized card comes back from **Check Payment Status**, not this endpoint's own response. Defaults to `false`. |\n| *(all other fields)* | | Yes | Same as **Normal Payment (No Split)** |\n\nUse this when your split recipients and their shares are fixed and known ahead of time. If you need to set the split's recipients or shares dynamically per transaction, use **Standard Checkout — Full Dynamic Split** instead.\n\n**Not fully confirmed**: doc.seerbit.com documents `splitCode` only as `\"Split rule Code\"` in an example body, without a dedicated page describing how split rules are created on the dashboard or the exact code format — check your dashboard's split-rule setup screen for the value to use here." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T10:15:40.000Z", - "uid": "37518756-79a129fe-920d-4668-b816-f6f1e70b92a2" - }, - { - "name": "Standard Checkout — Full Dynamic Split", - "id": "295a63a4-2816-4cbc-bb3f-5db7615e0371", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_dynamic1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"tokenize\": false,\n \"callbackUrl\": \"https://example.com/callback\",\n \"splits\": {\n \"type\": \"PERCENTAGE\",\n \"transactionFee\": \"PARENT_ACCOUNT\",\n \"items\": [\n {\n \"subAccountCode\": \"SUB_ACC_001\",\n \"value\": \"30\"\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments" - ] - }, - "description": "Same Standard Checkout flow as **Normal Payment (No Split)**, plus a `splits` object defining recipients and shares inline, at payment time — no pre-configured split rule needed. Use this when split details aren't known in advance (e.g. a marketplace computing a different vendor split per order).\n\n**`splits` object fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `type` | string | Yes | `FLAT` (fixed amount per recipient) or `PERCENTAGE` |\n| `transactionFee` | string | Yes | Who bears the transaction fee — `ALL_ACCOUNTS`, `PROPORTIONATE`, `SUB_ACCOUNT`, or `PARENT_ACCOUNT` |\n| `bearerSubAccountCode` | string | Only if `transactionFee` is `SUB_ACCOUNT` | Which sub-account bears the fee |\n| `items` | array | Yes | Each entry: `subAccountCode` and its `value` (amount or percentage, matching `type`) |\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `tokenize` | boolean | No | **Confirmed by SeerBit.** If `true`, the checkout page restricts payment to **Card only**, and the `authorizationCode` for the tokenized card comes back from **Check Payment Status**, not this endpoint's own response. Defaults to `false`. |\n| *(all other core fields)* | | Yes | Same as **Normal Payment (No Split)** |\n\nCompare **Standard Checkout — Easy Split (Split Code)**, which references a split rule you configured ahead of time instead of specifying recipients inline." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T10:15:46.000Z", - "uid": "37518756-295a63a4-2816-4cbc-bb3f-5db7615e0371" - } - ], - "id": "d911fd7b-b822-4f22-99a3-6382bdd8beef", - "description": "The simplest way to collect a payment: create a transaction and redirect the customer to SeerBit's hosted checkout page to complete it. No card data ever touches your servers.\n\nThree ways to use Standard Checkout, in this folder: **Normal Payment (No Split)** (full amount to your main account), **Easy Split (Split Code)** (pre-configured split rule referenced by code), and **Full Dynamic Split** (split recipients/shares specified inline per transaction).\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-02T17:09:41.000Z", - "uid": "37518756-d911fd7b-b822-4f22-99a3-6382bdd8beef" - }, - { - "name": "Virtual Accounts", - "item": [ - { - "name": "Create Virtual Account", - "id": "97ebdc2e-4890-4e75-8c56-58680727556f", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"fullName\": \"Jane Smith\",\n \"bankVerificationNumber\": \"\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"reference\": \"FIRST_VIRTUAL_17\",\n \"email\": \"js@emaildomain.com\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/virtual-accounts", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "virtual-accounts" - ] - }, - "description": "Issues a dedicated bank account number for one customer. Transfers into that account are reconciled back to the customer automatically — use *Get Payments* to see what's landed on it.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key |\n| `fullName` | string | Yes | Customer's full name, used as the account name |\n| `email` | string | Yes | Customer email |\n| `currency` | string | Yes | Currency code, e.g. `NGN` |\n| `country` | string | Yes | Country code, e.g. `NG` |\n| `reference` | string | Yes | Your unique reference for this virtual account — also used to fetch/delete it later |\n| `bankVerificationNumber` | string | No | Customer's BVN, for verification |\n\nResponse returns `walletName`, `bankName`, and `accountNumber` for the customer to pay into." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:25.000Z", - "uid": "37518756-97ebdc2e-4890-4e75-8c56-58680727556f" - }, - { - "name": "Get Virtual Account", - "id": "72654374-7cf1-4233-8e7a-732506cf534c", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/virtual-accounts/{{paymentReference}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "virtual-accounts", - "{{paymentReference}}" - ] - }, - "description": "Fetches details for one virtual account by the `reference` used to create it (passed here as `paymentReference`). Response includes `linkingReference`, `wallet`, `bankName`, and `accountNumber`." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:27.000Z", - "uid": "37518756-72654374-7cf1-4233-8e7a-732506cf534c" - }, - { - "name": "Delete Virtual Account", - "id": "09ca122f-156f-4795-96c3-29fb94160249", - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/virtual-accounts/{{reference}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "virtual-accounts", - "{{reference}}" - ] - }, - "description": "Deactivates a virtual account by its `reference`. On success, returns a confirmation message — \"Virtual account has been deleted\"." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:28.000Z", - "uid": "37518756-09ca122f-156f-4795-96c3-29fb94160249" - }, - { - "name": "Get Payments", - "id": "12883b22-7e30-4179-92b1-5b2d76b5a5eb", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/virtual-accounts/{{publicKey}}/{{accountNumber}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "virtual-accounts", - "{{publicKey}}", - "{{accountNumber}}" - ] - }, - "description": "Lists transactions that have landed on one virtual account, identified by `publicKey` and `accountNumber` in the path. Each entry includes `amount`, customer name, `paymentType`, `status`, settlement info, and `transferType: RESERVE_ACCOUNT`." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:30.000Z", - "uid": "37518756-12883b22-7e30-4179-92b1-5b2d76b5a5eb" - } - ], - "id": "cf48c66c-d748-4ede-bc29-fc0a78110526", - "description": "Issue a dedicated bank account number per customer so they can pay by direct bank transfer; funds landing on that account are reconciled back to the customer automatically.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `paymentReference` | A unique reference you generate per transaction attempt (not returned by SeerBit). Used to initiate a payment and to look it up afterwards via Check Payment Status. |\n| `accountNumber` | A bank account number — either a virtual account SeerBit provisioned for a customer, or (for Payout/Bank Account Payment) the destination/source account to move funds to or from. |\n| `reference` | A generic transaction or operation reference used to look up a specific record where no more specific reference variable applies. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T16:27:10.000Z", - "uid": "37518756-cf48c66c-d748-4ede-bc29-fc0a78110526" - }, - { - "name": "Payment Methods", - "item": [ - { - "name": "Card Payment", - "id": "9c621b9d-0182-4930-b5c7-7cdba14dca30", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{accessToken}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_card1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"paymentType\": \"CARD\",\n \"cardDetails\": {\n \"pan\": \"5060990580000217499\",\n \"expiryMonth\": \"03\",\n \"expiryYear\": \"2027\",\n \"cvv\": \"111\"\n },\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/initiates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "initiates" - ] - }, - "description": "Direct/inline card charge — you collect the card's PAN, expiry and CVV on your own form and POST them here, instead of redirecting the customer to SeerBit's hosted page (compare **Standard Checkout**, which never touches raw card data on your server). Because this endpoint receives raw card details, your integration is in PCI-DSS scope — SeerBit's hosted **Standard Checkout** flow is the lower-compliance-burden alternative most integrators should default to.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key |\n| `amount` | string | Yes | Amount to charge |\n| `currency` | string | Yes | e.g. `NGN` |\n| `country` | string | Yes | Country code |\n| `paymentReference` | string | Yes | Unique reference you generate |\n| `email` | string | Yes | Customer email |\n| `fullName` | string | Yes | Customer full name |\n| `paymentType` | string | Yes | `CARD` for this flow |\n| `cardDetails.pan` | string | Yes | Card number |\n| `cardDetails.expiryMonth` / `expiryYear` | string | Yes | Card expiry |\n| `cardDetails.cvv` | string | Yes | Card CVV |\n| `callbackUrl` | string | Yes | Where SeerBit sends the final result |\n\n**OTP step**: many card transactions come back requiring 3DS/OTP authentication. Per the Card Payment doc page, you complete this by POSTing again to this **same** `/api/v2/payments/initiates` URL with a body shaped like:\n```json\n{\n \"transaction\": {\n \"linkingreference\": \"\",\n \"otp\": \"\"\n }\n}\n```\nThen poll **Check Payment Status** (Payment Query folder) with `paymentReference` to confirm the final state." - }, - "response": [], - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T09:58:10.000Z", - "uid": "37518756-9c621b9d-0182-4930-b5c7-7cdba14dca30" - }, - { - "name": "Bank Account Payment", - "id": "5bee5f40-63be-4a9f-9702-83153ea4f5aa", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{accessToken}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_bank1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"paymentType\": \"**Not confirmed** — see description\",\n \"accountNumber\": \"0000000000\",\n \"bankCode\": \"058\",\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/initiates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "initiates" - ] - }, - "description": "Initiates a direct bank-account debit: the customer authorizes a charge straight from their bank account (via account number + bank code) rather than a card, USSD code, or transfer-in.\n\n**Not confirmed against doc.seerbit.com** — two details on the Bank Account Payment doc page could not be pinned down and are flagged rather than guessed:\n1. The exact `paymentType` value for this flow (unlike `CARD`/`USSD`/`TRANSFER`/`MOMO`, the doc page doesn't spell this one out explicitly) — placeholder left in the sample body above; check the dashboard/API response or contact SeerBit support to confirm before using this request.\n2. The doc page references a separate **`/payments/validate`** endpoint for the OTP/authorization step, but doesn't give its full URL, method, or body — this conflicts with the Card Payment page, which documents OTP validation as a second POST to this *same* `/api/v2/payments/initiates` URL with a `{\"transaction\": {\"linkingreference\":..., \"otp\":...}}` body. It's unclear whether Bank Account Payment genuinely uses a different endpoint or the doc page is just describing the same flow loosely.\n\n**Body fields** (`accountNumber` + `bankCode` identify the account to debit; other fields match Card Payment). Verify the `paymentType` value and validation step directly with SeerBit before relying on this request." - }, - "response": [], - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T09:58:15.000Z", - "uid": "37518756-5bee5f40-63be-4a9f-9702-83153ea4f5aa" - }, - { - "name": "Transfer", - "id": "92ed341c-428b-4c91-96bf-d3c2015dc32d", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{accessToken}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_transfer1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"paymentType\": \"TRANSFER\",\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/initiates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "initiates" - ] - }, - "description": "Initiates a bank-transfer payment: SeerBit returns a dynamic virtual account number for this transaction that the customer transfers the exact amount into from their own banking app; SeerBit matches the credit and confirms the transaction. This is distinct from the **Virtual Accounts** folder, which provisions a *persistent* account number for a customer across many transactions — this is a one-off, per-transaction account.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `paymentType` | string | Yes | `TRANSFER` |\n| (other fields) | | Yes | Same core fields as Card Payment |\n\nPoll **Check Payment Status** (Payment Query folder) with `paymentReference`, or listen for the `transaction` webhook, to detect when the transfer lands." - }, - "response": [], - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T09:58:19.000Z", - "uid": "37518756-92ed341c-428b-4c91-96bf-d3c2015dc32d" - }, - { - "name": "USSD Payment", - "id": "e4eb272e-ae33-485a-ac9d-b0e8e813b4d0", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{accessToken}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"payment_reference_ussd1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"paymentType\": \"USSD\",\n \"bankCode\": \"058\",\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/initiates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "initiates" - ] - }, - "description": "Initiates a USSD payment: SeerBit returns a USSD string (e.g. `*723*...#`) the customer dials on their phone from the bank account linked to `bankCode` to authorize the debit — no card or app needed.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `paymentType` | string | Yes | `USSD` |\n| `bankCode` | string | Yes | Bank's USSD routing code, e.g. `058` for GTBank |\n| (other fields) | | Yes | Same `publicKey`/`amount`/`currency`/`country`/`paymentReference`/`email`/`fullName`/`callbackUrl` as Card Payment |\n\nThe initial response includes the USSD code to display to the customer. Poll **Check Payment Status** (Payment Query folder) with `paymentReference` — there's no separate OTP step; authorization happens on the phone via the USSD session itself." - }, - "response": [], - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T09:58:20.000Z", - "uid": "37518756-e4eb272e-ae33-485a-ac9d-b0e8e813b4d0" - }, - { - "name": "Mobile Money Payment", - "id": "4c87fa9b-986d-4966-9575-d64487a91de3", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json" - }, - { - "key": "Authorization", - "value": "Bearer {{accessToken}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"currency\": \"GHS\",\n \"country\": \"GH\",\n \"paymentReference\": \"payment_reference_momo1\",\n \"email\": \"customer@example.com\",\n \"fullName\": \"Jane Doe\",\n \"paymentType\": \"MOMO\",\n \"mobileNumber\": \"233241234567\",\n \"network\": \"MTN\",\n \"callbackUrl\": \"https://example.com/callback\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/initiates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "initiates" - ] - }, - "description": "Initiates a mobile-money payment (e.g. MTN MoMo, AirtelTigo) — SeerBit sends a prompt to the customer's phone on the given `mobileNumber`/`network`, and the customer approves the debit directly on their handset. Used primarily for Ghana (`GHS`) and other African mobile-money markets.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `paymentType` | string | Yes | `MOMO` |\n| `mobileNumber` | string | Yes | Customer's mobile-money-linked phone number |\n| `network` | string | Yes | Mobile network operator, e.g. `MTN`, `AIRTELTIGO`, `VODAFONE` |\n| (other fields) | | Yes | Same core fields as Card Payment |\n\nPoll **Check Payment Status** (Payment Query folder) with `paymentReference` after the customer approves the prompt on their phone." - }, - "response": [], - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T09:58:28.000Z", - "uid": "37518756-4c87fa9b-986d-4966-9575-d64487a91de3" - } - ], - "id": "6f1a2b3c-4d5e-4f60-8a1b-2c3d4e5f6071", - "description": "Direct/inline payment flows via `POST /api/v2/payments/initiates` — you collect payment details on your own form/app and submit them here, differentiated by the `paymentType` field. This is a different integration model from **Standard Checkout** (`/api/v2/payments`), which redirects the customer to a SeerBit-hosted page and never exposes raw payment details to your server.\n\nDocumented on doc.seerbit.com's **PAYMENT METHODS** nav section, previously missing from this collection entirely. Card, USSD, Transfer and Mobile Money are grounded directly in their doc pages; **Bank Account Payment** has two unconfirmed details flagged in its own description — don't treat its sample body as final without checking with SeerBit first.\n\nAll five requests share the same PCI/compliance consideration as Card Payment: because you're handling raw payment credentials, prefer Standard Checkout unless you specifically need an inline experience.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |", - "createdAt": "2026-09-02T17:57:10.000Z", - "updatedAt": "2026-09-03T16:27:21.000Z", - "uid": "37518756-6f1a2b3c-4d5e-4f60-8a1b-2c3d4e5f6071" - }, - { - "name": "Payment Query", - "item": [ - { - "name": "Check Payment Status", - "id": "aa1ffea7-ff3f-477d-8ba4-c9a011de7151", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v3/payments/query/{{paymentReference}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v3", - "payments", - "query", - "{{paymentReference}}" - ] - }, - "description": "Looks up the current status of a transaction by its `paymentReference`. **Corrected to v3** — the doc.seerbit.com page for this actually documents `/api/v3/payments/query/{paymentReference}` (matching what *Get Card Authorization Code* already used), not v2 as this request previously had it. The v3 response includes fuller detail: status, amount, gateway message, masked card details, and customer info.\n\nUse this after Standard Checkout, Create Token, or any flow that returns a `paymentReference`, to confirm the final state rather than relying only on the initial response's `code`.\n\n**Tokenized Standard Checkout**: if the original Standard Checkout call had `tokenize: true`, this is where the `authorizationCode` for the saved card actually comes back — it is not in Standard Checkout's own response. Save it from here to use with *Charge Authorization Token* / *Bulk Charge Token*." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T10:15:48.000Z", - "uid": "37518756-aa1ffea7-ff3f-477d-8ba4-c9a011de7151" - } - ], - "id": "bc79f7ed-9699-4a7a-8563-6543dfdc038d", - "description": "Look up the current status of a transaction by its `paymentReference` after Standard Checkout, Tokenization, or any other flow that produces one.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `paymentReference` | A unique reference you generate per transaction attempt (not returned by SeerBit). Used to initiate a payment and to look it up afterwards via Check Payment Status. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T16:27:29.000Z", - "uid": "37518756-bc79f7ed-9699-4a7a-8563-6543dfdc038d" - }, - { - "name": "Invoicing", - "item": [ - { - "name": "Create Invoice", - "id": "65757022-4bcf-4466-afdb-a718d21d3ca7", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"orderNo\": \"333333221321\",\n \"dueDate\": \"2026-10-23\",\n \"currency\": \"NGN\",\n \"receiversName\": \"Jane Smith\",\n \"customerEmail\": \"janesmith@emaildomain.com\",\n \"invoiceItems\": [\n {\n \"itemName\": \"Bluetooth Pods\",\n \"quantity\": 1,\n \"rate\": 25000,\n \"tax\": 7.5\n },\n {\n \"itemName\": \"Quest 10\",\n \"quantity\": 4,\n \"rate\": 100000,\n \"tax\": 7.5\n }\n ]\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://merchant.seerbitapi.com/invoice/create", - "protocol": "https", - "host": [ - "merchant", - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "create" - ] - }, - "description": "Creates and sends an itemised invoice to a customer by email, without you building a checkout flow. Source: doc.seerbit.com/online-payment/payment-features/invoicing, cross-checked with the original collection (the doc page's own code samples only show empty placeholder URLs, so the exact host/path is carried over from the original working collection, not independently re-confirmed).\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key |\n| `orderNo` | string | Yes | Unique order identifier |\n| `dueDate` | string | Yes | Invoice due date |\n| `currency` | string | Yes | Currency code, e.g. `NGN` |\n| `receiversName` | string | Yes | Customer name shown on the invoice |\n| `customerEmail` | string | Yes | Where the invoice is sent |\n| `invoiceItems` | array | Yes | Line items, each with `itemName`, `quantity`, `rate`, `tax` (tax as a percentage) |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:53.000Z", - "uid": "37518756-65757022-4bcf-4466-afdb-a718d21d3ca7" - }, - { - "name": "Bulk Invoice Requests", - "id": "39ab3068-2fab-4787-b257-1ed4dc909020", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"orderNo\": \"AZPOP12929322\",\n \"dueDate\": \"2026-03-19\",\n \"currency\": \"NGN\",\n \"customerEmail\": \"testtechblazer1@mailinator.com\",\n \"invoiceItems\": [\n {\n \"itemName\": \"Air Pod 2\",\n \"quantity\": 1,\n \"rate\": 5,\n \"tax\": 1.5\n },\n {\n \"itemName\": \"Quest 1\",\n \"quantity\": 4,\n \"rate\": 10,\n \"tax\": 2.5\n },\n {\n \"itemName\": \"Earpod\",\n \"quantity\": 1,\n \"rate\": 100,\n \"tax\": 0.5\n }\n ]\n },\n {\n \"orderNo\": \"AZPOP12929323\",\n \"dueDate\": \"2026-03-28\",\n \"currency\": \"NGN\",\n \"receiversName\": \"Frank John\",\n \"customerEmail\": \"testtechblazer2@mailinator.com\",\n \"invoiceItems\": [\n {\n \"itemName\": \"Power Bulb\",\n \"quantity\": 10,\n \"rate\": 5,\n \"tax\": 0.5\n }\n ]\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://merchant.seerbitapi.com/invoice/{{publicKey}}/bulk-requests", - "protocol": "https", - "host": [ - "merchant", - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "{{publicKey}}", - "bulk-requests" - ] - }, - "description": "Same as *Create Invoice*, but accepts a JSON array to send multiple invoices in one call. Same sourcing caveat as Create Invoice — host/path carried over from the original collection, not independently re-confirmed against a doc.seerbit.com code sample.\n\n**Body:** array of invoice objects, each shaped like *Create Invoice*'s body (`receiversName` is optional per the saved example — the other fields are required)." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:58.000Z", - "uid": "37518756-39ab3068-2fab-4787-b257-1ed4dc909020" - }, - { - "name": "Re-send an Invoice", - "id": "eeefb9e6-6cc6-41ed-945e-ef506c8f43e7", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{BearerToken}}", - "description": "Bearer token from Get Access Token." - } - ], - "url": { - "raw": "https://seerbitapi.com/invoice/{{publicKey}}/send/{{InvoiceNo}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "{{publicKey}}", - "send", - "{{InvoiceNo}}" - ] - }, - "description": "Re-sends an existing invoice (identified by `InvoiceNo`) to its customer by email — use this when the original invoice email didn't arrive or needs to go out again, rather than creating a duplicate invoice with Create Invoice.\n\n**Path parameters**\n\n| Param | Description |\n|---|---|\n| `publicKey` | Merchant public key |\n| `InvoiceNo` | The invoice's number, e.g. `SBT-INV-000054`, from Create Invoice's response |\n\nReturns a `code`/`payload` confirmation; it doesn't return the invoice body again." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T09:56:01.000Z", - "uid": "37518756-eeefb9e6-6cc6-41ed-945e-ef506c8f43e7" - }, - { - "name": "Get Invoice by Customer Email", - "id": "339aa7bd-61cf-480e-9f8d-b589dd9d10be", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{BearerToken}}", - "description": "Bearer token from Get Access Token." - } - ], - "url": { - "raw": "https://seerbitapi.com/invoice/{{publicKey}}/customer/{{customerEmail}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "{{publicKey}}", - "customer", - "{{customerEmail}}" - ] - }, - "description": "Looks up invoice(s) associated with a given customer email address — useful when you know who the invoice was billed to but not its invoice or order number.\n\n**Path parameters**\n\n| Param | Description |\n|---|---|\n| `publicKey` | Merchant public key |\n| `customerEmail` | The customer's email address the invoice was billed to |\n\nAdd a `customerEmail` collection variable with the address you're looking up, or replace the path segment directly." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T09:56:03.000Z", - "uid": "37518756-339aa7bd-61cf-480e-9f8d-b589dd9d10be" - }, - { - "name": "Get Invoice by Invoice Number", - "id": "cbd5a247-e9f4-49a4-9e3f-7665d02b5278", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{BearerToken}}", - "description": "Bearer token from Get Access Token." - } - ], - "url": { - "raw": "https://seerbitapi.com/invoice/{{publicKey}}/{{InvoiceNo}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "{{publicKey}}", - "{{InvoiceNo}}" - ] - }, - "description": "Fetches a single invoice's full detail — including its line items (`invoiceItems`) — by `InvoiceNo`.\n\n**Path parameters**\n\n| Param | Description |\n|---|---|\n| `publicKey` | Merchant public key |\n| `InvoiceNo` | The invoice's number, e.g. `SBT-INV-000054` |\n\nResponse includes `status` (e.g. `DRAFT`), `totalAmount`, `dueDate`, `currency`, and the itemized `invoiceItems` array — unlike **Get Invoice by orderNo**, which returns a summary without line items." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T09:56:06.000Z", - "uid": "37518756-cbd5a247-e9f4-49a4-9e3f-7665d02b5278" - }, - { - "name": "Get Invoice by Order Number", - "id": "d58d8306-c878-406b-849b-4e93329bfd45", - "request": { - "method": "GET", - "header": [ - { - "key": "Authorization", - "value": "Bearer {{BearerToken}}", - "description": "Bearer token from Get Access Token." - } - ], - "url": { - "raw": "https://seerbitapi.com/invoice/{{publicKey}}/order/{{orderNo}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "invoice", - "{{publicKey}}", - "order", - "{{orderNo}}" - ] - }, - "description": "Looks up an invoice by the `orderNo` you supplied when creating it via Create Invoice — useful when your own system tracks orders and you don't have SeerBit's `InvoiceNo` on hand.\n\n**Path parameters**\n\n| Param | Description |\n|---|---|\n| `publicKey` | Merchant public key |\n| `orderNo` | The order number you passed to Create Invoice |\n\nReturns a summary (no itemized `invoiceItems` array) — use **Get Invoice by Invoice Number** with the `invoiceNo` from this response if you need line-item detail." - }, - "response": [], - "createdAt": "2026-09-03T08:03:22.000Z", - "updatedAt": "2026-09-03T09:56:08.000Z", - "uid": "37518756-d58d8306-c878-406b-849b-4e93329bfd45" - } - ], - "id": "6918908c-5d3a-46c7-b28f-a01dd0b9cdf5", - "description": "Generate and send itemised invoices to customers, either one at a time or in bulk, without building a checkout flow yourself.\n\nAdded **Re-send an Invoice**, **Get Invoice by Customer Email**, **Get Invoice by Invoice Number**, and **Get Invoice by Order Number** — all confirmed via SeerBit's API reference (apis.seerbit.com), previously missing from this collection. Note the base host here is `seerbitapi.com/invoice/...`, matching Create Invoice already in this folder; a separate doc.seerbit.com page shows these under `merchant.seerbitapi.com/invoice/...` instead — flagging the discrepancy rather than guessing which is current.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `BearerToken` | OAuth access token returned by Get Access Token (Authentication folder). Sent as `Authorization: Bearer {{BearerToken}}` on requests that require an authenticated merchant session. |\n| `customerEmail` | Customer email address used to look up invoices via Get Invoice by Customer Email. |\n| `InvoiceNo` | An invoice's number (e.g. SBT-INV-000054), used to fetch, resend, or reference a specific invoice. |\n| `orderNo` | The order number you supplied when creating an invoice, used to look that invoice up again. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T16:27:39.000Z", - "uid": "37518756-6918908c-5d3a-46c7-b28f-a01dd0b9cdf5" - }, - { - "name": "Tokenization", - "item": [ - { - "name": "Create Token", - "id": "ddcd0daf-3c26-4360-aa75-189bcce28954", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"50\",\n \"fullName\": \"Jane Smith\",\n \"mobileNumber\": \"03447522256\",\n \"redirectUrl\": \"http://example.com\",\n \"currency\": \"NGN\",\n \"country\": \"NG\",\n \"paymentReference\": \"204g4de74a7ib0j18dg6bi521aiaejf4\",\n \"email\": \"janesmith@seerbit.com\",\n \"paymentType\": \"CARD\",\n \"cardNumber\": \"512348984984988883\",\n \"expiryMonth\": \"01\",\n \"expiryYear\": \"25\",\n \"cvv\": \"000\",\n \"pin\": \"2222\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/create-token", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "create-token" - ] - }, - "description": "Charges a card for the first time **and** saves it, returning card details you can later exchange for an `authorizationCode` (via *Get Card Authorization Code*) to charge the same card again without re-collecting details. Requires the customer to complete 3DS/OTP authentication on `redirectUrl`.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key |\n| `amount` | string | Yes | Charge amount — minimum is currency-dependent (e.g. NGN 50, GHS 1, KES 1, USD 0.50) |\n| `fullName` | string | Yes | Cardholder's name |\n| `mobileNumber` | string | Yes | Customer phone number |\n| `email` | string | Yes | Customer email |\n| `currency` | string | Yes | Transaction currency |\n| `country` | string | Yes | Country of the transaction |\n| `paymentType` | string | Yes | Must be `\"CARD\"` |\n| `cardNumber` | string | Yes | Full card number |\n| `expiryMonth` | string | Yes | Two-digit expiry month (`01`–`12`) |\n| `expiryYear` | string | Yes | Card expiry year |\n| `cvv` | string | Yes | Card security code |\n| `pin` | string | Yes | Card PIN (required by some card schemes/issuers) |\n| `redirectUrl` | string | Yes | Where the customer lands after completing 3DS/OTP authentication |\n| `paymentReference` | string | Yes | Unique reference you generate per transaction |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:34.000Z", - "uid": "37518756-ddcd0daf-3c26-4360-aa75-189bcce28954" - }, - { - "name": "Get Card Authorization Code", - "id": "1c6b441b-adc0-4b01-b109-ad60cf0a6d34", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v3/payments/query/{{paymentReference}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v3", - "payments", - "query", - "{{paymentReference}}" - ] - }, - "description": "Returns authorizationCode, customerId and maskedPan for a tokenized transaction. Note this is v3, unlike the v2 Payment Query endpoint.\n\n**Response fields to read**\n\n| Field | Description |\n|---|---|\n| `authorizationCode` | Token to pass into *Charge Authorization Token* / *Bulk Charge Token* for future charges |\n| `customerId` | SeerBit's identifier for this customer, reusable across subscriptions |\n| `maskedPan` | Redacted card number for display, e.g. `5123-40xx-xxxx-0008` |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:41.000Z", - "uid": "37518756-1c6b441b-adc0-4b01-b109-ad60cf0a6d34" - }, - { - "name": "Charge Authorization Token", - "id": "60c45341-68d5-4be7-be66-dc961cb4bb64", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"paymentReference\": \"charge_token_ref_001\",\n \"authorizationCode\": \"{{authorizationCode}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/charge-token", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "charge-token" - ] - }, - "description": "Charges a previously tokenized card using its `authorizationCode`, without asking the customer for card details again. Use this for one-off repeat charges; for scheduled recurring billing, use *Charge Subscription* instead.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `publicKey` | string | Yes | Merchant public key |\n| `amount` | string | Yes | Amount to charge |\n| `paymentReference` | string | Yes | New, unique reference for this charge |\n| `authorizationCode` | string | Yes | From *Get Card Authorization Code* |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:43.000Z", - "uid": "37518756-60c45341-68d5-4be7-be66-dc961cb4bb64" - }, - { - "name": "Bulk Charge Token", - "id": "8e23a2e1-54a2-4b58-8f10-0ec534aef677", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"5000.00\",\n \"paymentReference\": \"bulk_ref_001\",\n \"authorizationCode\": \"{{authorizationCode}}\"\n },\n {\n \"publicKey\": \"{{publicKey}}\",\n \"amount\": \"2500.00\",\n \"paymentReference\": \"bulk_ref_002\",\n \"authorizationCode\": \"{{authorizationCode}}\"\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/bulk-tokenize-charge", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "bulk-tokenize-charge" - ] - }, - "description": "Same as *Charge Authorization Token*, but accepts a JSON array so you can charge many tokenized cards in one call. Each array entry needs its own unique `paymentReference`. Returns a `batchId` — poll *Query Bulk Charge* with it to see per-entry results, since a bulk call can partially succeed.\n\n**Body:** array of objects, each with the same fields as *Charge Authorization Token* (`publicKey`, `amount`, `paymentReference`, `authorizationCode`)." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:46.000Z", - "uid": "37518756-8e23a2e1-54a2-4b58-8f10-0ec534aef677" - }, - { - "name": "Query Bulk Charge", - "id": "e7550129-1f52-49b7-a5de-9d59f7c21305", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/payments/bulk-tokenize-charge-search?batchId={{batchId}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "payments", - "bulk-tokenize-charge-search" - ], - "query": [ - { - "key": "batchId", - "value": "{{batchId}}" - } - ] - }, - "description": "Looks up the outcome of a *Bulk Charge Token* batch by `batchId`. Returns paginated per-entry results (authorization codes, status codes, card details, amounts) — check each entry's own status rather than assuming the whole batch succeeded or failed together." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:55:47.000Z", - "uid": "37518756-e7550129-1f52-49b7-a5de-9d59f7c21305" - } - ], - "id": "7fc316ef-5221-4fcb-970b-6984f3f49249", - "description": "Save a customer's card on first charge (with 3DS/OTP authentication) and reuse the resulting `authorizationCode` to charge them again — singly or in bulk — without asking for card details twice.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `paymentReference` | A unique reference you generate per transaction attempt (not returned by SeerBit). Used to initiate a payment and to look it up afterwards via Check Payment Status. |\n| `batchId` | Identifier for a batch operation, e.g. a bulk invoice or bulk payout batch, used to check the status of the whole batch. |\n| `authorizationCode` | Card authorization code returned after a successful tokenized charge, used to charge the same card again without re-entering card details. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-02T17:09:41.000Z", - "uid": "37518756-7fc316ef-5221-4fcb-970b-6984f3f49249" - }, - { - "name": "Recurring & Subscriptions", - "item": [ - { - "name": "Create Plan", - "id": "a06a65d2-b9ee-41c6-bc04-ea9eefb50e7e", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"productId\": \"product222\",\n \"productDescription\": \"\",\n \"amount\": \"100\",\n \"billingCycle\": \"HOURLY\",\n \"limit\": 5,\n \"publicKey\": \"{{publicKey}}\",\n \"country\": \"NG\",\n \"currency\": \"NGN\",\n \"allowPartialDebit\": false\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://merchants.seerbitapi.com/api/v1/recurrent/plan/create", - "protocol": "https", - "host": [ - "merchants", - "seerbitapi", - "com" - ], - "path": [ - "api", - "v1", - "recurrent", - "plan", - "create" - ] - }, - "description": "Defines a recurring billing plan (amount + cadence + how many cycles to run). Once created, subscribe a tokenized card to it and SeerBit charges automatically on schedule. Host is `merchants.seerbitapi.com` (plural) — a documented inconsistency vs. the `merchant.seerbitapi.com` (singular) invoicing host, easy to mistype.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `productId` | string | Yes | Plan name/identifier |\n| `productDescription` | string | Yes | Description of the plan |\n| `amount` | string | Yes | Amount charged per cycle |\n| `billingCycle` | string | Yes | `HOURLY`, `DAILY`, `WEEKLY`, `MONTHLY`, or `ANNUALLY` |\n| `limit` | integer | Yes | Maximum number of billing cycles before the plan stops |\n| `publicKey` | string | Yes | Merchant public key |\n| `country` | string | Yes | Country code, e.g. `NG` |\n| `currency` | string | Yes | Currency code, e.g. `NGN` |\n| `allowPartialDebit` | boolean | Yes | Whether to charge whatever's available if the customer has insufficient funds for the full amount |\n\nResponse includes `planId`, `payUrl`, and `status: \"ACTIVE\"` — save `planId` for future reference." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:37.000Z", - "uid": "37518756-a06a65d2-b9ee-41c6-bc04-ea9eefb50e7e" - }, - { - "name": "Get Merchant Subscriptions", - "id": "58e66f22-b8d2-4ff4-8fa5-dae6a9a390ae", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/recurring/publicKey/{{publicKey}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "recurring", - "publicKey", - "{{publicKey}}" - ] - }, - "description": "Lists every subscription under this `publicKey`, with `amount`, `customerId`, `cardName`, `cardNumber` (masked), `plan`, `status`, `billingId`, `authorizationCode`, `startDate`, and `createdAt` per entry." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:39.000Z", - "uid": "37518756-58e66f22-b8d2-4ff4-8fa5-dae6a9a390ae" - }, - { - "name": "Charge Subscription", - "id": "26f07f68-5690-4d61-9108-a7e8f444ab3d", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"amount\": \"100\",\n \"publicKey\": \"{{publicKey}}\",\n \"email\": \"customer@example.com\",\n \"authorizationCode\": \"{{authorizationCode}}\",\n \"paymentReference\": \"sub_charge_ref_001\",\n \"currency\": \"NGN\",\n \"allowPartialDebit\": false\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/recurring/charge", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "recurring", - "charge" - ] - }, - "description": "Manually triggers a charge against an existing subscription's tokenized card, outside the automatic billing schedule (e.g. to bill immediately rather than wait for the next cycle).\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `amount` | string | Yes | Amount to charge |\n| `publicKey` | string | Yes | Merchant public key |\n| `email` | string | Yes | Customer email |\n| `authorizationCode` | string | Yes | From the customer's completed subscription |\n| `paymentReference` | string | Yes | New, unique reference for this charge |\n| `currency` | string | Yes | Currency code |\n| `allowPartialDebit` | string | No | Whether to allow a partial charge on insufficient funds |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:42.000Z", - "uid": "37518756-26f07f68-5690-4d61-9108-a7e8f444ab3d" - }, - { - "name": "Get Customer Subscription", - "id": "7029b82d-e124-4bc9-a5bf-e3db44eda499", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://seerbitapi.com/api/v2/recurring/{{publicKey}}/customerId/{{customerId}}", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "recurring", - "{{publicKey}}", - "customerId", - "{{customerId}}" - ] - }, - "description": "Lists the subscriptions belonging to one customer (`customerId`) under this `publicKey` — a customer can have more than one active plan." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:43.000Z", - "uid": "37518756-7029b82d-e124-4bc9-a5bf-e3db44eda499" - }, - { - "name": "Update Customer Subscription", - "id": "41e0186d-bc1d-4af7-b087-fc0a4109301e", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"billingId\": \"{{billingId}}\",\n \"publicKey\": \"{{publicKey}}\",\n \"status\": \"ACTIVE\",\n \"amount\": \"100\",\n \"currency\": \"NGN\",\n \"country\": \"NG\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://seerbitapi.com/api/v2/recurring/updates", - "protocol": "https", - "host": [ - "seerbitapi", - "com" - ], - "path": [ - "api", - "v2", - "recurring", - "updates" - ] - }, - "description": "Changes an existing subscription's status or terms, identified by `billingId`.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `billingId` | string | Yes | Identifies the subscription being updated |\n| `publicKey` | string | Yes | Merchant public key |\n| `currency` | string | Yes | Currency code |\n| `country` | string | Yes | Country code |\n| `amount` | string | No | New charge amount |\n| `status` | string | No | `ACTIVE` or `INACTIVE` — set to `INACTIVE` to cancel future billing |\n| `mobileNumber` | string | No | Update the customer's phone number on file |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:46.000Z", - "uid": "37518756-41e0186d-bc1d-4af7-b087-fc0a4109301e" - } - ], - "id": "734dfd53-aabb-44fb-86e5-86827cc9898e", - "description": "Define a billing plan, subscribe a tokenized card to it, and let SeerBit charge the customer on a schedule (hourly through annually) until the plan's charge limit or the customer cancels.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `customerId` | SeerBit's identifier for a customer, typically returned after tokenizing a card or creating a customer-linked resource such as a subscription plan. |\n| `billingId` | Identifier for a specific billing/recurring-charge record under a subscription plan. |\n| `authorizationCode` | Card authorization code returned after a successful tokenized charge, used to charge the same card again without re-entering card details. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T16:27:48.000Z", - "uid": "37518756-734dfd53-aabb-44fb-86e5-86827cc9898e" - }, - { - "name": "Payment Links", - "item": [ - { - "name": "Create Payment Link", - "id": "ac6ff2d9-7bbc-44dc-a53d-42bc25a567ed", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"status\": \"ACTIVE\",\n \"paymentLinkName\": \"testing out\",\n \"description\": \"Give out donations\",\n \"currency\": \"NGN\",\n \"successMessage\": \"Thank you for your payment\",\n \"publicKey\": \"{{publicKey}}\",\n \"customizationName\": \"dot dty it\",\n \"paymentFrequency\": \"ONE_TIME\",\n \"paymentReference\": \"\",\n \"email\": \"js@emaildomain.com\",\n \"requiredFields\": {\n \"address\": true,\n \"amount\": true,\n \"customerName\": true,\n \"mobileNumber\": true,\n \"invoiceNumber\": false\n },\n \"additionalData\": \"Customer Email: js@mailinator.com\",\n \"linkExpirable\": false,\n \"expiryDate\": \"\",\n \"oneTime\": false\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://paymentlink.seerbitapi.com/paymentlink/v2/payLinks/api", - "protocol": "https", - "host": [ - "paymentlink", - "seerbitapi", - "com" - ], - "path": [ - "paymentlink", - "v2", - "payLinks", - "api" - ] - }, - "description": "Creates a hosted, shareable payment URL — send it directly to a customer instead of building a checkout flow. Supports one-time links and recurring links.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `status` | string | Yes | `ACTIVE` or `INACTIVE` |\n| `paymentLinkName` | string | Yes | Internal name for the link |\n| `description` | string | Yes | Shown to the customer on the payment page |\n| `currency` | string | Yes | Currency code, e.g. `NGN` |\n| `publicKey` | string | Yes | Merchant public key |\n| `paymentFrequency` | string | Yes | `ONE_TIME` or `RECURRENT` |\n| `requiredFields` | object | Yes | Which customer fields the payer must fill in: `address`, `amount`, `customerName`, `mobileNumber`, `invoiceNumber` (each boolean) |\n| `email` | string | No | Notification email |\n| `successMessage` | string | No | Shown after a successful payment |\n| `customizationName` | string | No | Branding/customization preset |\n| `additionalData` | string | No | Free-text metadata attached to the link |\n| `linkExpirable` | boolean | No | Whether the link expires |\n| `expiryDate` | string | No | Expiry date, required if `linkExpirable` is true |\n| `oneTime` | boolean | No | Whether the link is invalidated after first use |\n\nResponse returns `paymentLinkUrl` and `paymentLinkId` — save the latter, it's needed to update or delete the link later." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:13.000Z", - "uid": "37518756-ac6ff2d9-7bbc-44dc-a53d-42bc25a567ed" - }, - { - "name": "Get Merchant Payment Links", - "id": "1d605690-3bf5-4e5f-b3a4-cf50c571627b", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://paymentlink.seerbitapi.com/paymentlink/v2/payLinks/api/{{publicKey}}", - "protocol": "https", - "host": [ - "paymentlink", - "seerbitapi", - "com" - ], - "path": [ - "paymentlink", - "v2", - "payLinks", - "api", - "{{publicKey}}" - ] - }, - "description": "Lists every payment link created under this `publicKey`, with their current status, configuration, and timestamps. Use this to find a `paymentLinkId` if you didn't save it when creating the link." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:19.000Z", - "uid": "37518756-1d605690-3bf5-4e5f-b3a4-cf50c571627b" - }, - { - "name": "Update Payment Link", - "id": "13e15e9a-c364-49ac-b8dd-244b5c5e850e", - "request": { - "method": "PUT", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"paymentLinkId\": \"77287988\",\n \"status\": \"INACTIVE\",\n \"description\": \"Test paymentLink\",\n \"successMessage\": \"Payment made successfully!\",\n \"businessName\": \"My Business\",\n \"publicKey\": \"{{publicKey}}\",\n \"customizationName\": \"my_link_4\",\n \"paymentFrequency\": \"RECURRENT\",\n \"email\": \"customer@seerbit.com\",\n \"requiredFields\": {\n \"address\": true,\n \"amount\": true,\n \"customerName\": true,\n \"mobileNumber\": true,\n \"invoiceNumber\": false\n },\n \"linkExpirable\": false,\n \"expiryDate\": \"\",\n \"oneTime\": false\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://paymentlink.seerbitapi.com/paymentlink/v2/payLinks/api", - "protocol": "https", - "host": [ - "paymentlink", - "seerbitapi", - "com" - ], - "path": [ - "paymentlink", - "v2", - "payLinks", - "api" - ] - }, - "description": "Updates an existing payment link's configuration. Source: doc.seerbit.com/online-payment/payment-features/payment-links.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `paymentLinkId` | string | Yes | From *Create Payment Link*'s response, or *Get Merchant Payment Links* |\n| `status`, `description`, `successMessage`, `customizationName`, `paymentFrequency`, `requiredFields`, `linkExpirable`, `expiryDate`, `oneTime` | — | No | Any subset of these can be updated; omit fields you don't want to change |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:20.000Z", - "uid": "37518756-13e15e9a-c364-49ac-b8dd-244b5c5e850e" - }, - { - "name": "Delete Payment Link", - "id": "7fc117e7-dd7d-4252-b332-0a8293315520", - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "https://paymentlink.seerbitapi.com/paymentlink/v2/payLinks/api/deleteLink/{{paymentLinkId}}", - "protocol": "https", - "host": [ - "paymentlink", - "seerbitapi", - "com" - ], - "path": [ - "paymentlink", - "v2", - "payLinks", - "api", - "deleteLink", - "{{paymentLinkId}}" - ] - }, - "description": "Permanently deactivates a payment link. Source: doc.seerbit.com/online-payment/payment-features/payment-links, which documents this as DELETE (the original collection request used GET — fixed)." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:56:22.000Z", - "uid": "37518756-7fc117e7-dd7d-4252-b332-0a8293315520" - } - ], - "id": "34b6fea8-d15b-4f99-85a5-f6c543c8f6c3", - "description": "Create a reusable or one-time hosted payment URL you can share directly (email, chat, socials) instead of building a checkout page. Supports one-time and recurring links.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `paymentLinkId` | Identifier for a payment link created via the Payment Links folder, used to fetch, update, or delete that link. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-02T17:09:41.000Z", - "uid": "37518756-34b6fea8-d15b-4f99-85a5-f6c543c8f6c3" - }, - { - "name": "Pocket", - "item": [ - { - "name": "Authenticate", - "id": "b554f438-f6b7-4a71-a8e3-7bae3dfa6281", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"{{pocketEmail}}\",\n \"password\": \"{{pocketPassword}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/authenticate", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "authenticate" - ] - }, - "description": "Logs in to a Pocket (SeerBit's wallet product) and returns a Bearer token scoped to Pocket and Payout endpoints — **not** the same token as `{{BearerToken}}` (the OAuth token from *Get Access Token* in the Authentication folder, used everywhere else in this collection). Pocket is a **separate feature from Payout**: the doc site describes Pocket as sending funds between pockets, sub-pockets, or out to banks (that last case *is* a payout), while the Payout folder above covers the signed, OTP-gated bank-payout flow specifically — both folders share this same login and the same token.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `email` | string | Yes | Pocket account email |\n| `password` | string | Yes | Your **Pocket password** — not your SeerBit merchant dashboard password. This is the password for your Pocket account at flow.seerbitapi.com. |\n\nResponse includes `bearerToken`, `expiryTime`, and `requirePasswordChange` — check the last one and call *Change Password* if true. Save `bearerToken` as `{{pocketAuthToken}}` — the variable used on Pocket and Payout requests that require this login, kept distinct from `{{BearerToken}}` on purpose." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:11.000Z", - "uid": "37518756-b554f438-f6b7-4a71-a8e3-7bae3dfa6281" - }, - { - "name": "Change Password", - "id": "bb46d3a4-7f07-48fd-af86-637b63914030", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"currentPassword\": \"{{pocketPassword}}\",\n \"newPassword\": \"{{newPocketPassword}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/user/change-password", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "user", - "change-password" - ] - }, - "description": "Changes the Pocket account's password — required on first login if *Authenticate*'s response flagged `requirePasswordChange: true`.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `currentPassword` | string | Yes | Current Pocket password |\n| `newPassword` | string | Yes | New Pocket password |" - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:27.000Z", - "uid": "37518756-bb46d3a4-7f07-48fd-af86-637b63914030" - }, - { - "name": "Add Sub-Pocket", - "id": "21b93947-3d23-44c1-b11e-1332489f525c", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "body": { - "mode": "raw", - "raw": "[\n {\n \"reference\": \"subpocket_ref_001\",\n \"pocketFunction\": \"BOTH\",\n \"currency\": \"NGN\",\n \"selfOwned\": true,\n \"pocketOwner\": {\n \"existingPocketOwner\": \"false\",\n \"pocketOwnerDetails\": {\n \"firstName\": \"Jane\",\n \"lastName\": \"Doe\",\n \"emailAddress\": \"jane@example.com\",\n \"phoneNumber\": \"08012345678\",\n \"businessName\": \"Acme Ltd\"\n }\n }\n }\n]", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/pocket-id/{{pocketID}}/sub-pocket", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "pocket-id", - "{{pocketID}}", - "sub-pocket" - ] - }, - "description": "Creates a sub-pocket under a parent pocket — e.g. one wallet per vendor, department, or customer, all rolling up to the parent. Body is an array, so you can create several sub-pockets in one call.\n\n**Body fields (per array entry)**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `reference` | string | Yes | Your unique reference for this sub-pocket |\n| `pocketFunction` | string | Yes | e.g. `BOTH` (can send and receive) |\n| `currency` | string | Yes | Currency the sub-pocket holds |\n| `selfOwned` | boolean | Yes | Whether the sub-pocket belongs to you or an external owner |\n| `pocketOwner` | object | Yes | `existingPocketOwner` plus `pocketOwnerDetails` (`firstName`, `lastName`, `emailAddress`, `phoneNumber`, `businessName`) |\n| `tagGroup` | string | No | Grouping label |\n| `tagName` | string | No | Display label |\n\nResponse returns the new `pocketId`, its dedicated `bankAccountNumber`/`bankAccountName`/`bankName`, and login details for the sub-pocket's own user." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:29.000Z", - "uid": "37518756-21b93947-3d23-44c1-b11e-1332489f525c" - }, - { - "name": "Pocket to Pocket Transfer", - "id": "c3602316-062b-4559-9d24-eb1e51efdf86", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"amount\": \"5000.00\",\n \"currency\": \"NGN\",\n \"reference\": \"transfer_ref_001\",\n \"description\": \"Internal transfer\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/transfer/from-pocket/{{pocketID}}/to-pocket/{{destinationPocketID}}", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "transfer", - "from-pocket", - "{{pocketID}}", - "to-pocket", - "{{destinationPocketID}}" - ] - }, - "description": "Moves funds between two pockets (parent-to-sub-pocket, sub-to-sub, etc.) — an internal transfer, not a bank payout.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `amount` | string | Yes | Amount to move |\n| `currency` | string | Yes | Currency, must match both pockets |\n| `reference` | string | Yes | Unique reference for this transfer |\n| `description` | string | Yes | Free-text note |" - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:31.000Z", - "uid": "37518756-c3602316-062b-4559-9d24-eb1e51efdf86" - }, - { - "name": "Get Pocket Details", - "id": "4a60f373-198e-406e-99fa-c0c81c9e4283", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/pocket-id/{{pocketID}}", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "pocket-id", - "{{pocketID}}" - ] - }, - "description": "Fetches a pocket's full profile: status, balances, its own dedicated bank account (`accountNumber`, `fundingLink`), owner details, and any linked `pocketAccounts`." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:32.000Z", - "uid": "37518756-4a60f373-198e-406e-99fa-c0c81c9e4283" - }, - { - "name": "Get Pocket Balance", - "id": "e9263813-51fc-421a-a42c-fc94784acd5d", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/balance/pocket-id/{{pocketID}}", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "balance", - "pocket-id", - "{{pocketID}}" - ] - }, - "description": "Fast balance-only lookup for one pocket — `availableBalanceAmount`/`Currency` and `lastTransactionAt`. Use *Get Pocket Details* instead when you also need the account number or owner info." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:34.000Z", - "uid": "37518756-e9263813-51fc-421a-a42c-fc94784acd5d" - }, - { - "name": "Get Merchant Balance Summation", - "id": "aa7094b1-6e96-4d94-8994-445c9bcd25e9", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/balances-summation/pocket-id/{{pocketID}}", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "balances-summation", - "pocket-id", - "{{pocketID}}" - ] - }, - "description": "Rolls up balances across pockets: `merchantSubPocketsBalanceSummation` (just the sub-pockets under this one) and `merchantAllPocketsBalanceSummation` (every pocket under the merchant)." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:35.000Z", - "uid": "37518756-aa7094b1-6e96-4d94-8994-445c9bcd25e9" - }, - { - "name": "Get Transaction by Reference", - "id": "8fc43e24-cc1a-49dd-9ebc-35073ac69812", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/transaction/reference/{{reference}}", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "transaction", - "reference", - "{{reference}}" - ] - }, - "description": "Looks up one Pocket transaction (funding, transfer, fee, etc.) by its `reference`. Returns `transactionLeg` (`DEBIT`/`CREDIT`), `transactionType`, `status`, and counterparty details." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:37.000Z", - "uid": "37518756-8fc43e24-cc1a-49dd-9ebc-35073ac69812" - }, - { - "name": "Search Transactions", - "id": "4dddc13e-d263-4c89-9e40-3f19e2d08227", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Not required for a GET with no body, but present in the saved doc example." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required alongside Bearer auth for every Pocket endpoint." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/transaction/search?pocketId={{pocketID}}&page=0&size=10", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "transaction", - "search" - ], - "query": [ - { - "key": "pocketId", - "value": "{{pocketID}}" - }, - { - "key": "page", - "value": "0" - }, - { - "key": "size", - "value": "10" - } - ] - }, - "description": "Lists a pocket's transaction history, paginated.\n\n**Query parameters**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `pocketId` | string | Yes | The pocket to list transactions for |\n| `page` | integer | Yes | Zero-based page number |\n| `size` | integer | Yes | Records per page |\n\nResponse wraps results in `content` plus `pageable`, `totalElements`, `totalPages` for pagination." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T15:49:38.000Z", - "uid": "37518756-4dddc13e-d263-4c89-9e40-3f19e2d08227" - } - ], - "id": "e77e4d09-0a36-404b-bd4c-16170d562df5", - "description": "SeerBit's wallet product — hold balances in \"pockets,\" create sub-pockets per vendor/department/customer, and move money between them. Distinct from the **Payout** folder: Pocket-to-Pocket transfers stay inside SeerBit; sending a pocket's funds *out* to an external bank account is what the Payout flow (Account Enquiry → Generate OTP → Generate Signature → Initiate Payout) is for. Added because it was fully documented on doc.seerbit.com but missing from this collection.\n\nEvery endpoint here needs Bearer auth (from *Authenticate* below, not the collection's merchant `BearerToken`) plus a `Public-Key` header.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `reference` | A generic transaction or operation reference used to look up a specific record where no more specific reference variable applies. |\n| `pocketID` | Identifier for a SeerBit Pocket (an internal sub-wallet under your merchant account), used to fund, debit, or transfer between pockets. |\n| `destinationPocketID` | The receiving Pocket's identifier in a Pocket-to-Pocket transfer, as distinct from the source `pocketID`. |\n| `pocketEmail` | Email address associated with a Pocket, used for Pocket creation or lookup. |\n| `pocketPassword` | Password for a Pocket account, required to authorize sensitive Pocket operations. |\n| `newPocketPassword` | New password value when calling the Pocket password-change endpoint. |", - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T16:27:59.000Z", - "uid": "37518756-e77e4d09-0a36-404b-bd4c-16170d562df5" - }, - { - "name": "Payout", - "item": [ - { - "name": "Account Enquiry", - "id": "0280dad6-dbbe-4d2a-a65a-344407c7db9e", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"accountnumber\": \"0123456789\",\n \"bankcode\": \"058\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/payout/account-enquiry", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "payout", - "account-enquiry" - ] - }, - "description": "Reconfirms the account holder's name for a bank account before sending a payout — use it to catch a wrong account number before money moves.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `accountnumber` | string | Yes | Recipient bank account number |\n| `bankcode` | string | Yes | Recipient bank's code, from *Bank List* |\n\n**Note:** the payout flow (*Authenticate for Payout* → *Initiate Single/Bulk Payout* → *Confirm Payout with OTP*) doesn't call this endpoint — it goes straight from authentication to initiating the payout, with no separate account-name-confirmation step built in. Whether it's still expected to run first, is optional, or belongs to a different flow isn't stated; use it as a manual pre-check if you want extra assurance before sending funds." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:49:12.000Z", - "uid": "37518756-0280dad6-dbbe-4d2a-a65a-344407c7db9e" - }, - { - "name": "Bank List", - "id": "d5f1caf1-f49a-4b35-b0a9-d9f810ff23a9", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "GET", - "header": [ - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key — required in addition to Bearer auth for Payout endpoints." - } - ], - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/banks/category/NIP", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "banks", - "category", - "NIP" - ] - }, - "description": "Returns the banks supported for payouts in a given category — `NIP` in the saved URL is Nigeria's instant transfer network; swap the path segment if a different category is documented for your corridor. Requires Bearer auth plus a Public-Key header." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:49:14.000Z", - "uid": "37518756-d5f1caf1-f49a-4b35-b0a9-d9f810ff23a9" - }, - { - "name": "Authenticate for Payout", - "id": "a85c40f0-af7f-4b07-897f-2792d70f7aa7", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"your-merchant-login-email@example.com\",\n \"password\": \"your-merchant-password\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/authenticate", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "authenticate" - ] - }, - "description": "Logs in with your merchant account email and Pocket password to obtain the bearer token required by every other request in this payout flow.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `email` | string | Yes | Your merchant account's login email |\n| `password` | string | Yes | Your **Pocket password** — not your SeerBit merchant dashboard password. This is the password for your Pocket account at flow.seerbitapi.com. |\n\n**Response: 200 OK**\n```json\n{\n \"data\": {\n \"bearerToken\": \"...\"\n }\n}\n```\nSave `data.bearerToken` as `{{pocketAuthToken}}` — used as the `Authorization: Bearer` value on *Initiate Single Payout*, *Initiate Bulk Payout*, and *Confirm Payout with OTP*. This is the same login and token as *Authenticate* in the Pocket folder — kept as one shared variable, `{{pocketAuthToken}}`, and kept distinct from `{{BearerToken}}` (the OAuth token used everywhere else in this collection).\n\n**Note:** this is the only endpoint in this collection that authenticates with an email/password pair rather than an API key or OAuth token." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:52:00.000Z", - "uid": "37518756-a85c40f0-af7f-4b07-897f-2792d70f7aa7" - }, - { - "name": "Initiate Single Payout", - "id": "fdca3597-4c4c-4adb-a945-204f50cf5978", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant public key." - }, - { - "key": "X-Seerbit-Signature", - "value": "{{payoutSignature}}", - "description": "HMAC-SHA256 of the exact raw JSON request body, computed with your merchant secret key ({{SECRET_KEY}}), hex-encoded." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"pocketId\": \"SBP0016878\",\n \"reference\": \"PAY-SINGLE-Ideal-001\",\n \"currency\": \"NGN\",\n \"amount\": 10,\n \"description\": \"Single Payout API test\",\n \"accountNumber\": \"0522376248\",\n \"bankCode\": \"000013\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/v2/payouts", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "v2", - "payouts" - ] - }, - "description": "Phase 1 of 2 — initiates a single payout. Validates the request signature, encrypts the payload, and emails an OTP to the merchant; the payout only moves money once that OTP is submitted to *Confirm Payout with OTP*.\n\n**Required headers**\n\n| Header | Description |\n|---|---|\n| `Public-Key` | Your merchant public key (`{{publicKey}}`) |\n| `X-Seerbit-Signature` | HMAC-SHA256 of the exact raw JSON request body, computed with your merchant secret key (`{{SECRET_KEY}}`), hex-encoded. |\n| `Authorization` | `Bearer {{pocketAuthToken}}` — from *Authenticate for Payout* (same token as Pocket's *Authenticate*), not the OAuth `{{BearerToken}}`. |\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `pocketId` | string | Yes | The Pocket to pay out from |\n| `reference` | string | Yes | Your unique reference for this payout. Re-submitting the same `reference` is idempotent — it returns the existing `payoutId` and a message that the OTP was already sent, rather than sending a new OTP. |\n| `currency` | string | Yes | Currency code |\n| `amount` | number | Yes | Amount to send |\n| `description` | string | No | Free-text note for the payout |\n| `accountNumber` | string | Yes | Recipient bank account number |\n| `bankCode` | string | Yes | Recipient bank's code — see *Bank List* |\n\n**Response: 202 Accepted**\n```json\n{\n \"payoutId\": \"PV2-ABCDEF123456\",\n \"status\": \"PENDING_OTP\",\n \"message\": \"OTP sent to registered email. Please confirm to proceed.\"\n}\n```\nSave `payoutId` as the `{{payoutId}}` collection variable — it's the path parameter for *Confirm Payout with OTP*.\n\n**Error responses:**\n- 401 Unauthorized — missing or invalid `X-Seerbit-Signature`\n- 400 Bad Request — missing `Public-Key` header\n- 400 Bad Request — missing/invalid required fields (e.g. \"currency is required\", \"amount must be positive\")\n\n**Note:** this flow doesn't include a separate account-name-confirmation step before initiating — call *Account Enquiry* first if you want to verify the recipient's account name." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:49:17.000Z", - "uid": "37518756-fdca3597-4c4c-4adb-a945-204f50cf5978" - }, - { - "name": "Confirm Payout with OTP", - "id": "0d5c6ac3-8bbd-49f7-9aeb-8a88485e7a1d", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "value": "application/json", - "description": "Request body is JSON.", - "key": "Content-Type" - }, - { - "value": "{{publicKey}}", - "description": "Merchant public key.", - "key": "Public-Key" - }, - { - "value": "{{payoutSignature}}", - "description": "HMAC-SHA256 of the exact raw JSON request body, computed with your merchant secret key ({{SECRET_KEY}}), hex-encoded.", - "key": "X-Seerbit-Signature" - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"otp\": \"123456\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/v2/payouts/{{payoutId}}/confirm", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "v2", - "payouts", - "{{payoutId}}", - "confirm" - ] - }, - "description": "Phase 2 of 2 — submits the OTP emailed to the merchant during *Initiate Single Payout* / *Initiate Bulk Payout*. On success, SeerBit decrypts the payload and dispatches it for processing; this is what actually moves money.\n\n**Path parameter**\n\n| Parameter | Description |\n|---|---|\n| `payoutId` (in URL path) | From the Initiate call's response, saved to `{{payoutId}}` |\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `otp` | string | Yes | 6-digit code emailed to the merchant. Expires 5 minutes after being issued. It's presumably sent to the email used to log in via *Authenticate for Payout*, though this isn't stated explicitly. |\n\n**Response: 200 OK**\n```json\n{\n \"payoutId\": \"PV2-ABCDEF123456\",\n \"status\": \"QUEUED\",\n \"message\": \"Payout confirmed and queued for processing\",\n \"batchId\": \"BATCH-XYZ\"\n}\n```\n\n**Error responses (400):**\n- Payout not found\n- Unauthorized access\n- Not in `PENDING_OTP` state\n- OTP has expired\n- Invalid OTP\n- Insufficient funds" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:49:22.000Z", - "uid": "37518756-0d5c6ac3-8bbd-49f7-9aeb-8a88485e7a1d" - }, - { - "name": "Initiate Bulk Payout", - "id": "5c675c86-c5c9-5203-c2b0-f88c50248c11", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{pocketAuthToken}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "value": "application/json", - "key": "Content-Type", - "description": "Request body is JSON." - }, - { - "value": "{{publicKey}}", - "key": "Public-Key", - "description": "Merchant public key." - }, - { - "value": "{{payoutSignature}}", - "key": "X-Seerbit-Signature", - "description": "HMAC-SHA256 of the exact raw JSON request body, computed with your merchant secret key ({{SECRET_KEY}}), hex-encoded." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"pocketId\": \"SBP0003440\",\n \"batchReference\": \"BATCH-PAY-001\",\n \"transfers\": [\n {\n \"reference\": \"BULK-REF-001\",\n \"currency\": \"NGN\",\n \"amount\": 500.00,\n \"description\": \"Payment to vendor A\",\n \"accountNumber\": \"0522376248\",\n \"bankCode\": \"000013\"\n },\n {\n \"reference\": \"BULK-REF-002\",\n \"currency\": \"NGN\",\n \"amount\": 500.00,\n \"description\": \"Payment to vendor B\",\n \"accountNumber\": \"0522376248\",\n \"bankCode\": \"000013\"\n }\n ]\n}" - }, - "url": { - "raw": "https://pocket.seerbitapi.com/pocket/v2/payouts", - "protocol": "https", - "host": [ - "pocket", - "seerbitapi", - "com" - ], - "path": [ - "pocket", - "v2", - "payouts" - ] - }, - "description": "Phase 1 of 2 — initiates a payout to multiple recipients in one call, sharing a single OTP confirmation. Same endpoint as *Initiate Single Payout*; a non-empty `transfers` array is what puts the request in bulk mode.\n\n**Required headers:** same as *Initiate Single Payout* — `Public-Key`, `X-Seerbit-Signature` (HMAC-SHA256 of the raw body using `{{SECRET_KEY}}`), `Authorization: Bearer {{pocketAuthToken}}` from *Authenticate for Payout*.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `pocketId` | string | Yes | The Pocket to pay out from |\n| `batchReference` | string | Yes | Your unique reference for the whole batch. Re-submitting the same `batchReference` is idempotent — returns the existing `payoutId` rather than creating a new batch. |\n| `transfers` | array | Yes | One entry per recipient — see fields below. Must be non-empty to trigger bulk mode. |\n| `transfers[].reference` | string | Yes | Your unique reference for this individual transfer within the batch |\n| `transfers[].currency` | string | Yes | Currency code |\n| `transfers[].amount` | number | Yes | Amount to send to this recipient |\n| `transfers[].description` | string | No | Free-text note for this transfer |\n| `transfers[].accountNumber` | string | Yes | Recipient bank account number |\n| `transfers[].bankCode` | string | Yes | Recipient bank's code — see *Bank List* |\n\n**Response: 202 Accepted** — same shape as *Initiate Single Payout*: one `payoutId` for the whole batch, `status: \"PENDING_OTP\"`.\n\n**Note:** there's no documented endpoint for checking an individual transfer's outcome within a batch — only the batch-level `batchId` returned by *Confirm Payout with OTP*." - }, - "response": [], - "createdAt": "2026-09-03T15:24:04.000Z", - "updatedAt": "2026-09-03T15:49:20.000Z", - "uid": "37518756-5c675c86-c5c9-5203-c2b0-f88c50248c11" - } - ], - "id": "c200fa21-25e8-4f32-bc55-c4a22f601b32", - "description": "Send money out to a bank account (vendor payouts, refunds settled outside the original rail, etc.). The flow is sequential: confirm the receiving account, get an OTP, sign the payout, then submit it — each step's output feeds the next.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `pocketID` | Identifier for a SeerBit Pocket (an internal sub-wallet under your merchant account), used to fund, debit, or transfer between pockets. |\n| `passKey` | A pocket-specific security key required to authorize certain Pocket operations, separate from your account-level public/secret keys. |\n| `payoutSignature` | HMAC signature you generate to authenticate a Payout request, proving it was signed with your secret key rather than tampered with in transit. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T15:24:04.000Z", - "uid": "37518756-c200fa21-25e8-4f32-bc55-c4a22f601b32" - }, - { - "name": "Partners API", - "item": [ - { - "name": "Partner Login", - "id": "ff4d5389-5702-4c9f-946c-9922815efcfc", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"partner@example.com\",\n \"password\": \"{{partnerPassword}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/auth/login", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "auth", - "login" - ] - }, - "description": "Authenticates a SeerBit partner and returns a Bearer token for the Partners API endpoints below (a separate token from the merchant `BearerToken` used elsewhere in this collection). No auth required to call it.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `email` | string | Yes | Partner's registered email |\n| `password` | string | Yes | Partner account password |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:04.000Z", - "uid": "37518756-ff4d5389-5702-4c9f-946c-9922815efcfc" - }, - { - "name": "Request Password Reset", - "id": "edf71b8d-df9c-42c9-8ec3-9778f7fc59c8", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"partner@example.com\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/auth/password", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "auth", - "password" - ] - }, - "description": "Triggers a password-reset email containing an OTP, which you then pass to *Reset Password*. No auth required.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `email` | string | Yes | Registered partner email |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:05.000Z", - "uid": "37518756-edf71b8d-df9c-42c9-8ec3-9778f7fc59c8" - }, - { - "name": "Reset Password", - "id": "6a8ff608-1977-4c69-a262-c1a2b07ebf72", - "request": { - "auth": { - "type": "noauth" - }, - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"email\": \"partner@example.com\",\n \"newPassword\": \"{{newPartnerPassword}}\",\n \"otp\": \"123456\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/auth/reset", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "auth", - "reset" - ] - }, - "description": "Completes a password reset using the OTP emailed by *Request Password Reset*.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `email` | string | Yes | Registered partner email |\n| `newPassword` | string | Yes | Minimum 8 characters, must include an uppercase letter and a special character |\n| `otp` | string | Yes | Code sent by *Request Password Reset* |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:11.000Z", - "uid": "37518756-6a8ff608-1977-4c69-a262-c1a2b07ebf72" - }, - { - "name": "Invite Business", - "id": "ef2af48c-f569-4f78-8446-f46c22a4cb13", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant/partner public key — used instead of relying on Bearer alone for this endpoint." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"name\": \"Jane Doe\",\n \"businessName\": \"Acme Ltd\",\n \"email\": \"jane@acme.com\",\n \"countryCode\": \"NG\",\n \"partnerId\": \"{{partnerId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/api/v1/business/invite", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "api", - "v1", - "business", - "invite" - ] - }, - "description": "Invites a new sub-merchant business under this partner account. Auth is via a Public-Key header rather than Bearer alone.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `name` | string | Yes | Contact person's name at the business |\n| `businessName` | string | Yes | Business's registered name |\n| `email` | string | Yes | Business contact email — the invite is sent here |\n| `countryCode` | string | Yes | Defaults to `NG`; change only if the business operates outside Nigeria |\n| `partnerId` | string | Yes | Your partner ID — don't modify this |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:14.000Z", - "uid": "37518756-ef2af48c-f569-4f78-8446-f46c22a4cb13" - }, - { - "name": "Get Business Invite", - "id": "44c84b1f-8a28-4003-b728-86c2c1cd9f51", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://partners.seerbitapi.com/api/v1/business/SBT0050/invite", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "api", - "v1", - "business", - "SBT0050", - "invite" - ] - }, - "description": "Lists businesses invited under a given business/partner ID. `SBT0050` in the saved URL is the example ID shown in the doc — replace it with a real one. Returns each invited business's ID, name, and email." - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:15.000Z", - "uid": "37518756-44c84b1f-8a28-4003-b728-86c2c1cd9f51" - }, - { - "name": "Set Business Commission", - "id": "784d2dea-bc7c-4a59-91e1-2b6fd5e9fa12", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - }, - { - "key": "Public-Key", - "value": "{{publicKey}}", - "description": "Merchant/partner public key — used instead of relying on Bearer alone for this endpoint." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"cappedAmount\": \"10000\",\n \"mccPercentage\": \"1.5\",\n \"businessId\": \"{{businessId}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/api/v1/business/commission", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "api", - "v1", - "business", - "commission" - ] - }, - "description": "Sets the commission SeerBit deducts on transactions for one sub-merchant business. Auth is via a Public-Key header rather than Bearer alone.\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `businessId` | string | Yes | The sub-merchant business to set commission for |\n| `mccPercentage` | number | Yes | Commission percentage charged per transaction |\n| `cappedAmount` | string | Yes | Maximum commission amount per transaction, regardless of percentage |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:18.000Z", - "uid": "37518756-784d2dea-bc7c-4a59-91e1-2b6fd5e9fa12" - }, - { - "name": "Change Partner Password", - "id": "06e26a63-af11-430a-867b-e1c7ddb0a711", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "Request body is JSON." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"currentPassword\": \"{{partnerPassword}}\",\n \"newPassword\": \"{{newPartnerPassword}}\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://partners.seerbitapi.com/api/v1/business/password", - "protocol": "https", - "host": [ - "partners", - "seerbitapi", - "com" - ], - "path": [ - "api", - "v1", - "business", - "password" - ] - }, - "description": "Changes the logged-in partner's password. Requires Bearer auth (the partner token from *Partner Login*).\n\n**Body fields**\n\n| Field | Type | Required | Description |\n|---|---|---|---|\n| `currentPassword` | string | Yes | Partner's current password |\n| `newPassword` | string | Yes | Must meet the same complexity rules as *Reset Password* |" - }, - "response": [], - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-03T09:57:20.000Z", - "uid": "37518756-06e26a63-af11-430a-867b-e1c7ddb0a711" - } - ], - "id": "cdc8677f-7dd2-4cd0-8dd1-8ef7709e5259", - "description": "For SeerBit partners managing sub-merchants: authenticate as a partner, invite and manage businesses under your partner account, and set their commission terms.\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `partnerId` | Identifier for a partner/sub-merchant account under the Partners API, used to manage that partner's businesses and settings. |\n| `businessId` | Identifier for a specific business/sub-account created under a partner via the Partners API. |\n| `partnerPassword` | Password used to authenticate as a partner when calling Partners API endpoints. |\n| `newPartnerPassword` | New password value when calling a Partners API endpoint that changes a partner's password. |", - "createdAt": "2026-09-02T17:09:41.000Z", - "updatedAt": "2026-09-02T17:09:41.000Z", - "uid": "37518756-cdc8677f-7dd2-4cd0-8dd1-8ef7709e5259" - }, - { - "name": "Webhooks (reference)", - "item": [ - { - "name": "refund", - "id": "b5cd39b6-fa23-4921-bfe4-d8c8408c2735", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"refund\",\n \"eventDate\": \"2026-05-01 12:55:57\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"amount\": \"5000.00\",\n \"createdAt\": \"2026-05-01T12:55:00Z\",\n \"transactionRef\": \"payment_reference8\",\n \"description\": \"Customer requested refund\",\n \"type\": \"FULL_REFUND\",\n \"mode\": \"LIVE\",\n \"updatedAt\": \"2026-05-01T12:55:57Z\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `refund` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent when a refund is processed against one of your transactions (full or partial, per `type`).\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:57:50.000Z", - "uid": "37518756-b5cd39b6-fa23-4921-bfe4-d8c8408c2735" - }, - { - "name": "dispute", - "id": "adc12cb6-a687-4fa3-9ea5-acc40775d5c6", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"dispute\",\n \"eventDate\": \"2026-05-01 12:56:07\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"evidence\": [\n {\n \"images\": [\n {\n \"image\": \"https://example.com/evidence1.png\"\n }\n ]\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `dispute` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent when a chargeback/dispute is raised against one of your transactions; `evidence` carries whatever supporting material is attached.\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:57:52.000Z", - "uid": "37518756-adc12cb6-a687-4fa3-9ea5-acc40775d5c6" - }, - { - "name": "transaction", - "id": "e723a944-eeb4-44a7-8095-c6dde35d765b", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"transaction\",\n \"eventDate\": \"2026-07-01 08:56:16\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"amount\": 5000,\n \"reference\": \"payment_reference8\",\n \"gatewayMessage\": \"Successful\",\n \"publicKey\": \"{{publicKey}}\",\n \"businessName\": \"Your Business\",\n \"fee\": 50,\n \"channelType\": \"MASTERCARD\",\n \"maskedPan\": \"5123-40xx-xxxx-0008\",\n \"fullname\": \"Jane Doe\",\n \"email\": \"customer@example.com\",\n \"gatewayReference\": \"GW-REF-001\",\n \"country\": \"NG\",\n \"currency\": \"NGN\",\n \"paymentType\": \"CARD\",\n \"gatewayCode\": \"00\",\n \"code\": \"00\",\n \"createdAt\": \"2026-07-01T08:56:00Z\",\n \"updatedAt\": \"2026-07-01T08:56:16Z\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `transaction` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent for a card payment (e.g. from Standard Checkout or Tokenization) reaching a final state — this is the async counterpart to polling *Check Payment Status*.\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:57:54.000Z", - "uid": "37518756-e723a944-eeb4-44a7-8095-c6dde35d765b" - }, - { - "name": "transaction.wallet", - "id": "d2c503f8-78e9-4e38-9228-4df215b30940", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"transaction.wallet\",\n \"eventDate\": \"2026-05-01 12:52:28\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"amount\": 5000,\n \"fee\": 0,\n \"mobile\": \"08012345678\",\n \"reference\": \"va_ref_001\",\n \"gatewayMessage\": \"APPROVED\",\n \"bankCode\": \"000016\",\n \"description\": \"Wallet funding\",\n \"type\": \"Transfer\",\n \"fullname\": \"Jane Doe\",\n \"email\": \"customer@example.com\",\n \"country\": \"NG\",\n \"currency\": \"NGN\",\n \"creditAccountName\": \"Jane Doe\",\n \"creditAccountNumber\": \"1234567890\",\n \"originatorAccountnumber\": \"0987654321\",\n \"originatorName\": \"John Smith\",\n \"narration\": \"Funding\",\n \"createdAt\": \"2026-05-01T12:52:00Z\",\n \"updatedAt\": \"2026-05-01T12:52:28Z\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `transaction.wallet` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent when a bank transfer lands on a Virtual Account or Pocket — this is what tells you a *Get Payments* or Pocket balance actually changed, without you having to poll.\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:57:56.000Z", - "uid": "37518756-d2c503f8-78e9-4e38-9228-4df215b30940" - }, - { - "name": "transaction.recurrent", - "id": "323b4907-4806-4070-b38d-f224a6cdc55f", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"transaction.recurrent\",\n \"eventDate\": \"2026-05-01 12:50:33\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"amount\": 100,\n \"mobile\": \"08012345678\",\n \"reference\": \"sub_charge_ref_001\",\n \"publicKey\": \"{{publicKey}}\",\n \"description\": \"Subscription charge\",\n \"productId\": \"product222\",\n \"maskedPan\": \"5123-40xx-xxxx-0008\",\n \"email\": \"customer@example.com\",\n \"country\": \"NG\",\n \"narration\": \"Recurrent\",\n \"createdAt\": \"2026-05-01T12:50:00Z\",\n \"updatedAt\": \"2026-05-01T12:50:33Z\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `transaction.recurrent` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent when a subscription's scheduled charge (from *Create Plan* / *Charge Subscription*) completes.\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:58:02.000Z", - "uid": "37518756-323b4907-4806-4070-b38d-f224a6cdc55f" - }, - { - "name": "transaction.recurring.debit", - "id": "8fbe2a81-0df6-4bf5-8c4f-0b58fa51711a", - "request": { - "method": "POST", - "header": [ - { - "key": "Content-Type", - "value": "application/json", - "description": "SeerBit sends this as a JSON POST." - } - ], - "body": { - "mode": "raw", - "raw": "{\n \"eventType\": \"transaction.recurring.debit\",\n \"eventDate\": \"2026-05-01 12:55:32\",\n \"eventId\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n \"data\": {\n \"amount\": 5000,\n \"reference\": \"charge_token_ref_001\",\n \"gatewayMessage\": \"Successful\",\n \"publicKey\": \"{{publicKey}}\",\n \"description\": \"Authorised charge\",\n \"channelType\": \"Recurring Debit\",\n \"maskedPan\": \"5123-40xx-xxxx-0008\",\n \"type\": \"TOKEN\",\n \"fullname\": \"Jane Doe\",\n \"email\": \"customer@example.com\",\n \"country\": \"NG\",\n \"currency\": \"NGN\",\n \"narration\": \"Authorised charge\",\n \"paymentType\": \"card\",\n \"createdAt\": \"2026-05-01T12:55:00Z\",\n \"updatedAt\": \"2026-05-01T12:55:32Z\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{yourWebhookUrl}}", - "host": [ - "{{yourWebhookUrl}}" - ] - }, - "description": "**Reference only — not a request you send.** This documents the `transaction.recurring.debit` payload SeerBit POSTs to *your* configured webhook URL after the matching event happens; there is nothing at SeerBit to call here. The body below is the shape of what you'll receive.\n\nSent for a subsequent automated debit against a stored token (e.g. *Charge Authorization Token*) outside the subscription schedule.\n\nYour endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry." - }, - "response": [], - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-03T09:58:05.000Z", - "uid": "37518756-8fbe2a81-0df6-4bf5-8c4f-0b58fa51711a" - } - ], - "id": "9358f4a9-18b1-49e1-933b-ea06200e6299", - "description": "**None of these are requests you send** — SeerBit calls *your* configured webhook URL (set in Dashboard → Account Settings → Webhook) with one of these six event types whenever something happens asynchronously. They're saved here purely as a payload reference so you know what to expect and how to build your handler, the same way the rest of this collection documents outbound calls.\n\n**Acknowledgment — V1:** respond with a plain HTTP 200 within 10 seconds, or SeerBit retries on an escalating schedule for up to 7 days.\n\n**Acknowledgment — V2:** respond within 5 seconds with `{ \"ackReference\": \"\", \"status\": \"received\" }` and HTTP 200. Retries follow a fixed schedule: 30s, 2m, 10m, 30m, then a final attempt at 1h, after which the webhook is marked undelivered.\n\nEvery payload shares one wrapper — `eventType`, `eventDate`, `eventId`, and a `data` object specific to the event — shown in each item below. Use `eventId` to de-duplicate if the same notification arrives more than once (retries can outlast a slow acknowledgment).\n\n### Variables used in this folder\n\n| Variable | Description |\n|---|---|\n| `publicKey` | Your merchant public key from the SeerBit dashboard. Sent in the body of most payment-initiation requests (never as a header) to identify which merchant account a transaction belongs to. |\n| `yourWebhookUrl` | Placeholder for the callback URL you register with SeerBit to receive inbound webhook events (see the Webhooks (reference) folder) — not an endpoint you call, just documents what SeerBit will POST to. |", - "createdAt": "2026-09-02T17:35:23.000Z", - "updatedAt": "2026-09-02T17:35:23.000Z", - "uid": "37518756-9358f4a9-18b1-49e1-933b-ea06200e6299" - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{BearerToken}}", - "type": "string" - } - ] - }, - "variable": [ - { - "key": "publicKey", - "value": "" - }, - { - "key": "BearerToken", - "value": "" - }, - { - "key": "SECRET_KEY", - "value": "" - }, - { - "key": "paymentReference", - "value": "payment_reference86" - }, - { - "key": "customerId", - "value": "" - }, - { - "key": "billingId", - "value": "" - }, - { - "key": "batchId", - "value": "" - }, - { - "key": "accountNumber", - "value": "" - }, - { - "key": "reference", - "value": "FIRST_VIRTUAL_17" - }, - { - "key": "paymentLinkId", - "value": "77287988" - }, - { - "key": "authorizationCode", - "value": "" - }, - { - "key": "planId", - "value": "" - }, - { - "key": "pocketID", - "value": "" - }, - { - "key": "passKey", - "value": "" - }, - { - "key": "payoutSignature", - "value": "" - }, - { - "key": "partnerId", - "value": "" - }, - { - "key": "businessId", - "value": "" - }, - { - "key": "partnerPassword", - "value": "" - }, - { - "key": "newPartnerPassword", - "value": "" - }, - { - "key": "destinationPocketID", - "value": "" - }, - { - "key": "pocketEmail", - "value": "" - }, - { - "key": "pocketPassword", - "value": "" - }, - { - "key": "newPocketPassword", - "value": "" - }, - { - "key": "yourWebhookUrl", - "value": "https://your-server.com/webhooks/seerbit" - }, - { - "key": "customerEmail", - "value": "" - }, - { - "key": "InvoiceNo", - "value": "" - }, - { - "key": "orderNo", - "value": "" - } - ] -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index b2f6152..f1e7c15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,140 +1,119 @@ { "name": "seerbitopenapi", "version": "1.0.0", - "lockfileVersion": 3, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "seerbitopenapi", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "minimist": "^1.2.5", - "node-fetch": "^2.6.1", - "openapi-to-postmanv2": "^2.0.0", - "redoc": "^2.0.0-rc.40", - "redoc-cli": "^0.9.12", - "yaml": "^1.10.0" - }, - "devDependencies": {} - }, - "node_modules/@babel/code-frame": { + "dependencies": { + "@babel/code-frame": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", - "dependencies": { + "requires": { "@babel/highlight": "^7.10.4" } }, - "node_modules/@babel/generator": { + "@babel/generator": { "version": "7.11.6", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.6.tgz", "integrity": "sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA==", - "dependencies": { + "requires": { "@babel/types": "^7.11.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { + "@babel/helper-annotate-as-pure": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", - "dependencies": { + "requires": { "@babel/types": "^7.10.4" } }, - "node_modules/@babel/helper-function-name": { + "@babel/helper-function-name": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", - "dependencies": { + "requires": { "@babel/helper-get-function-arity": "^7.10.4", "@babel/template": "^7.10.4", "@babel/types": "^7.10.4" } }, - "node_modules/@babel/helper-get-function-arity": { + "@babel/helper-get-function-arity": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", - "dependencies": { + "requires": { "@babel/types": "^7.10.4" } }, - "node_modules/@babel/helper-module-imports": { + "@babel/helper-module-imports": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", - "dependencies": { + "requires": { "@babel/types": "^7.10.4" } }, - "node_modules/@babel/helper-split-export-declaration": { + "@babel/helper-split-export-declaration": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", - "dependencies": { + "requires": { "@babel/types": "^7.11.0" } }, - "node_modules/@babel/helper-validator-identifier": { + "@babel/helper-validator-identifier": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, - "node_modules/@babel/highlight": { + "@babel/highlight": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.10.4", "chalk": "^2.0.0", "js-tokens": "^4.0.0" } }, - "node_modules/@babel/parser": { + "@babel/parser": { "version": "7.11.5", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.5.tgz", - "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==", - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } + "integrity": "sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q==" }, - "node_modules/@babel/runtime": { + "@babel/runtime": { "version": "7.11.2", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", - "dependencies": { + "requires": { "regenerator-runtime": "^0.13.4" } }, - "node_modules/@babel/template": { + "@babel/template": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.10.4", "@babel/parser": "^7.10.4", "@babel/types": "^7.10.4" } }, - "node_modules/@babel/traverse": { + "@babel/traverse": { "version": "7.11.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.10.4", "@babel/generator": "^7.11.5", "@babel/helper-function-name": "^7.10.4", @@ -146,189 +125,173 @@ "lodash": "^4.17.19" } }, - "node_modules/@babel/types": { + "@babel/types": { "version": "7.11.5", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.5.tgz", "integrity": "sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q==", - "dependencies": { + "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", "to-fast-properties": "^2.0.0" } }, - "node_modules/@emotion/is-prop-valid": { + "@emotion/is-prop-valid": { "version": "0.8.8", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz", "integrity": "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==", - "dependencies": { + "requires": { "@emotion/memoize": "0.7.4" } }, - "node_modules/@emotion/memoize": { + "@emotion/memoize": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz", "integrity": "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" }, - "node_modules/@emotion/stylis": { + "@emotion/stylis": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz", "integrity": "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" }, - "node_modules/@emotion/unitless": { + "@emotion/unitless": { "version": "0.7.5", "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz", "integrity": "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" }, - "node_modules/@exodus/schemasafe": { + "@exodus/schemasafe": { "version": "1.0.0-rc.2", "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.0.0-rc.2.tgz", "integrity": "sha512-W98NvvOe/Med3o66xTO03pd7a2omZebH79PV64gSE+ceDdU8uxQhFTa7ISiD1kseyqyOrMyW5/MNdsGEU02i3Q==" }, - "node_modules/@redocly/react-dropdown-aria": { + "@redocly/react-dropdown-aria": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/@redocly/react-dropdown-aria/-/react-dropdown-aria-2.0.11.tgz", - "integrity": "sha512-rmuSC2JFFl4DkPDdGVrmffT9KcbG2AB5jvhxPIrOc1dO9mHRMUUftQY35KZlvWqqSSqVn+AM+J9dhiTo1ZqR8A==", - "peerDependencies": { - "react": "^16.8.0", - "react-dom": "^16.8.0", - "styled-components": "^5.1.1" - } + "integrity": "sha512-rmuSC2JFFl4DkPDdGVrmffT9KcbG2AB5jvhxPIrOc1dO9mHRMUUftQY35KZlvWqqSSqVn+AM+J9dhiTo1ZqR8A==" }, - "node_modules/@types/color-name": { + "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" }, - "node_modules/@types/node": { + "@types/node": { "version": "13.13.21", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.21.tgz", "integrity": "sha512-tlFWakSzBITITJSxHV4hg4KvrhR/7h3xbJdSFbYJBVzKubrASbnnIFuSgolUh7qKGo/ZeJPKUfbZ0WS6Jp14DQ==" }, - "node_modules/ajv": { + "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dependencies": { + "requires": { "co": "^4.6.0", "fast-deep-equal": "^1.0.0", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.3.0" } }, - "node_modules/ansi-regex": { + "ansi-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, - "node_modules/ansi-styles": { + "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { + "requires": { "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" } }, - "node_modules/anymatch": { + "anymatch": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dependencies": { + "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/argparse": { + "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { + "requires": { "sprintf-js": "~1.0.2" } }, - "node_modules/array-uniq": { + "array-uniq": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" }, - "node_modules/asn1.js": { + "asn1.js": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { + "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/assert": { + "assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dependencies": { + "requires": { "object-assign": "^4.1.1", "util": "0.10.3" - } - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + }, "dependencies": { - "inherits": "2.0.1" + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, - "node_modules/async": { + "async": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==" }, - "node_modules/babel-plugin-styled-components": { + "babel-plugin-styled-components": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.11.1.tgz", "integrity": "sha512-YwrInHyKUk1PU3avIRdiLyCpM++18Rs1NgyMXEAQC33rIXs/vro0A+stf4sT0Gf22Got+xRWB8Cm0tw+qkRzBA==", - "dependencies": { + "requires": { "@babel/helper-annotate-as-pure": "^7.0.0", "@babel/helper-module-imports": "^7.0.0", "babel-plugin-syntax-jsx": "^6.18.0", "lodash": "^4.17.11" - }, - "peerDependencies": { - "styled-components": ">= 2" } }, - "node_modules/babel-plugin-syntax-jsx": { + "babel-plugin-syntax-jsx": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", "integrity": "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" }, - "node_modules/base64-js": { + "base64-js": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" }, - "node_modules/better-ajv-errors": { + "better-ajv-errors": { "version": "0.6.7", "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz", "integrity": "sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg==", - "dependencies": { + "requires": { "@babel/code-frame": "^7.0.0", "@babel/runtime": "^7.0.0", "chalk": "^2.4.1", @@ -336,45 +299,36 @@ "json-to-ast": "^2.0.3", "jsonpointer": "^4.0.1", "leven": "^3.1.0" - }, - "peerDependencies": { - "ajv": "4.11.8 - 6" } }, - "node_modules/binary-extensions": { + "binary-extensions": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", - "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, - "node_modules/bn.js": { + "bn.js": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==" }, - "node_modules/braces": { + "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { + "requires": { "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/brorand": { + "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, - "node_modules/browserify-aes": { + "browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dependencies": { + "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", "create-hash": "^1.1.0", @@ -383,46 +337,48 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/browserify-cipher": { + "browserify-cipher": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { + "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", "evp_bytestokey": "^1.0.0" } }, - "node_modules/browserify-des": { + "browserify-des": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { + "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" } }, - "node_modules/browserify-rsa": { + "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dependencies": { + "requires": { "bn.js": "^4.1.0", "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/browserify-rsa/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/browserify-sign": { + "browserify-sign": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { + "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", "create-hash": "^1.2.0", @@ -432,262 +388,235 @@ "parse-asn1": "^5.1.5", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/browserify-sign/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" }, - "engines": { - "node": ">= 6" + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, - "node_modules/browserify-zlib": { + "browserify-zlib": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dependencies": { + "requires": { "pako": "~1.0.5" } }, - "node_modules/buffer": { + "buffer": { "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { + "requires": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + } } }, - "node_modules/buffer-xor": { + "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "node_modules/buffer/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/builtin-status-codes": { + "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, - "node_modules/call-me-maybe": { + "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=" }, - "node_modules/camelcase": { + "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, - "node_modules/camelize": { + "camelize": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz", "integrity": "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" }, - "node_modules/chalk": { + "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { + "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" } }, - "node_modules/charset": { + "charset": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz", - "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==", - "engines": { - "node": ">=4.0.0" - } + "integrity": "sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==" }, - "node_modules/chokidar": { + "chokidar": { "version": "3.4.2", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", - "dependencies": { + "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", + "fsevents": "~2.1.2", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.4.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" } }, - "node_modules/cipher-base": { + "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { + "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" } }, - "node_modules/classnames": { + "classnames": { "version": "2.2.6", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" }, - "node_modules/clipboard": { + "clipboard": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "optional": true, - "dependencies": { + "requires": { "good-listener": "^1.2.2", "select": "^1.1.2", "tiny-emitter": "^2.0.0" } }, - "node_modules/cliui": { + "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dependencies": { + "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, - "node_modules/clsx": { + "clsx": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.1.1.tgz", - "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==" }, - "node_modules/co": { + "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" }, - "node_modules/code-error-fragment": { + "code-error-fragment": { "version": "0.0.230", "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "engines": { - "node": ">= 4" - } + "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==" }, - "node_modules/color-convert": { + "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { + "requires": { "color-name": "1.1.3" } }, - "node_modules/color-name": { + "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "node_modules/commander": { + "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "node_modules/compute-gcd": { + "compute-gcd": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.1.tgz", "integrity": "sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==", - "dependencies": { + "requires": { "validate.io-array": "^1.0.3", "validate.io-function": "^1.0.2", "validate.io-integer-array": "^1.0.0" } }, - "node_modules/compute-lcm": { + "compute-lcm": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.2.tgz", "integrity": "sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==", - "dependencies": { + "requires": { "compute-gcd": "^1.2.1", "validate.io-array": "^1.0.3", "validate.io-function": "^1.0.2", "validate.io-integer-array": "^1.0.0" } }, - "node_modules/console-browserify": { + "console-browserify": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" }, - "node_modules/constants-browserify": { + "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, - "node_modules/core-js": { + "core-js": { "version": "3.6.5", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" }, - "node_modules/core-util-is": { + "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, - "node_modules/create-ecdh": { + "create-ecdh": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { + "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/create-hash": { + "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dependencies": { + "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", "md5.js": "^1.3.4", @@ -695,11 +624,11 @@ "sha.js": "^2.4.0" } }, - "node_modules/create-hmac": { + "create-hmac": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dependencies": { + "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", "inherits": "^2.0.1", @@ -708,11 +637,11 @@ "sha.js": "^2.4.8" } }, - "node_modules/crypto-browserify": { + "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { + "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", "create-ecdh": "^4.0.0", @@ -724,158 +653,131 @@ "public-encrypt": "^4.0.0", "randombytes": "^2.0.0", "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" } }, - "node_modules/css-color-keywords": { + "css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", - "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=", - "engines": { - "node": ">=4" - } + "integrity": "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" }, - "node_modules/css-to-react-native": { + "css-to-react-native": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz", "integrity": "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==", - "dependencies": { + "requires": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", "postcss-value-parser": "^4.0.2" } }, - "node_modules/debug": { + "debug": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/decamelize": { + "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, - "node_modules/decko": { + "decko": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decko/-/decko-1.2.0.tgz", "integrity": "sha1-/UPHNelnuAEzBohKVvvmZZlraBc=" }, - "node_modules/delegate": { + "delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", "optional": true }, - "node_modules/des.js": { + "des.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { + "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "node_modules/diffie-hellman": { + "diffie-hellman": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { + "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/dom-serializer": { + "dom-serializer": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { + "requires": { "domelementtype": "^2.0.1", "entities": "^2.0.0" - } - }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", - "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" + }, + "dependencies": { + "domelementtype": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.1.0.tgz", + "integrity": "sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==" + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" } - ] - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/domain-browser": { + "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, - "node_modules/domelementtype": { + "domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, - "node_modules/domhandler": { + "domhandler": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { + "requires": { "domelementtype": "1" } }, - "node_modules/dompurify": { + "dompurify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.1.0.tgz", "integrity": "sha512-wKExRhOwUnfm1icoISSXnlmM1P2l07W2tFQqbU+8oySnvy7tHwj2iHJ1kJQi8EfcTlojsHKESOJwCGVJmNUdPQ==" }, - "node_modules/domutils": { + "domutils": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { + "requires": { "dom-serializer": "0", "domelementtype": "1" } }, - "node_modules/elliptic": { + "elliptic": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", - "dependencies": { + "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", "hash.js": "^1.0.0", @@ -883,736 +785,596 @@ "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/emoji-regex": { + "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/entities": { + "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, - "node_modules/es6-promise": { + "es6-promise": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" }, - "node_modules/escape-html": { + "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, - "node_modules/escape-string-regexp": { + "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, - "node_modules/esprima": { + "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, - "node_modules/eventemitter3": { + "eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/events": { + "events": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", - "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", - "engines": { - "node": ">=0.8.x" - } + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==" }, - "node_modules/evp_bytestokey": { + "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dependencies": { + "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" } }, - "node_modules/faker": { + "faker": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/faker/-/faker-5.1.0.tgz", "integrity": "sha512-RrWKFSSA/aNLP0g3o2WW1Zez7/MnMr7xkiZmoCfAGZmdkDQZ6l2KtuXHN5XjdvpRjDl8+3vf+Rrtl06Z352+Mw==" }, - "node_modules/fast-deep-equal": { + "fast-deep-equal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=" }, - "node_modules/fast-json-stable-stringify": { + "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, - "node_modules/fast-safe-stringify": { + "fast-safe-stringify": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz", "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==" }, - "node_modules/file-type": { + "file-type": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" }, - "node_modules/fill-range": { + "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { + "requires": { "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, - "node_modules/find-up": { + "find-up": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dependencies": { + "requires": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/foreach": { + "foreach": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" }, - "node_modules/format-util": { + "format-util": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" }, - "node_modules/fsevents": { + "fsevents": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } + "optional": true }, - "node_modules/get-caller-file": { + "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, - "node_modules/glob-parent": { + "glob-parent": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", - "dependencies": { + "requires": { "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, - "node_modules/globals": { + "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "node_modules/good-listener": { + "good-listener": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", "optional": true, - "dependencies": { + "requires": { "delegate": "^3.1.2" } }, - "node_modules/grapheme-splitter": { + "grapheme-splitter": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, - "node_modules/handlebars": { + "handlebars": { "version": "4.7.6", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", - "dependencies": { + "requires": { "minimist": "^1.2.5", "neo-async": "^2.6.0", "source-map": "^0.6.1", + "uglify-js": "^3.1.4", "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" } }, - "node_modules/has-flag": { + "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "node_modules/hash-base": { + "hash-base": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { + "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", "safe-buffer": "^5.2.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, - "node_modules/hash.js": { + "hash.js": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dependencies": { + "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } } }, - "node_modules/hash.js/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/hmac-drbg": { + "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { + "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hoist-non-react-statics": { + "hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { + "requires": { "react-is": "^16.7.0" } }, - "node_modules/htmlparser2": { + "htmlparser2": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { + "requires": { "domelementtype": "^1.3.1", "domhandler": "^2.3.0", "domutils": "^1.5.1", "entities": "^1.1.1", "inherits": "^2.0.1", "readable-stream": "^3.1.1" - } - }, - "node_modules/htmlparser2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" }, - "engines": { - "node": ">= 6" + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + } + } + } } }, - "node_modules/htmlparser2/node_modules/readable-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/http-reasons": { + "http-reasons": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/http-reasons/-/http-reasons-0.1.0.tgz", "integrity": "sha1-qVPKZwB4Zp3eFCzomUAbnW6F07Q=" }, - "node_modules/http2-client": { + "http2-client": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.3.tgz", "integrity": "sha512-nUxLymWQ9pzkzTmir24p2RtsgruLmhje7lH3hLX1IpwvyTg77fW+1brenPPP3USAR+rQ36p5sTA/x7sjCJVkAA==" }, - "node_modules/https-browserify": { + "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, - "node_modules/iconv-lite": { + "iconv-lite": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dependencies": { + "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/ieee754": { + "ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, - "node_modules/inherits": { + "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" }, - "node_modules/is-binary-path": { + "is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { + "requires": { "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/is-extglob": { + "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" }, - "node_modules/is-fullwidth-code-point": { + "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, - "node_modules/is-glob": { + "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { + "requires": { "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/is-number": { + "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, - "node_modules/isarray": { + "isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, - "node_modules/js-tokens": { + "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, - "node_modules/js-yaml": { + "js-yaml": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dependencies": { + "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsesc": { + "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, - "node_modules/json-pointer": { + "json-pointer": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", - "dependencies": { + "requires": { "foreach": "^2.0.4" } }, - "node_modules/json-schema-compare": { + "json-schema-compare": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz", "integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==", - "dependencies": { + "requires": { "lodash": "^4.17.4" } }, - "node_modules/json-schema-merge-allof": { + "json-schema-merge-allof": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.7.0.tgz", "integrity": "sha512-kvsuSVnl1n5xnNEu5ed4o8r8ujSA4/IgRtHmpgfMfa7FOMIRAzN4F9qbuklouTn5J8bi83y6MQ11n+ERMMTXZg==", - "dependencies": { + "requires": { "compute-lcm": "^1.1.0", "json-schema-compare": "^0.2.2", "lodash": "^4.17.4" } }, - "node_modules/json-schema-ref-parser": { + "json-schema-ref-parser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/json-schema-ref-parser/-/json-schema-ref-parser-6.1.0.tgz", "integrity": "sha512-pXe9H1m6IgIpXmE5JSb8epilNTGsmTb2iPohAXpOdhqGFbQjNeHHsZxU+C8w6T81GZxSPFLeUoqDJmzxx5IGuw==", - "deprecated": "Please switch to @apidevtools/json-schema-ref-parser", - "dependencies": { + "requires": { "call-me-maybe": "^1.0.1", "js-yaml": "^3.12.1", "ono": "^4.0.11" } }, - "node_modules/json-schema-traverse": { + "json-schema-traverse": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=" }, - "node_modules/json-to-ast": { + "json-to-ast": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "dependencies": { + "requires": { "code-error-fragment": "0.0.230", "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" } }, - "node_modules/jsonpointer": { + "jsonpointer": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==" }, - "node_modules/leven": { + "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==" }, - "node_modules/liquid-json": { + "liquid-json": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/liquid-json/-/liquid-json-0.3.1.tgz", - "integrity": "sha1-kVWhgTbYprJhXl8W+aJEira1Duo=", - "engines": { - "node": ">=4" - } + "integrity": "sha1-kVWhgTbYprJhXl8W+aJEira1Duo=" }, - "node_modules/locate-path": { + "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dependencies": { + "requires": { "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/lodash": { + "lodash": { "version": "4.17.20", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" }, - "node_modules/lodash.clonedeep": { + "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" }, - "node_modules/lodash.escaperegexp": { + "lodash.escaperegexp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" }, - "node_modules/lodash.isplainobject": { + "lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" }, - "node_modules/lodash.isstring": { + "lodash.isstring": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" }, - "node_modules/lodash.mergewith": { + "lodash.mergewith": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" }, - "node_modules/loose-envify": { + "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { + "requires": { "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" } }, - "node_modules/lunr": { + "lunr": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==" }, - "node_modules/mark.js": { + "mark.js": { "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", "integrity": "sha1-GA8fnr74sOY45BZq1S24eb6y/8U=" }, - "node_modules/marked": { + "marked": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz", - "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==" }, - "node_modules/md5.js": { + "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dependencies": { + "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", "safe-buffer": "^5.1.2" } }, - "node_modules/memoize-one": { + "memoize-one": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz", "integrity": "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" }, - "node_modules/miller-rabin": { + "miller-rabin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { + "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" }, - "bin": { - "miller-rabin": "bin/miller-rabin" + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/mime-db": { + "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "engines": { - "node": ">= 0.6" - } + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, - "node_modules/mime-format": { + "mime-format": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mime-format/-/mime-format-2.0.0.tgz", "integrity": "sha1-4p+IkeKE14JwJG8AUNaDS9u+EzI=", - "dependencies": { + "requires": { "charset": "^1.0.0" } }, - "node_modules/mime-types": { + "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "dependencies": { + "requires": { "mime-db": "1.44.0" - }, - "engines": { - "node": ">= 0.6" } }, - "node_modules/minimalistic-assert": { + "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, - "node_modules/minimalistic-crypto-utils": { + "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, - "node_modules/minimist": { + "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "node_modules/mkdirp": { + "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, - "node_modules/mobx": { + "mobx": { "version": "4.15.7", "resolved": "https://registry.npmjs.org/mobx/-/mobx-4.15.7.tgz", - "integrity": "sha512-X4uQvuf2zYKHVO5kRT5Utmr+J9fDnRgxWWnSqJ4oiccPTQU38YG+/O3nPmOhUy4jeHexl7XJJpWDBgEnEfp+8w==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - } + "integrity": "sha512-X4uQvuf2zYKHVO5kRT5Utmr+J9fDnRgxWWnSqJ4oiccPTQU38YG+/O3nPmOhUy4jeHexl7XJJpWDBgEnEfp+8w==" }, - "node_modules/mobx-react": { + "mobx-react": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/mobx-react/-/mobx-react-6.3.0.tgz", "integrity": "sha512-C14yya2nqEBRSEiJjPkhoWJLlV8pcCX3m2JRV7w1KivwANJqipoiPx9UMH4pm6QNMbqDdvJqoyl+LqNu9AhvEQ==", - "deprecated": "Please use 6.3.1 instead of this version", - "dependencies": { + "requires": { "mobx-react-lite": ">=2.2.0" - }, - "peerDependencies": { - "mobx": "^5.15.4 || ^4.15.4", - "react": "^16.8.0 || 16.9.0-alpha.0" } }, - "node_modules/mobx-react-lite": { + "mobx-react-lite": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-2.2.2.tgz", - "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==", - "peerDependencies": { - "mobx": "^4.0.0 || ^5.0.0", - "react": "^16.8.0" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } + "integrity": "sha512-2SlXALHIkyUPDsV4VTKVR9DW7K3Ksh1aaIv3NrNJygTbhXe2A9GrcKHZ2ovIiOp/BXilOcTYemfHHZubP431dg==" }, - "node_modules/ms": { + "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/neo-async": { + "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, - "node_modules/node-fetch": { + "node-fetch": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "engines": { - "node": "4.x || >=6.0.0" - } + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" }, - "node_modules/node-fetch-h2": { + "node-fetch-h2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", - "dependencies": { + "requires": { "http2-client": "^1.2.5" - }, - "engines": { - "node": "4.x || >=6.0.0" } }, - "node_modules/node-libs-browser": { + "node-libs-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dependencies": { + "requires": { "assert": "^1.1.1", "browserify-zlib": "^0.2.0", "buffer": "^4.3.0", @@ -1638,82 +1400,64 @@ "vm-browserify": "^1.0.1" } }, - "node_modules/node-readfiles": { + "node-readfiles": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", "integrity": "sha1-271K8SE04uY1wkXvk//Pb2BnOl0=", - "dependencies": { + "requires": { "es6-promise": "^3.2.1" } }, - "node_modules/normalize-path": { + "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, - "node_modules/number-is-nan": { + "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, - "node_modules/oas-kit-common": { + "oas-kit-common": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", - "dependencies": { + "requires": { "fast-safe-stringify": "^2.0.7" } }, - "node_modules/oas-linter": { + "oas-linter": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.0.tgz", "integrity": "sha512-LP5F1dhjULEJV5oGRg6ROztH2FddzttrrUEwq5J2GB2Zy938mg0vwt1+Rthn/qqDHtj4Qgq21duNGHh+Ew1wUg==", - "dependencies": { + "requires": { "@exodus/schemasafe": "^1.0.0-rc.2", "should": "^13.2.1", "yaml": "^1.10.0" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/oas-resolver": { + "oas-resolver": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.1.tgz", "integrity": "sha512-MdMY8YAnCdFTAt5+CTC/aYEOSIFt+ICOWxQvKKxsIHjc0/0tG6V4DzbkHW9SWWqUmDPiHDxJsi79kjsE/1PJ5g==", - "dependencies": { + "requires": { "node-fetch-h2": "^2.3.0", "oas-kit-common": "^1.0.8", "reftools": "^1.1.6", "yaml": "^1.10.0", "yargs": "^15.3.1" - }, - "bin": { - "resolve": "resolve.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/oas-schema-walker": { + "oas-schema-walker": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", - "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } + "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==" }, - "node_modules/oas-validator": { + "oas-validator": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-4.0.8.tgz", "integrity": "sha512-bIt8erTyclF7bkaySTtQ9sppqyVc+mAlPi7vPzCLVHJsL9nrivQjc/jHLX/o+eGbxHd6a6YBwuY/Vxa6wGsiuw==", - "dependencies": { + "requires": { "ajv": "^5.5.2", "better-ajv-errors": "^0.6.7", "call-me-maybe": "^1.0.1", @@ -1724,40 +1468,34 @@ "reftools": "^1.1.5", "should": "^13.2.1", "yaml": "^1.8.3" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/object-assign": { + "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "node_modules/ono": { + "ono": { "version": "4.0.11", "resolved": "https://registry.npmjs.org/ono/-/ono-4.0.11.tgz", "integrity": "sha512-jQ31cORBFE6td25deYeD80wxKBMj+zBmHTrVxnc6CKhx8gho6ipmWM5zj/oeoqioZ99yqBls9Z/9Nss7J26G2g==", - "dependencies": { + "requires": { "format-util": "^1.0.3" } }, - "node_modules/openapi-sampler": { + "openapi-sampler": { "version": "1.0.0-beta.18", "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.0.0-beta.18.tgz", "integrity": "sha512-nG/0kvvSY5FbrU5A+Dbp1xTQN++7pKIh87/atryZlxrzDuok5Y6TCbpxO1jYqpUKLycE4ReKGHCywezngG6xtQ==", - "dependencies": { + "requires": { "json-pointer": "^0.6.0" } }, - "node_modules/openapi-to-postmanv2": { + "openapi-to-postmanv2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/openapi-to-postmanv2/-/openapi-to-postmanv2-2.0.0.tgz", "integrity": "sha512-RMHFhKNwXDtZa9Lc++ZLamhaWMXGerotbO0z9woMJ3afDJ+K7ekwDwF/lr7Vonep9KTJYzFKgygUMvE2SrQaYg==", - "dependencies": { + "requires": { "ajv": "6.12.3", "async": "3.2.0", "commander": "2.20.3", @@ -1769,133 +1507,101 @@ "postman-collection": "3.6.6", "yaml": "1.8.3" }, - "bin": { - "openapi2postmanv2": "bin/openapi2postmanv2.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/openapi-to-postmanv2/node_modules/ajv": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", - "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/openapi-to-postmanv2/node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/openapi-to-postmanv2/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/openapi-to-postmanv2/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/openapi-to-postmanv2/node_modules/oas-resolver-browser": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/oas-resolver-browser/-/oas-resolver-browser-2.3.3.tgz", - "integrity": "sha512-KvggQ6xU7WlUWRYZKEktR90zJtNCHi1wbTAZuUX6oSfmBSdZo/b26rzfg3w2AdPVwQPRXMga6tqLW3OhbUF0Qg==", - "dependencies": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "path-browserify": "^1.0.1", - "reftools": "^1.1.1", - "yaml": "^1.8.3", - "yargs": "^15.3.1" - }, - "bin": { - "resolve": "resolve.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/openapi-to-postmanv2/node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - }, - "node_modules/openapi-to-postmanv2/node_modules/yaml": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", - "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", - "dependencies": { - "@babel/runtime": "^7.8.7" - }, - "engines": { - "node": ">= 6" + "ajv": { + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.3.tgz", + "integrity": "sha512-4K0cK3L1hsqk9xIb2z9vs/XU+PGJZ9PNpJRDS9YLzmNdX6jmVPfamLvTJr0aDAusnHyCHO6MjzlkAsgtqp9teA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "oas-resolver-browser": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/oas-resolver-browser/-/oas-resolver-browser-2.3.3.tgz", + "integrity": "sha512-KvggQ6xU7WlUWRYZKEktR90zJtNCHi1wbTAZuUX6oSfmBSdZo/b26rzfg3w2AdPVwQPRXMga6tqLW3OhbUF0Qg==", + "requires": { + "node-fetch-h2": "^2.3.0", + "oas-kit-common": "^1.0.8", + "path-browserify": "^1.0.1", + "reftools": "^1.1.1", + "yaml": "^1.8.3", + "yargs": "^15.3.1" + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, + "yaml": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.8.3.tgz", + "integrity": "sha512-X/v7VDnK+sxbQ2Imq4Jt2PRUsRsP7UcpSl3Llg6+NRRqWLIvxkMFYtH1FmvwNGYRKKPa+EPA4qDBlI9WVG1UKw==", + "requires": { + "@babel/runtime": "^7.8.7" + } + } } }, - "node_modules/os-browserify": { + "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, - "node_modules/p-limit": { + "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { + "requires": { "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { + "p-locate": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dependencies": { + "requires": { "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/p-try": { + "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" }, - "node_modules/pako": { + "pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, - "node_modules/parse-asn1": { + "parse-asn1": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { + "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", "evp_bytestokey": "^1.0.0", @@ -1903,99 +1609,76 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/path-browserify": { + "path-browserify": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" }, - "node_modules/path-exists": { + "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, - "node_modules/pbkdf2": { + "pbkdf2": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dependencies": { + "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", "ripemd160": "^2.0.1", "safe-buffer": "^5.0.1", "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" } }, - "node_modules/perfect-scrollbar": { + "perfect-scrollbar": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.0.tgz", "integrity": "sha512-NrNHJn5mUGupSiheBTy6x+6SXCFbLlm8fVZh9moIzw/LgqElN5q4ncR4pbCBCYuCJ8Kcl9mYM0NgDxvW+b4LxA==" }, - "node_modules/picomatch": { + "picomatch": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==" }, - "node_modules/polished": { + "polished": { "version": "3.6.7", "resolved": "https://registry.npmjs.org/polished/-/polished-3.6.7.tgz", "integrity": "sha512-b4OViUOihwV0icb9PHmWbR+vPqaSzSAEbgLskvb7ANPATVXGiYv/TQFHQo65S53WU9i5EQ1I03YDOJW7K0bmYg==", - "dependencies": { + "requires": { "@babel/runtime": "^7.9.2" - }, - "engines": { - "node": ">=10" } }, - "node_modules/postcss": { + "postcss": { "version": "7.0.35", "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", - "dependencies": { + "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", "supports-color": "^6.1.0" }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/postcss-value-parser": { + "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, - "node_modules/postcss/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/postman-collection": { + "postman-collection": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/postman-collection/-/postman-collection-3.6.6.tgz", "integrity": "sha512-fm9AGKHbL2coSzD5nw+F07JrX7jzqu2doGIXevPPrwlpTZyTM6yagEdENeO/Na8rSUrI1+tKPj+TgAFiLvtF4w==", - "dependencies": { + "requires": { "escape-html": "1.0.3", "faker": "5.1.0", "file-type": "3.9.0", @@ -2010,173 +1693,151 @@ "sanitize-html": "1.20.1", "semver": "7.3.2", "uuid": "3.4.0" - } - }, - "node_modules/postman-collection/node_modules/marked": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", - "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==", - "bin": { - "marked": "bin/marked" }, - "engines": { - "node": ">= 8.16.2" + "dependencies": { + "marked": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.1.1.tgz", + "integrity": "sha512-mJzT8D2yPxoPh7h0UXkB+dBj4FykPJ2OIfxAWeIHrvoHDkFxukV/29QxoFQoPM6RLEwhIFdJpmKBlqVM3s2ZIw==" + } } }, - "node_modules/postman-url-encoder": { + "postman-url-encoder": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/postman-url-encoder/-/postman-url-encoder-2.1.3.tgz", "integrity": "sha512-CwQjnoxaugCGeOyzVeZ4k1cNQ6iS8OBCzuWzcf4kLStKeRp0MwmLKYv25frynmDpugUUimq/d+FZCq6GtIX9Ag==", - "dependencies": { + "requires": { "postman-collection": "^3.6.4", "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } } }, - "node_modules/postman-url-encoder/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/prismjs": { + "prismjs": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.21.0.tgz", "integrity": "sha512-uGdSIu1nk3kej2iZsLyDoJ7e9bnPzIgY0naW/HdknGj61zScaprVEVGHrPoXqI+M9sP0NDnTK2jpkvmldpuqDw==", - "optionalDependencies": { + "requires": { "clipboard": "^2.0.0" } }, - "node_modules/process": { + "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, - "node_modules/process-nextick-args": { + "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, - "node_modules/prop-types": { + "prop-types": { "version": "15.7.2", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "dependencies": { + "requires": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.8.1" } }, - "node_modules/public-encrypt": { + "public-encrypt": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { + "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" + } } }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==" - }, - "node_modules/punycode": { + "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, - "node_modules/querystring": { + "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, - "node_modules/querystring-es3": { + "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "engines": { - "node": ">=0.4.x" - } + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, - "node_modules/randombytes": { + "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { + "requires": { "safe-buffer": "^5.1.0" } }, - "node_modules/randomfill": { + "randomfill": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { + "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" } }, - "node_modules/react": { + "react": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/react-dom": { + "react-dom": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", "prop-types": "^15.6.2", "scheduler": "^0.19.1" - }, - "peerDependencies": { - "react": "^16.13.1" } }, - "node_modules/react-is": { + "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, - "node_modules/react-tabs": { + "react-tabs": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-3.1.1.tgz", "integrity": "sha512-HpySC29NN1BkzBAnOC+ajfzPbTaVZcSWzMSjk56uAhPC/rBGtli8lTysR4CfPAyEE/hfweIzagOIoJ7nu80yng==", - "dependencies": { + "requires": { "clsx": "^1.1.0", "prop-types": "^15.5.0" - }, - "peerDependencies": { - "react": "^16.3.0" } }, - "node_modules/readable-stream": { + "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dependencies": { + "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", @@ -2184,47 +1845,46 @@ "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/readable-stream/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/readable-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + }, "dependencies": { - "safe-buffer": "~5.1.0" + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, - "node_modules/readdirp": { + "readdirp": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dependencies": { + "requires": { "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" } }, - "node_modules/redoc": { + "redoc": { "version": "2.0.0-rc.40", "resolved": "https://registry.npmjs.org/redoc/-/redoc-2.0.0-rc.40.tgz", "integrity": "sha512-f1na5vWCr37R5+G4xhbD1TjH6j6b/he8nEMGGJOwDcIMMcDK88S0YEWuhplhdVuZdc4c61CoxZqGXqcDRp5m0w==", - "dependencies": { + "requires": { "@redocly/react-dropdown-aria": "^2.0.11", "@types/node": "^13.11.1", "classnames": "^2.2.6", @@ -2249,24 +1909,13 @@ "swagger2openapi": "^6.2.1", "tslib": "^2.0.0", "url-template": "^2.0.8" - }, - "engines": { - "node": ">=6.9", - "npm": ">=3.0.0" - }, - "peerDependencies": { - "core-js": "^3.1.4", - "mobx": "^4.2.0 || ^5.0.0", - "react": "^16.8.4", - "react-dom": "^16.8.4", - "styled-components": "^4.1.1" } }, - "node_modules/redoc-cli": { + "redoc-cli": { "version": "0.9.12", "resolved": "https://registry.npmjs.org/redoc-cli/-/redoc-cli-0.9.12.tgz", "integrity": "sha512-9Ap7WfEsYtAoVZNyA8lryWAsU2Wq0lHXaNiFgdVZb4zltHNTYEqKmRi06WhileeuqVTNkd1CF2S5CCS5Xg9+aQ==", - "dependencies": { + "requires": { "chokidar": "^3.4.1", "handlebars": "^4.7.6", "isarray": "^2.0.5", @@ -2279,78 +1928,52 @@ "styled-components": "^5.1.1", "tslib": "^2.0.0", "yargs": "^15.4.1" - }, - "bin": { - "redoc-cli": "index.js" - }, - "engines": { - "node": ">= 8" } }, - "node_modules/reftools": { + "reftools": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.6.tgz", - "integrity": "sha512-rQfJ025lvPjw9qyQuNPqE+cRs5qVs7BMrZwgRJnmuMcX/8r/eJE8f5/RCunJWViXKHmN5K2DFafYzglLOHE/tw==", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } + "integrity": "sha512-rQfJ025lvPjw9qyQuNPqE+cRs5qVs7BMrZwgRJnmuMcX/8r/eJE8f5/RCunJWViXKHmN5K2DFafYzglLOHE/tw==" }, - "node_modules/regenerator-runtime": { + "regenerator-runtime": { "version": "0.13.7", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" }, - "node_modules/require-directory": { + "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, - "node_modules/require-main-filename": { + "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, - "node_modules/ripemd160": { + "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { + "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, - "node_modules/safe-buffer": { + "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" }, - "node_modules/safer-buffer": { + "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sanitize-html": { + "sanitize-html": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/sanitize-html/-/sanitize-html-1.20.1.tgz", "integrity": "sha512-txnH8TQjaQvg2Q0HY06G6CDJLVYCpbnxrdO0WN8gjCKaU5J0KbyGYhZxx5QJg3WLZ1lB7XU9kDkfrCXUozqptA==", - "dependencies": { + "requires": { "chalk": "^2.4.1", "htmlparser2": "^3.10.0", "lodash.clonedeep": "^4.5.0", @@ -2363,64 +1986,55 @@ "xtend": "^4.0.1" } }, - "node_modules/scheduler": { + "scheduler": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", - "dependencies": { + "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" } }, - "node_modules/select": { + "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", "optional": true }, - "node_modules/semver": { + "semver": { "version": "7.3.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==" }, - "node_modules/set-blocking": { + "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "node_modules/setimmediate": { + "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, - "node_modules/sha.js": { + "sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { + "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" } }, - "node_modules/shallowequal": { + "shallowequal": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, - "node_modules/should": { + "should": { "version": "13.2.3", "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "dependencies": { + "requires": { "should-equal": "^2.0.0", "should-format": "^3.0.3", "should-type": "^1.4.0", @@ -2428,94 +2042,85 @@ "should-util": "^1.0.0" } }, - "node_modules/should-equal": { + "should-equal": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "dependencies": { + "requires": { "should-type": "^1.4.0" } }, - "node_modules/should-format": { + "should-format": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", "integrity": "sha1-m/yPdPo5IFxT04w01xcwPidxJPE=", - "dependencies": { + "requires": { "should-type": "^1.3.0", "should-type-adaptors": "^1.0.1" } }, - "node_modules/should-type": { + "should-type": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", "integrity": "sha1-B1bYzoRt/QmEOmlHcZ36DUz/XPM=" }, - "node_modules/should-type-adaptors": { + "should-type-adaptors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "dependencies": { + "requires": { "should-type": "^1.3.0", "should-util": "^1.0.0" } }, - "node_modules/should-util": { + "should-util": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==" }, - "node_modules/slugify": { + "slugify": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.4.5.tgz", - "integrity": "sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ==", - "engines": { - "node": ">=8.0.0" - } + "integrity": "sha512-WpECLAgYaxHoEAJ8Q1Lo8HOs1ngn7LN7QjXgOLbmmfkcWvosyk4ZTXkTzKyhngK640USTZUlgoQJfED1kz5fnQ==" }, - "node_modules/source-map": { + "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "node_modules/sprintf-js": { + "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "node_modules/srcset": { + "srcset": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/srcset/-/srcset-1.0.0.tgz", "integrity": "sha1-pWad4StC87HV6D7QPHEEb8SPQe8=", - "dependencies": { + "requires": { "array-uniq": "^1.0.2", "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" } }, - "node_modules/stickyfill": { + "stickyfill": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stickyfill/-/stickyfill-1.1.1.tgz", "integrity": "sha1-OUE/7p0CXHSn5ZzuyyN4TMDxfwI=" }, - "node_modules/stream-browserify": { + "stream-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dependencies": { + "requires": { "inherits": "~2.0.1", "readable-stream": "^2.0.2" } }, - "node_modules/stream-http": { + "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dependencies": { + "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", "readable-stream": "^2.3.6", @@ -2523,43 +2128,37 @@ "xtend": "^4.0.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { + "string-width": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", - "dependencies": { + "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/strip-ansi": { + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dependencies": { + "requires": { "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" } }, - "node_modules/styled-components": { + "styled-components": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-5.2.0.tgz", "integrity": "sha512-9qE8Vgp8C5cpGAIdFaQVAl89Zgx1TDM4Yf4tlHbO9cPijtpSXTMLHy9lmP0lb+yImhgPFb1AmZ1qMUubmg3HLg==", - "dependencies": { + "requires": { "@babel/helper-module-imports": "^7.0.0", "@babel/traverse": "^7.4.5", "@emotion/is-prop-valid": "^0.8.8", @@ -2570,36 +2169,21 @@ "hoist-non-react-statics": "^3.0.0", "shallowequal": "^1.1.0", "supports-color": "^5.5.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/styled-components" - }, - "peerDependencies": { - "react": ">= 16.8.0", - "react-dom": ">= 16.8.0", - "react-is": ">= 16.8.0" } }, - "node_modules/supports-color": { + "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { + "requires": { "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" } }, - "node_modules/swagger2openapi": { + "swagger2openapi": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-6.2.3.tgz", "integrity": "sha512-cUUktzLpK69UwpMbcTzjMw2ns9RZChfxh56AHv6+hTx3StPOX2foZjPgds3HlJcINbxosYYBn/D3cG8nwcCWwQ==", - "dependencies": { + "requires": { "better-ajv-errors": "^0.6.1", "call-me-maybe": "^1.0.1", "node-fetch-h2": "^2.3.0", @@ -2611,258 +2195,218 @@ "reftools": "^1.1.5", "yaml": "^1.8.3", "yargs": "^15.3.1" - }, - "bin": { - "boast": "boast.js", - "oas-validate": "oas-validate.js", - "swagger2openapi": "swagger2openapi.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" } }, - "node_modules/timers-browserify": { + "timers-browserify": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dependencies": { + "requires": { "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" } }, - "node_modules/tiny-emitter": { + "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", "optional": true }, - "node_modules/to-arraybuffer": { + "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, - "node_modules/to-fast-properties": { + "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "engines": { - "node": ">=4" - } + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, - "node_modules/to-regex-range": { + "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { + "requires": { "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" } }, - "node_modules/tslib": { + "tslib": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" }, - "node_modules/tty-browserify": { + "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, - "node_modules/uglify-js": { + "uglify-js": { "version": "3.10.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.4.tgz", "integrity": "sha512-kBFT3U4Dcj4/pJ52vfjCSfyLyvG9VYYuGYPmrPvAxRw/i7xHiT4VvCev+uiEMcEEiu6UNB6KgWmGtSUYIWScbw==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } + "optional": true }, - "node_modules/uri-js": { + "uri-js": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", - "dependencies": { + "requires": { "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + } } }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/url": { + "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { + "requires": { "punycode": "1.3.2", "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + } } }, - "node_modules/url-template": { + "url-template": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=" }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/util": { + "util": { "version": "0.11.1", "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dependencies": { + "requires": { "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } } }, - "node_modules/util-deprecate": { + "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, - "node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/uuid": { + "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).", - "bin": { - "uuid": "bin/uuid" - } + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "node_modules/validate.io-array": { + "validate.io-array": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz", "integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=" }, - "node_modules/validate.io-function": { + "validate.io-function": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz", "integrity": "sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=" }, - "node_modules/validate.io-integer": { + "validate.io-integer": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz", "integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=", - "dependencies": { + "requires": { "validate.io-number": "^1.0.3" } }, - "node_modules/validate.io-integer-array": { + "validate.io-integer-array": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz", "integrity": "sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=", - "dependencies": { + "requires": { "validate.io-array": "^1.0.3", "validate.io-integer": "^1.0.4" } }, - "node_modules/validate.io-number": { + "validate.io-number": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz", "integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=" }, - "node_modules/vm-browserify": { + "vm-browserify": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" }, - "node_modules/which-module": { + "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "node_modules/wordwrap": { + "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, - "node_modules/wrap-ansi": { + "wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { + "requires": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dependencies": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/xtend": { + "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "node_modules/y18n": { + "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" }, - "node_modules/yaml": { + "yaml": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "engines": { - "node": ">= 6" - } + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" }, - "node_modules/yargs": { + "yargs": { "version": "15.4.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dependencies": { + "requires": { "cliui": "^6.0.0", "decamelize": "^1.2.0", "find-up": "^4.1.0", @@ -2874,21 +2418,15 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" } }, - "node_modules/yargs-parser": { + "yargs-parser": { "version": "18.1.3", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dependencies": { + "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" } } } diff --git a/package.json b/package.json index ed087d1..0286b5a 100644 --- a/package.json +++ b/package.json @@ -35,10 +35,5 @@ "redoc-cli": "^0.9.12", "yaml": "^1.10.0" }, - "devDependencies": {}, - "overrides": { - "redoc": { - "styled-components": "^5.2.0" - } - } + "devDependencies": {} } diff --git a/redoc-static.html b/redoc-static.html new file mode 100644 index 0000000..ee439cb --- /dev/null +++ b/redoc-static.html @@ -0,0 +1,751 @@ + + + + + + SeerBit API Reference + + + + + + + + + +
+ +
+ +

SeerBit API Reference (1.0)

Download OpenAPI specification:Download

Authentication

Bearer

Security Scheme Type API Key
Header parameter name: Authorization

Basic

Security Scheme Type HTTP
HTTP Authorization Scheme basic

AUTHENTICATION

Generate Encrypted Secret Key

To make API calls on SeerBit, you will be required to pass a bearer token. To generate a token simply pass your pubic and secret key to rceive a token to process further API calls.

+
Request Body schema: application/json
key
required
string

This consist of the PrivateKey and the publicKey separated with a '.' in the middle(eg:{privateKey.publicKey}

+

Responses

Request samples

Content type
application/json
{
  • "key": "SBTESTSECK_9Cb8dbqR5Rc2JwZaa77P5QYHzQaeGUcrkEMD1dEi.SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

STANDARD CHECKOUT

Generate Hash

This is used to ensure the request payload has not been altered

+
Request Body schema: application/json
publicKey
required
string

This is the merchant public key.

+
amount
required
string

This is the amount to be paid.

+
currency
required
string

This is the currency the transaction is to be carried out in.

+
country
required
string

This is the country from which the transaction is been carried out from

+
paymentReference
required
string

This is the unique identifier for a transaction, to be generated by merchant.

+
email
required
string

This is the email of the customer.

+
productId
required
string

This is the product id entered by the merchant.

+
productDescription
required
string

This is the product description supplied by the merchant.

+
callbackUrl
required
string

Responses

Request samples

Content type
application/json
{
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "amount": "10.00",
  • "currency": "NGN",
  • "country": "NG",
  • "paymentReference": "3791090233047WZ73QN",
  • "email": "mamadou.diouf@intouchgroup.net",
  • "productId": "15013",
  • "productDescription": "touch badge",
  • "callbackUrl": "https://gutouch.com"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Payment Link From Checkout

SeerBit Checkout Standard Initialises a transaction from merchants server to generate a payment link which redirects your customers to a page to make payment and after payment has been made the customer is redirected back to the merchants website.

+
Authorizations:
Request Body schema: application/json
publicKey
required
string

This is the merchant public key.

+
amount
required
string

This is the amount to be paid.

+
currency
required
string

This is the currency the transaction is to be carried out in.

+
country
required
string

This is the country from which the transaction is been carried out from

+
paymentReference
required
string

This is the unique identifier for a transaction, to be generated by merchant.

+
email
required
string

This is the email of the customer.

+
productId
required
string

This is the product id entered by the merchant.

+
productDescription
required
string

This is the product description supplied by the merchant.

+
callbackUrl
required
string

This is the callback url supplied by the merchant so that Seerbit can redirect back to it .

+
hash
required
string

This is the hash of the concatenated string for payment. Check hash module for more clarification.

+
hashType
required
string

This refers to the hash type used in generating the hash

+

Responses

Request samples

Content type
application/json
{
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "amount": "10.00",
  • "currency": "NGN",
  • "country": "NG",
  • "paymentReference": "P791090233047WZ73QN",
  • "email": "mamadou.diouf@intouchgroup.net",
  • "productId": "15013",
  • "productDescription": "touch badge",
  • "callbackUrl": "https://gutouch.com",
  • "hash": "cfb5464ea21cce315ea72fb28f7ea45c4b61c443783eeff82dea98e57d445e15",
  • "hashType": "sha256"
}

Response samples

Content type
application/json
{}

ORDER CHECKOUT

Create Order Before Payment

Create an order before payment

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "email": "test@mvaa.com",
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "paymentReference": "2PPTG108Q13432E29P23R5L6W93I9",
  • "fullName": "",
  • "orderType": "BULK_BULK",
  • "mobileNumber": "",
  • "country": "NG",
  • "currency": "NGN",
  • "amount": "250.00",
  • "orders":
    [
    ]
}

Response samples

Content type
application/json
{}

Create Order After Payment

Create an order after payment

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "0w0eimkizc41602513327447",
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "orders":
    [
    ]
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Update Order

Update an order

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "0w0eimkizc41602513327447",
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "orders":
    [
    ]
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Get Orders

Get a list of orders

+
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Get an Order with Payment Reference

Get order details with payment reference

+
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Get Order with Order Id

Get order details with OrderId

+
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

PAYMENT METHOD

Initiate Payment

Accept more payments with our unified payments API. Accept payments from all major cards and the most popular local and alternative payment methods all in a single integration.

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
Example
{
  • "fullName": "john doe",
  • "email": "johndoe@gmail.com",
  • "mobileNumber": 248360953,
  • "publicKey": "SBPUBK_QGOX9NBAHWDYY1PAFSG2PTDOSSZYEWXM",
  • "paymentReference": "O456S5077907982QWEuWAT05M",
  • "deviceType": "nokia 3310",
  • "sourceIP": "1.0.1.0",
  • "currency": "GHS",
  • "productDescription": "snacks",
  • "country": "GH",
  • "network": "MTN",
  • "voucherCode": "",
  • "fee": "0.00",
  • "amount": "1.00",
  • "productId": "grocery",
  • "paymentType": "MOMO"
}

Response samples

Content type
application/json
Example
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Get Banks

Get list of banks

+

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

MOMO

OTP Momo

When making MOMO transfers, and OTP is required to complete the payment

+
Authorizations:
Request Body schema: application/json
linkingReference
required
string

This is the internal gateway reference

+
otp
required
string

This is the TOKEN sent to customer’s phone or email

+

Responses

Request samples

Content type
application/json
{
  • "linkingReference": "CF630837081601460887752",
  • "otp": "81015"
}

Response samples

Content type
application/json
Example
null

NON 3DS PAYMENT

Charge Card

This payment option is used to charge non 3d transactions

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "publicKey": "SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu",
  • "amount": "10.00",
  • "fullName": "Diei Okechukwu Peter",
  • "mobileNumber": 8030540611,
  • "currency": "NGN",
  • "country": "NG",
  • "paymentReference": "NGN0000037Q35",
  • "email": "okechukwu.diei2@gmail.com",
  • "productId": "Foods",
  • "productDescription": "RASPBERRY",
  • "cardNumber": "5123450000000008",
  • "expiryMonth": "05",
  • "expiryYear": "21"
}

Response samples

Content type
application/json
Example
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

CARD

Check Status

This Operation allows you to check the status of a transaction via the status check api. This is done by making a Get request to the endpoint below with your payment reference.

+
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

ACCOUNT

Validate Transaction

This option is used to complete an account transaction, when OTP is required

+
Authorizations:
Request Body schema: application/json
linkingReference
required
string

This is the internal gateway reference

+
otp
required
string

This is the TOKEN sent to customer’s phone or email

+

Responses

Request samples

Content type
application/json
{
  • "linkingReference": "F092648971601293723061",
  • "otp": "123456"
}

Response samples

Content type
application/json
Example
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

TOKENIZE

Tokenize a Card

In order to store your customers payment details, you need to pass some additional parameter when making the first payment request using the payments/tokenize endpoint, the Cvv field and pin are optional(this could be null). After the first payment is made, the payment details is collected and a token is generated for it which is then stored for future use.

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "publicKey": "SBPUBK_OMX6ZNRZPLIHQ9Y0ZG6FCNR0EAYIGIAT",
  • "amount": "0.00",
  • "fullName": "john doe",
  • "mobileNumber": 8033456599,
  • "currency": "NGN",
  • "country": "NG",
  • "paymentReference": "KES0092992991",
  • "email": "johndoe@gmail.com",
  • "productId": "Foods",
  • "productDescription": "RASPBERRY",
  • "cardNumber": "5123450000000008",
  • "cvv": "100",
  • "expiryMonth": "05",
  • "expiryYear": "21"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

AUTHORISE

Authorise

In SeerBit API, the term “authorisation” indicates, that payment is authorised but not captured. This allows a merchant to cancel transaction at their discretion, typically based but not limited to fraud-related activities. This authorisation state is valid for a limited period of time, which provides a window to cancel the transaction.

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
Example
{
  • "paymentReference": "PREAUTH124456789798765k3K1CB0",
  • "publicKey": "SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu",
  • "cardNumber": "5123450000000008",
  • "cvv": "100",
  • "expiryMonth": "05",
  • "expiryYear": "21",
  • "currency": "NGN",
  • "country": "NG",
  • "productDescription": "preauth test capture",
  • "amount": "100.00",
  • "email": "johndoe@gmail.com",
  • "fullName": "john doe"
}

Response samples

Content type
application/json
Example
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

3DS Authorise

PIN and CVV are not Required to complete Transaction. Authorization is completed on 3DS.

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "30451B789S987643108hgfdsfP6W",
  • "publicKey": "SBPUBK_OMX6ZNRZPLIHQ9Y0ZG6FCNR0EAYIGIAT",
  • "cardNumber": "5242820813772165",
  • "cvv": "865",
  • "expiryMonth": "02",
  • "expiryYear": "22",
  • "currency": "NGN",
  • "country": "NG",
  • "productDescription": "preauth test capture",
  • "amount": "1.00",
  • "email": "johndoe@gmail.com",
  • "fullName": "john doe",
  • "callbackUrl": "https://google.com"
}

Response samples

Content type
application/json
Example
{}

PREAUTHORIZATION

Capture

Captures a payment if supported by the payment method.

+
Authorizations:
Request Body schema: application/json
paymentReference
required
string

This is the unique identifier for a transaction, to be generated by merchant.

+
currency
required
string

This is the currency the transaction is to be carried out in.

+
country
required
string

This is the country the customer is doing the transaction from

+
productDescription
required
string

This is the product description supplied by the merchant.

+
amount
required
string

This is the amount to be paid.

+
publicKey
required
string

This is the merchant public key.

+

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "PREAUTH124456789798765k321CB0",
  • "currency": "NGN",
  • "country": "NG",
  • "productDescription": "preauth test capture",
  • "amount": "5.10",
  • "publicKey": "SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu"
}

Response samples

Content type
application/json
Example
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Refund

Refunds a payment if supported by the payment method.

+
Authorizations:
Request Body schema: application/json
paymentReference
required
string

This is the unique identifier for a transaction, to be generated by merchant.

+
currency
required
string

This is the currency the transaction is to be carried out in.

+
country
required
string

This is the country the customer is doing the transaction from

+
productDescription
required
string

This is the product description supplied by the merchant.

+
amount
required
string

This is the amount to be paid.

+
publicKey
required
string

This is the merchant public key.

+

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "PREAUTH124456789798765432CB0",
  • "currency": "NGN",
  • "country": "NG",
  • "productDescription": "preauth test capture",
  • "amount": "5.10",
  • "publicKey": "SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

Cancel

Cancel a payment if supported by the payment method.

+
Authorizations:
Request Body schema: application/json
paymentReference
required
string

This is the unique identifier for a transaction, to be generated by merchant.

+
publicKey
required
string

This is the merchant public key.

+
country
required
string

This is the country the customer is doing the transaction from

+
productDescription
required
string

This is the product description supplied by the merchant.

+

Responses

Request samples

Content type
application/json
{
  • "paymentReference": "PREAUTH124456789798765k3L1CB0",
  • "publicKey": "SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu",
  • "country": "NG",
  • "productDescription": "test void"
}

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}

RECURRENT

Initiate Subscription

To complete this transaction, merchant is expected to redirect to the 3DSecure site via the redirect URL provided with the response below. However if the redirect url is not returned and the code is S20 and the message is transaction is pending, the Validate OTP endpoint should be called as the customer would have received a token either by email or sms on the customers phone. To get the subscription created or the status of a subscription for the customer, the GET Subscription endpoint is called by passing the paymentReference as billingId.

+
Authorizations:
Request Body schema: application/json

Responses

Request samples

Content type
application/json
{
  • "publicKey": "SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u",
  • "paymentReference": "TPR2181t55PKR540RPP1U1W4392WO",
  • "planId": "",
  • "cardNumber": "5123450000000008",
  • "expiryMonth": "05",
  • "callbackUrl": "https://www.google.com",
  • "expiryYear": "21",
  • "cvv": "100",
  • "amount": "1000.00",
  • "currency": "NGN",
  • "productDescription": "Pilot Test Subscription",
  • "productId": "Terrain",
  • "country": "NG",
  • "startDate": "2020-02-25 00:00:00",
  • "cardName": "Kolade Samuel",
  • "billingCycle": "WEEKLY",
  • "email": "akintoyekolawole@gmail.com",
  • "mobileNumber": "08033456500",
  • "customerId": "12345678901234",
  • "pin": "0999",
  • "type": "3DSECURE",
  • "billingPeriod": "1",
  • "subscriptionAmount": true
}

Response samples

Content type
application/json
{}

Get a Subscription

Get customer subscription

+
Authorizations:

Responses

Response samples

Content type
application/json
{
  • "status": "SUCCESS",
  • "data":
    {
    }
}
+ + + + \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index 2e60f12..1b48ea0 100644 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -2,18 +2,7 @@ set -e mkdir -p docs/specs docs/style echo -n "Building Documentation... " -node scripts/normalize-mintlify-openapi.js specs/external-api.yml npm run redoc -for attempt in {1..30}; do - if [[ -f redoc-static.html ]]; then - break - fi - sleep 1 -done -if [[ ! -f redoc-static.html ]]; then - echo "Redoc bundle was not generated" - exit 1 -fi npm run convert:external:api npm run modify:external:api RESULT=$? diff --git a/scripts/modify-pm-collection.js b/scripts/modify-pm-collection.js index cc8d746..fb4d048 100644 --- a/scripts/modify-pm-collection.js +++ b/scripts/modify-pm-collection.js @@ -2,7 +2,7 @@ * Modify PM Collection * + adds variables * + variables' values read from openAPI spec yaml file - * + * * Specify optionally: * -i PM Collection to be modified * -a openAPI spec yaml file @@ -21,21 +21,20 @@ const apiSpec = YAML.parse(fs.readFileSync(apiSpecFile).toString()); console.log("Reading auths from examples in " + apiSpecFile); -// The OpenAPI definition now keeps request samples with their operations rather -// than in legacy named component schemas. Read the current Generate Hash sample -// and retain Postman variables for values a user supplies at runtime. -const hashExamples = - apiSpec.paths?.["/api/v2/encrypt/hashs"]?.post?.requestBody?.content?.[ - "application/json" - ]?.examples; -const hashExample = hashExamples && Object.values(hashExamples)[0]?.value; -const specPK = hashExample?.publicKey || "{{publicKey}}"; -const specToken = "{{BearerToken}}"; +var specToken, specPK; +try { + specPK = apiSpec.components.schemas.CaptureRequest.example.publicKey; + specToken = + apiSpec.components.schemas.GenerateEncryptedSecretKeyResponse.example.data + .EncrytedSecKey.encryptedKey; +} catch (err) { + throw err; +} console.log("Token: " + specToken); console.log("Username (Public Key): " + specPK); -console.log("Reading converted PM Collection " + pmInputFile); +console.log("Reading converted PM Collection " + pmInputFile) var convertedPMC = JSON.parse(fs.readFileSync(pmInputFile).toString()); convertedPMC.variable = [ diff --git a/scripts/normalize-mintlify-openapi.js b/scripts/normalize-mintlify-openapi.js deleted file mode 100644 index bc34f02..0000000 --- a/scripts/normalize-mintlify-openapi.js +++ /dev/null @@ -1,143 +0,0 @@ -const fs = require("fs"); -const YAML = require("yaml"); - -const file = process.argv[2] || "specs/external-api.yml"; -const source = fs.readFileSync(file, "utf8"); -const spec = YAML.parse(source); - -function parseBodyFields(description) { - const lines = description.split("\n"); - const fields = []; - const keptLines = []; - let removedTable = false; - - for (let index = 0; index < lines.length; index += 1) { - if ( - !/^\s*\|\s*Field\s*\|/i.test(lines[index]) || - !lines[index + 1]?.includes("|---") - ) { - keptLines.push(lines[index]); - continue; - } - - removedTable = true; - for ( - index += 2; - index < lines.length && /^\s*\|/.test(lines[index]); - index += 1 - ) { - const cells = lines[index] - .split("|") - .slice(1, -1) - .map((cell) => cell.trim()); - if (cells.length < 4) continue; - - const name = cells[0].replace(/^`|`$/g, ""); - const type = cells[1].toLowerCase(); - if (!name || name.startsWith("(") || name.startsWith("*") || name === "—") - continue; - if (!/^[A-Za-z][A-Za-z0-9_.[\]-]*$/.test(name)) continue; - - const propertyName = name.replace(/\[\]$/, "").replace(/\.[^.]+$/, ""); - if (fields.some((field) => field.name === propertyName)) continue; - - fields.push({ - name: propertyName, - type: ["number", "integer", "boolean", "array"].includes(type) - ? type - : "string", - description: cells[3], - required: /^yes\b/i.test(cells[2]), - }); - } - index -= 1; - } - - if (!removedTable) return { description, fields }; - - const withoutTable = keptLines - .join("\n") - .replace(/\*\*Body fields[^\n]*\*\*/gi, "") - .replace(/\n{3,}/g, "\n\n") - .trim(); - - return { description: withoutTable, fields }; -} - -let normalized = 0; -const tagDescriptions = Object.fromEntries( - (spec.tags || []) - .map((tag) => [tag.name, tag.description]) - .filter(([, description]) => description), -); - -for (const path of Object.keys(spec.paths || {})) { - for (const operation of Object.values(spec.paths[path] || {})) { - if (!operation || typeof operation !== "object" || !operation.requestBody) - continue; - const mediaType = operation.requestBody.content?.["application/json"]; - if (!mediaType || !mediaType.schema || operation.description == null) - continue; - - const sourceDescription = - operation.requestBody.description || operation.description; - if (!operation.requestBody.description) { - operation.requestBody.description = sourceDescription; - const pageDescription = operation.tags - ?.map((tag) => tagDescriptions[tag]) - .find(Boolean); - if (pageDescription) operation.description = pageDescription; - } - - const parsed = parseBodyFields(sourceDescription); - if ( - !parsed.fields.length && - (mediaType.schema.properties || mediaType.schema.type === "array") - ) - continue; - const example = Object.values(mediaType.examples || {})[0]?.value; - const exampleObject = Array.isArray(example) ? example[0] : example; - const exampleFields = - !parsed.fields.length && - exampleObject && - typeof exampleObject === "object" - ? Object.entries(exampleObject).map(([name, value]) => ({ - name, - type: Array.isArray(value) - ? "array" - : value === null - ? "string" - : typeof value, - description: undefined, - required: false, - })) - : []; - const fields = parsed.fields.length ? parsed.fields : exampleFields; - if (!fields.length) continue; - - operation.description = parsed.description; - const itemSchema = { - type: "object", - properties: Object.fromEntries( - fields.map((field) => [ - field.name, - Object.assign( - { type: field.type }, - field.description ? { description: field.description } : {}, - ), - ]), - ), - }; - const required = fields - .filter((field) => field.required) - .map((field) => field.name); - if (required.length) itemSchema.required = required; - mediaType.schema = Array.isArray(example) - ? { type: "array", items: itemSchema } - : itemSchema; - normalized += 1; - } -} - -fs.writeFileSync(file, YAML.stringify(spec)); -console.log(`Normalized ${normalized} request-body schemas in ${file}`); diff --git a/specs/external-api.yml b/specs/external-api.yml index d7b4349..e40ca3d 100644 --- a/specs/external-api.yml +++ b/specs/external-api.yml @@ -1,3525 +1,3117 @@ -openapi: 3.0.3 +openapi: 3.0.1 info: - title: SeerBit External API Reference + title: SeerBit API Reference + contact: {} version: "1.0" - description: OpenAPI reference generated from the current Postman collection. - Each operation corresponds directly to a request in the Postman collection. servers: - - url: https://seerbitapi.com +- url: https://seerbitapi.com/api/v2 tags: - - name: AUTHENTICATION - description: Create the encrypted key used as the Bearer token for authenticated - SeerBit API requests. - - name: STANDARD CHECKOUT - description: Create hosted checkout payment links, including normal and - split-payment flows. - - name: VIRTUAL ACCOUNTS - description: Create and manage virtual bank accounts and retrieve their payment - activity. - - name: PAYMENT METHODS - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - - name: PAYMENT QUERY - description: Look up the current result and details of a payment using its reference. - - name: INVOICING - description: Create, send, retrieve, and manage merchant invoices. - - name: PARTNERS API - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - - name: TOKENIZATION - description: Tokenize cards and use authorization tokens for subsequent or bulk charges. - - name: RECURRING & SUBSCRIPTIONS - description: Create and manage subscription plans, customer subscriptions, and - recurring charges. - - name: PAYMENT LINKS - description: Create, retrieve, update, and remove reusable payment links. - - name: POCKET - description: Authenticate and manage SeerBit Pockets, including balances, - sub-pockets, and internal transfers. - - name: PAYOUT - description: Verify destination accounts and initiate or confirm external bank payouts. - - name: WEBHOOKS (REFERENCE) - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. +- name: AUTHENTICATION +- name: STANDARD CHECKOUT +- name: ORDER CHECKOUT +- name: PAYMENT METHOD +- name: MOMO +- name: NON 3DS PAYMENT +- name: CARD +- name: ACCOUNT +- name: TOKENIZE +- name: AUTHORISE +- name: PREAUTHORIZATION +- name: RECURRENT paths: - /api/v2/encrypt/keys: + /encrypt/keys: post: tags: - - AUTHENTICATION - summary: Generate Encrypted Key - description: Create the encrypted key used as the Bearer token for authenticated - SeerBit API requests. - operationId: post_generate-encrypted-key_0 - servers: - - url: https://seerbitapi.com + - AUTHENTICATION + summary: Generate Encrypted Secret Key + description: 'To make API calls on SeerBit, you will be required to pass a bearer token. To generate a token simply pass your pubic and secret key to rceive a token to process further API calls.' + operationId: GenerateEncryptedSecretKey requestBody: - required: true - description: >- - Exchanges your `SECRET_KEY` and `publicKey` for an `EncryptedSecKey`. - Use that value as the `BearerToken` collection variable — it's the - Bearer token for every other authenticated request here. Call this - once per session, or whenever your key changes; it does not expire on - a fixed schedule but should be re-generated if a request starts - failing auth. - - - **Body fields** - - This endpoint is intentionally **No Auth** — you don't have a token yet when you call it. - content: - application/json: - schema: - type: object - properties: - key: - type: string - description: "Your `SECRET_KEY` and `publicKey` joined with a period: - `SECRET_KEY.publicKey`" - required: - - key - examples: - generate-encrypted-key: - summary: Generate Encrypted Key - value: - key: "{{SECRET_KEY}}.{{publicKey}}" - responses: - "200": - description: Successful response - /api/v2/encrypt/hashs: - post: - tags: - - AUTHENTICATION - summary: Generate Hash - description: Create the encrypted key used as the Bearer token for authenticated - SeerBit API requests. - operationId: post_generate-hash_1 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - paymentReference: - type: string - planId: - type: string - cardNumber: - type: string - expiryMonth: - type: string - callbackUrl: - type: string - expiryYear: - type: string - cvv: - type: string - amount: - type: string - currency: - type: string - productDescription: - type: string - productId: - type: string - country: - type: string - startDate: - type: string - cardName: - type: string - billingCycle: - type: string - email: - type: string - mobileNumber: - type: string - billingPeriod: - type: string - subscriptionAmount: - type: boolean - examples: - generate-hash: - summary: Generate Hash - value: - publicKey: "{{publicKey}}" - paymentReference: sub_ref_001 - planId: "{{planId}}" - cardNumber: "5123450000000008" - expiryMonth: "01" - callbackUrl: https://example.com/callback - expiryYear: "28" - cvv: "000" - amount: "100" - currency: NGN - productDescription: Subscription - productId: product222 - country: NG - startDate: 2026-09-01 - cardName: Jane Doe - billingCycle: MONTHLY - email: customer@example.com - mobileNumber: "08012345678" - billingPeriod: "1" - subscriptionAmount: false - description: >- - Generic hash-generation endpoint — you pass the exact same body as the - request you want a hash for, and SeerBit returns a hash you attach to - that other call. The doc page's own worked example happens to use a - subscription-creation payload (shown in this request's saved body); - swap the body for whatever request you're actually hashing, keeping - the same field names and types that request expects. - - - **Verification note:** The available response example describes the _downstream_ payment response (`redirectUrl`, `paymentReference`) rather than the response returned by this endpoint. Confirm the actual response shape with a live sandbox call before relying on it. - responses: - "200": - description: Successful response - /api/v2/payments: - post: - tags: - - STANDARD CHECKOUT - summary: Normal Payment (No Split) - description: Create hosted checkout payment links, including normal and - split-payment flows. - operationId: post_normal-payment-no-split_2 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key from the dashboard - amount: - type: string - description: Amount to charge - currency: - type: string - description: Transaction currency, e.g. `NGN`, `USD` - country: - type: string - description: Country the transaction originates from - paymentReference: - type: string - description: Unique reference you generate per transaction - email: - type: string - description: Customer email address - fullName: - type: string - description: Customer full name - callbackUrl: - type: string - description: Where SeerBit redirects the customer after payment - tokenize: - type: boolean - description: "**Confirmed by SeerBit.** If `true`: (1) the checkout page on - `redirectLink` only offers **Card** as a payment method — no - bank transfer, USSD, or other channels; (2) SeerBit - tokenizes the card, and the resulting `authorizationCode` is - not in this endpoint's own response — it's returned when you - call **Check Payment Status** afterward with the - `paymentReference`. Use that `authorizationCode` with - *Charge Authorization Token* / *Bulk Charge Token* to charge - the same card again. Defaults to `false` if omitted." - required: - - publicKey - - amount - - currency - - country - - paymentReference - - email - - fullName - - callbackUrl - examples: - normal-payment-no-split: - summary: Normal Payment (No Split) - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference8 - email: customer@example.com - fullName: Jane Doe - tokenize: false - callbackUrl: https://example.com/callback - description: >- - Creates a transaction and returns a `redirectLink` to SeerBit's hosted - checkout page — send the customer there to enter payment details and - complete the charge. No card data touches your server with this flow, - and the full amount settles to your main merchant account with no - split. - - - **Body fields** - - - This is the baseline request with no split fields — see the sibling requests in this folder **Standard Checkout — Easy Split (Split Code)** and **Standard Checkout — Full Dynamic Split** for the two ways to divide a payment across sub-accounts. - - - A `409` means `paymentReference` has already been used — generate a new one per attempt, don't retry with the same value. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments#standard-checkout-easy-split-split-code: - post: - tags: - - STANDARD CHECKOUT - summary: Standard Checkout — Easy Split (Split Code) - description: Create hosted checkout payment links, including normal and - split-payment flows. - operationId: post_standard-checkout-easy-split-split-code_3 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - splitCode: - type: string - description: Reference to a split rule created in advance on the SeerBit - dashboard. - tokenize: - type: boolean - description: "**Confirmed by SeerBit.** If `true`, the checkout page restricts - payment to **Card only**, and the `authorizationCode` for - the tokenized card comes back from **Check Payment Status**, - not this endpoint's own response. Defaults to `false`." - required: - - splitCode - examples: - standard-checkout-easy-split-split-code: - summary: Standard Checkout — Easy Split (Split Code) - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_split_code1 - email: customer@example.com - fullName: Jane Doe - tokenize: false - callbackUrl: https://example.com/callback - splitCode: SPLIT_RULE_CODE - description: >- - Same Standard Checkout flow as **Normal Payment (No Split)**, plus a - single `splitCode` field: the code of a split rule you pre-configure - once (recipients, percentages/amounts, fee bearer) on the SeerBit - dashboard, then reference by code at payment time. This is the "easy" - option — you don't specify recipients or amounts inline; the rule - already defines them. - - - Use this when your split recipients and their shares are fixed and known ahead of time. If you need to set the split's recipients or shares dynamically per transaction, use **Standard Checkout — Full Dynamic Split** instead. - - - **Verification note:** doc.seerbit.com documents `splitCode` only as `"Split rule Code"` in an example body. Confirm how split rules are created and the exact code format in your dashboard before using this field. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments#standard-checkout-full-dynamic-split: - post: - tags: - - STANDARD CHECKOUT - summary: Standard Checkout — Full Dynamic Split - description: Create hosted checkout payment links, including normal and - split-payment flows. - operationId: post_standard-checkout-full-dynamic-split_4 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - type: - type: string - description: "`FLAT` (fixed amount per recipient) or `PERCENTAGE`" - transactionFee: - type: string - description: Who bears the transaction fee — `ALL_ACCOUNTS`, `PROPORTIONATE`, - `SUB_ACCOUNT`, or `PARENT_ACCOUNT` - bearerSubAccountCode: - type: string - description: Which sub-account bears the fee - items: - type: array - description: "Each entry: `subAccountCode` and its `value` (amount or - percentage, matching `type`)" - tokenize: - type: boolean - description: "**Confirmed by SeerBit.** If `true`, the checkout page restricts - payment to **Card only**, and the `authorizationCode` for - the tokenized card comes back from **Check Payment Status**, - not this endpoint's own response. Defaults to `false`." - required: - - type - - transactionFee - - items - examples: - standard-checkout-full-dynamic-split: - summary: Standard Checkout — Full Dynamic Split - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_dynamic1 - email: customer@example.com - fullName: Jane Doe - tokenize: false - callbackUrl: https://example.com/callback - splits: - type: PERCENTAGE - transactionFee: PARENT_ACCOUNT - items: - - subAccountCode: SUB_ACC_001 - value: "30" - description: >- - Same Standard Checkout flow as **Normal Payment (No Split)**, plus a - `splits` object defining recipients and shares inline, at payment time - — no pre-configured split rule needed. Use this when split details - aren't known in advance (e.g. a marketplace computing a different - vendor split per order). - - - **`splits` object fields** - - - Compare **Standard Checkout — Easy Split (Split Code)**, which references a split rule you configured ahead of time instead of specifying recipients inline. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/virtual-accounts: - post: - tags: - - VIRTUAL ACCOUNTS - summary: Create Virtual Account - description: Create and manage virtual bank accounts and retrieve their payment - activity. - operationId: post_create-virtual-account_5 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key - fullName: - type: string - description: Customer's full name, used as the account name - email: - type: string - description: Customer email - currency: - type: string - description: Currency code, e.g. `NGN` - country: - type: string - description: Country code, e.g. `NG` - reference: - type: string - description: Your unique reference for this virtual account — also used to - fetch/delete it later - bankVerificationNumber: - type: string - description: Customer's BVN, for verification - required: - - publicKey - - fullName - - email - - currency - - country - - reference - examples: - create-virtual-account: - summary: Create Virtual Account - value: - publicKey: "{{publicKey}}" - fullName: Jane Smith - bankVerificationNumber: "" - currency: NGN - country: NG - reference: FIRST_VIRTUAL_17 - email: js@emaildomain.com - description: >- - Issues a dedicated bank account number for one customer. Transfers - into that account are reconciled back to the customer automatically — - use *Get Payments* to see what's landed on it. - - - **Body fields** - - - Response returns `walletName`, `bankName`, and `accountNumber` for the customer to pay into. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v2/virtual-accounts/{paymentReference}": - get: - tags: - - VIRTUAL ACCOUNTS - summary: Get Virtual Account - description: Fetches details for one virtual account by the `reference` used to - create it (passed here as `paymentReference`). Response includes - `linkingReference`, `wallet`, `bankName`, and `accountNumber`. - operationId: get_get-virtual-account_6 - servers: - - url: https://seerbitapi.com - parameters: - - name: paymentReference - in: path - required: true - description: Value of paymentReference - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v2/virtual-accounts/{reference}": - delete: - tags: - - VIRTUAL ACCOUNTS - summary: Delete Virtual Account - description: Deactivates a virtual account by its `reference`. On success, - returns a confirmation message — "Virtual account has been deleted". - operationId: delete_delete-virtual-account_7 - servers: - - url: https://seerbitapi.com - parameters: - - name: reference - in: path - required: true - description: Value of reference - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v2/virtual-accounts/{publicKey}/{accountNumber}": - get: - tags: - - VIRTUAL ACCOUNTS - summary: Get Payments - description: "Lists transactions that have landed on one virtual account, - identified by `publicKey` and `accountNumber` in the path. Each entry - includes `amount`, customer name, `paymentType`, `status`, settlement - info, and `transferType: RESERVE_ACCOUNT`." - operationId: get_get-payments_8 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: accountNumber - in: path - required: true - description: Value of accountNumber - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/initiates: - post: - tags: - - PAYMENT METHODS - summary: Card Payment - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - operationId: post_card-payment_9 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key - amount: - type: string - description: Amount to charge - currency: - type: string - description: e.g. `NGN` - country: - type: string - description: Country code - paymentReference: - type: string - description: Unique reference you generate - email: - type: string - description: Customer email - fullName: - type: string - description: Customer full name - paymentType: - type: string - description: "`CARD` for this flow" - cardDetails: - type: string - description: Card number - callbackUrl: - type: string - description: Where SeerBit sends the final result - required: - - publicKey - - amount - - currency - - country - - paymentReference - - email - - fullName - - paymentType - - cardDetails - - callbackUrl - examples: - card-payment: - summary: Card Payment - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_card1 - email: customer@example.com - fullName: Jane Doe - paymentType: CARD - cardDetails: - pan: "5060990580000217499" - expiryMonth: "03" - expiryYear: "2027" - cvv: "111" - callbackUrl: https://example.com/callback - description: >- - Direct/inline card charge — you collect the card's PAN, expiry and CVV - on your own form and POST them here, instead of redirecting the - customer to SeerBit's hosted page (compare **Standard Checkout**, - which never touches raw card data on your server). Because this - endpoint receives raw card details, your integration is in PCI-DSS - scope — SeerBit's hosted **Standard Checkout** flow is the - lower-compliance-burden alternative most integrators should default - to. - - - **Body fields** - - - **OTP step**: many card transactions come back requiring 3DS/OTP authentication. Per the Card Payment doc page, you complete this by POSTing again to this **same** `/api/v2/payments/initiates` URL with a body shaped like: - - ```json - - { - "transaction": { - "linkingreference": "", - "otp": "" - } - } - - ``` - - Then poll **Check Payment Status** (Payment Query folder) with `paymentReference` to confirm the final state. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/initiates#bank-account-payment: - post: - tags: - - PAYMENT METHODS - summary: Bank Account Payment - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - operationId: post_bank-account-payment_10 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - amount: - type: string - currency: - type: string - country: - type: string - paymentReference: - type: string - email: - type: string - fullName: - type: string - paymentType: - type: string - description: Confirm the value for this flow with SeerBit before sending the - request. - accountNumber: - type: string - bankCode: - type: string - callbackUrl: - type: string - examples: - bank-account-payment: - summary: Bank Account Payment - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_bank1 - email: customer@example.com - fullName: Jane Doe - paymentType: - accountNumber: "0000000000" - bankCode: "058" - callbackUrl: https://example.com/callback - description: >- - Initiates a direct bank-account debit: the customer authorizes a - charge straight from their bank account (via account number + bank - code) rather than a card, USSD code, or transfer-in. - - - **Verification note:** Confirm these two details with SeerBit before using this request: - - 1. The exact `paymentType` value for this flow. The available documentation does not specify it, so the sample uses `` as a placeholder. - - 2. The OTP/authorization endpoint. The documentation references **`/payments/validate`** without specifying its full URL, method, or body. The Card Payment documentation instead describes a second POST to `/api/v2/payments/initiates` with a `{"transaction": {"linkingreference":..., "otp":...}}` body; confirm which flow applies here. - - - **Body fields** (`accountNumber` + `bankCode` identify the account to debit; other fields match Card Payment). Verify the `paymentType` value and validation step directly with SeerBit before relying on this request. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/initiates#transfer: - post: - tags: - - PAYMENT METHODS - summary: Transfer - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - operationId: post_transfer_11 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - paymentType: - type: string - description: "`TRANSFER`" - required: - - paymentType - examples: - transfer: - summary: Transfer - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_transfer1 - email: customer@example.com - fullName: Jane Doe - paymentType: TRANSFER - callbackUrl: https://example.com/callback - description: >- - Initiates a bank-transfer payment: SeerBit returns a dynamic virtual - account number for this transaction that the customer transfers the - exact amount into from their own banking app; SeerBit matches the - credit and confirms the transaction. This is distinct from the - **Virtual Accounts** folder, which provisions a *persistent* account - number for a customer across many transactions — this is a one-off, - per-transaction account. - - - **Body fields** - - - Poll **Check Payment Status** (Payment Query folder) with `paymentReference`, or listen for the `transaction` webhook, to detect when the transfer lands. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/initiates#ussd-payment: - post: - tags: - - PAYMENT METHODS - summary: USSD Payment - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - operationId: post_ussd-payment_12 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - paymentType: - type: string - description: "`USSD`" - bankCode: - type: string - description: Bank's USSD routing code, e.g. `058` for GTBank - required: - - paymentType - - bankCode - examples: - ussd-payment: - summary: USSD Payment - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: NGN - country: NG - paymentReference: payment_reference_ussd1 - email: customer@example.com - fullName: Jane Doe - paymentType: USSD - bankCode: "058" - callbackUrl: https://example.com/callback - description: >- - Initiates a USSD payment: SeerBit returns a USSD string (e.g. - `*723*...#`) the customer dials on their phone from the bank account - linked to `bankCode` to authorize the debit — no card or app needed. - - - **Body fields** - - - The initial response includes the USSD code to display to the customer. Poll **Check Payment Status** (Payment Query folder) with `paymentReference` — there's no separate OTP step; authorization happens on the phone via the USSD session itself. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/initiates#mobile-money-payment: - post: - tags: - - PAYMENT METHODS - summary: Mobile Money Payment - description: Initiate direct payments by card, bank account, transfer, USSD, or - mobile money. - operationId: post_mobile-money-payment_13 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - paymentType: - type: string - description: "`MOMO`" - mobileNumber: - type: string - description: Customer's mobile-money-linked phone number - network: - type: string - description: Mobile network operator, e.g. `MTN`, `AIRTELTIGO`, `VODAFONE` - required: - - paymentType - - mobileNumber - - network - examples: - mobile-money-payment: - summary: Mobile Money Payment - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - currency: GHS - country: GH - paymentReference: payment_reference_momo1 - email: customer@example.com - fullName: Jane Doe - paymentType: MOMO - mobileNumber: "233241234567" - network: MTN - callbackUrl: https://example.com/callback - description: >- - Initiates a mobile-money payment (e.g. MTN MoMo, AirtelTigo) — SeerBit - sends a prompt to the customer's phone on the given - `mobileNumber`/`network`, and the customer approves the debit directly - on their handset. Used primarily for Ghana (`GHS`) and other African - mobile-money markets. - - - **Body fields** - - - Poll **Check Payment Status** (Payment Query folder) with `paymentReference` after the customer approves the prompt on their phone. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v3/payments/query/{paymentReference}": - get: - tags: - - PAYMENT QUERY - summary: Check Payment Status - description: >- - Looks up the current status of a transaction by its `paymentReference`. - **Corrected to v3** — the doc.seerbit.com page for this actually - documents `/api/v3/payments/query/{paymentReference}` (matching what - *Get Card Authorization Code* already used), not v2 as this request - previously had it. The v3 response includes fuller detail: status, - amount, gateway message, masked card details, and customer info. - - - Use this after Standard Checkout, Create Token, or any flow that returns a `paymentReference`, to confirm the final state rather than relying only on the initial response's `code`. - - - **Tokenized Standard Checkout**: if the original Standard Checkout call had `tokenize: true`, this is where the `authorizationCode` for the saved card actually comes back — it is not in Standard Checkout's own response. Save it from here to use with *Charge Authorization Token* / *Bulk Charge Token*. - operationId: get_check-payment-status_14 - servers: - - url: https://seerbitapi.com - parameters: - - name: paymentReference - in: path - required: true - description: Value of paymentReference - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /invoice/create: - post: - tags: - - INVOICING - summary: Create Invoice - description: Create, send, retrieve, and manage merchant invoices. - operationId: post_create-invoice_15 - servers: - - url: https://merchant.seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key - orderNo: - type: string - description: Unique order identifier - dueDate: - type: string - description: Invoice due date - currency: - type: string - description: Currency code, e.g. `NGN` - receiversName: - type: string - description: Customer name shown on the invoice - customerEmail: - type: string - description: Where the invoice is sent - invoiceItems: - type: array - description: Line items, each with `itemName`, `quantity`, `rate`, `tax` (tax as - a percentage) - required: - - publicKey - - orderNo - - dueDate - - currency - - receiversName - - customerEmail - - invoiceItems - examples: - create-invoice: - summary: Create Invoice - value: - publicKey: "{{publicKey}}" - orderNo: "333333221321" - dueDate: 2026-10-23 - currency: NGN - receiversName: Jane Smith - customerEmail: janesmith@emaildomain.com - invoiceItems: - - itemName: Bluetooth Pods - quantity: 1 - rate: 25000 - tax: 7.5 - - itemName: Quest 10 - quantity: 4 - rate: 100000 - tax: 7.5 - description: >- - Creates and sends an itemised invoice to a customer by email, without - you building a checkout flow. Source: - doc.seerbit.com/online-payment/payment-features/invoicing, - cross-checked with the original collection (the doc page's own code - samples only show empty placeholder URLs, so the exact host/path is - carried over from the original working collection, not independently - re-confirmed). - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/invoice/{publicKey}/bulk-requests": - post: - tags: - - INVOICING - summary: Bulk Invoice Requests - description: Create, send, retrieve, and manage merchant invoices. - operationId: post_bulk-invoice-requests_16 - servers: - - url: https://merchant.seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - type: object - properties: - orderNo: - type: string - dueDate: - type: string - currency: - type: string - customerEmail: - type: string - invoiceItems: - type: array - examples: - bulk-invoice-requests: - summary: Bulk Invoice Requests - value: - - orderNo: AZPOP12929322 - dueDate: 2026-03-19 - currency: NGN - customerEmail: testtechblazer1@mailinator.com - invoiceItems: - - itemName: Air Pod 2 - quantity: 1 - rate: 5 - tax: 1.5 - - itemName: Quest 1 - quantity: 4 - rate: 10 - tax: 2.5 - - itemName: Earpod - quantity: 1 - rate: 100 - tax: 0.5 - - orderNo: AZPOP12929323 - dueDate: 2026-03-28 - currency: NGN - receiversName: Frank John - customerEmail: testtechblazer2@mailinator.com - invoiceItems: - - itemName: Power Bulb - quantity: 10 - rate: 5 - tax: 0.5 - description: >- - Same as *Create Invoice*, but accepts a JSON array to send multiple - invoices in one call. Same sourcing caveat as Create Invoice — - host/path carried over from the original collection, not independently - re-confirmed against a doc.seerbit.com code sample. - - - **Body:** array of invoice objects, each shaped like *Create Invoice*'s body (`receiversName` is optional per the saved example — the other fields are required). - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/invoice/{publicKey}/send/{InvoiceNo}": - get: - tags: - - INVOICING - summary: Re-send an Invoice - description: >- - Re-sends an existing invoice (identified by `InvoiceNo`) to its customer - by email — use this when the original invoice email didn't arrive or - needs to go out again, rather than creating a duplicate invoice with - Create Invoice. - - - **Path parameters** - - - | Param | Description | - - |---|---| - - | `publicKey` | Merchant public key | - - | `InvoiceNo` | The invoice's number, e.g. `SBT-INV-000054`, from Create Invoice's response | - - - Returns a `code`/`payload` confirmation; it doesn't return the invoice body again. - operationId: get_re-send-an-invoice_17 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: InvoiceNo - in: path - required: true - description: Value of InvoiceNo - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/invoice/{publicKey}/customer/{customerEmail}": - get: - tags: - - INVOICING - summary: Get Invoice by Customer Email - description: >- - Looks up invoice(s) associated with a given customer email address — - useful when you know who the invoice was billed to but not its invoice - or order number. - - - **Path parameters** - - - | Param | Description | - - |---|---| - - | `publicKey` | Merchant public key | - - | `customerEmail` | The customer's email address the invoice was billed to | - - - Add a `customerEmail` collection variable with the address you're looking up, or replace the path segment directly. - operationId: get_get-invoice-by-customer-email_18 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: customerEmail - in: path - required: true - description: Value of customerEmail - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/invoice/{publicKey}/{InvoiceNo}": - get: - tags: - - INVOICING - summary: Get Invoice by Invoice Number - description: >- - Fetches a single invoice's full detail — including its line items - (`invoiceItems`) — by `InvoiceNo`. - - - **Path parameters** - - - | Param | Description | - - |---|---| - - | `publicKey` | Merchant public key | - - | `InvoiceNo` | The invoice's number, e.g. `SBT-INV-000054` | - - - Response includes `status` (e.g. `DRAFT`), `totalAmount`, `dueDate`, `currency`, and the itemized `invoiceItems` array — unlike **Get Invoice by orderNo**, which returns a summary without line items. - operationId: get_get-invoice-by-invoice-number_19 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: InvoiceNo - in: path - required: true - description: Value of InvoiceNo - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/invoice/{publicKey}/order/{orderNo}": - get: - tags: - - INVOICING - summary: Get Invoice by Order Number - description: >- - Looks up an invoice by the `orderNo` you supplied when creating it via - Create Invoice — useful when your own system tracks orders and you don't - have SeerBit's `InvoiceNo` on hand. - - - **Path parameters** - - - | Param | Description | - - |---|---| - - | `publicKey` | Merchant public key | - - | `orderNo` | The order number you passed to Create Invoice | - - - Returns a summary (no itemized `invoiceItems` array) — use **Get Invoice by Invoice Number** with the `invoiceNo` from this response if you need line-item detail. - operationId: get_get-invoice-by-order-number_20 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: orderNo - in: path - required: true - description: Value of orderNo - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/create-token: - post: - tags: - - TOKENIZATION - summary: Create Token - description: Tokenize cards and use authorization tokens for subsequent or bulk - charges. - operationId: post_create-token_21 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key - amount: - type: string - description: Charge amount — minimum is currency-dependent (e.g. NGN 50, GHS 1, - KES 1, USD 0.50) - fullName: - type: string - description: Cardholder's name - mobileNumber: - type: string - description: Customer phone number - email: - type: string - description: Customer email - currency: - type: string - description: Transaction currency - country: - type: string - description: Country of the transaction - paymentType: - type: string - description: Must be `"CARD"` - cardNumber: - type: string - description: Full card number - expiryMonth: - type: string - description: Two-digit expiry month (`01`–`12`) - expiryYear: - type: string - description: Card expiry year - cvv: - type: string - description: Card security code - pin: - type: string - description: Card PIN (required by some card schemes/issuers) - redirectUrl: - type: string - description: Where the customer lands after completing 3DS/OTP authentication - paymentReference: - type: string - description: Unique reference you generate per transaction - required: - - publicKey - - amount - - fullName - - mobileNumber - - email - - currency - - country - - paymentType - - cardNumber - - expiryMonth - - expiryYear - - cvv - - pin - - redirectUrl - - paymentReference - examples: - create-token: - summary: Create Token - value: - publicKey: "{{publicKey}}" - amount: "50" - fullName: Jane Smith - mobileNumber: "03447522256" - redirectUrl: http://example.com - currency: NGN - country: NG - paymentReference: 204g4de74a7ib0j18dg6bi521aiaejf4 - email: janesmith@seerbit.com - paymentType: CARD - cardNumber: "512348984984988883" - expiryMonth: "01" - expiryYear: "25" - cvv: "000" - pin: "2222" - description: >- - Charges a card for the first time **and** saves it, returning card - details you can later exchange for an `authorizationCode` (via *Get - Card Authorization Code*) to charge the same card again without - re-collecting details. Requires the customer to complete 3DS/OTP - authentication on `redirectUrl`. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v3/payments/query/{paymentReference}#get-card-authorization-code": - get: - tags: - - TOKENIZATION - summary: Get Card Authorization Code - description: >- - Returns authorizationCode, customerId and maskedPan for a tokenized - transaction. Note this is v3, unlike the v2 Payment Query endpoint. - - - **Response fields to read** - - - | Field | Description | - - |---|---| - - | `authorizationCode` | Token to pass into *Charge Authorization Token* / *Bulk Charge Token* for future charges | - - | `customerId` | SeerBit's identifier for this customer, reusable across subscriptions | - - | `maskedPan` | Redacted card number for display, e.g. `5123-40xx-xxxx-0008` | - operationId: get_get-card-authorization-code_22 - servers: - - url: https://seerbitapi.com - parameters: - - name: paymentReference - in: path - required: true - description: Value of paymentReference - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/charge-token: - post: - tags: - - TOKENIZATION - summary: Charge Authorization Token - description: Tokenize cards and use authorization tokens for subsequent or bulk - charges. - operationId: post_charge-authorization-token_23 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - publicKey: - type: string - description: Merchant public key - amount: - type: string - description: Amount to charge - paymentReference: - type: string - description: New, unique reference for this charge - authorizationCode: - type: string - description: From *Get Card Authorization Code* - required: - - publicKey - - amount - - paymentReference - - authorizationCode - examples: - charge-authorization-token: - summary: Charge Authorization Token - value: - publicKey: "{{publicKey}}" - amount: "5000.00" - paymentReference: charge_token_ref_001 - authorizationCode: "{{authorizationCode}}" - description: >- - Charges a previously tokenized card using its `authorizationCode`, - without asking the customer for card details again. Use this for - one-off repeat charges; for scheduled recurring billing, use *Charge - Subscription* instead. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/bulk-tokenize-charge: - post: - tags: - - TOKENIZATION - summary: Bulk Charge Token - description: Tokenize cards and use authorization tokens for subsequent or bulk - charges. - operationId: post_bulk-charge-token_24 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - type: object - properties: - publicKey: - type: string - amount: - type: string - paymentReference: - type: string - authorizationCode: - type: string - examples: - bulk-charge-token: - summary: Bulk Charge Token - value: - - publicKey: "{{publicKey}}" - amount: "5000.00" - paymentReference: bulk_ref_001 - authorizationCode: "{{authorizationCode}}" - - publicKey: "{{publicKey}}" - amount: "2500.00" - paymentReference: bulk_ref_002 - authorizationCode: "{{authorizationCode}}" - description: >- - Same as *Charge Authorization Token*, but accepts a JSON array so you - can charge many tokenized cards in one call. Each array entry needs - its own unique `paymentReference`. Returns a `batchId` — poll *Query - Bulk Charge* with it to see per-entry results, since a bulk call can - partially succeed. - - - **Body:** array of objects, each with the same fields as *Charge Authorization Token* (`publicKey`, `amount`, `paymentReference`, `authorizationCode`). - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/payments/bulk-tokenize-charge-search: - get: - tags: - - TOKENIZATION - summary: Query Bulk Charge - description: Looks up the outcome of a *Bulk Charge Token* batch by `batchId`. - Returns paginated per-entry results (authorization codes, status codes, - card details, amounts) — check each entry's own status rather than - assuming the whole batch succeeded or failed together. - operationId: get_query-bulk-charge_25 - servers: - - url: https://seerbitapi.com - parameters: - - name: batchId - in: query - required: false - description: Query parameter batchId - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v1/recurrent/plan/create: - post: - tags: - - RECURRING & SUBSCRIPTIONS - summary: Create Plan - description: Create and manage subscription plans, customer subscriptions, and - recurring charges. - operationId: post_create-plan_26 - servers: - - url: https://merchants.seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - productId: - type: string - description: Plan name/identifier - productDescription: - type: string - description: Description of the plan - amount: - type: string - description: Amount charged per cycle - billingCycle: - type: string - description: "`HOURLY`, `DAILY`, `WEEKLY`, `MONTHLY`, or `ANNUALLY`" - limit: - type: integer - description: Maximum number of billing cycles before the plan stops - publicKey: - type: string - description: Merchant public key - country: - type: string - description: Country code, e.g. `NG` - currency: - type: string - description: Currency code, e.g. `NGN` - allowPartialDebit: - type: boolean - description: Whether to charge whatever's available if the customer has - insufficient funds for the full amount - required: - - productId - - productDescription - - amount - - billingCycle - - limit - - publicKey - - country - - currency - - allowPartialDebit - examples: - create-plan: - summary: Create Plan - value: - productId: product222 - productDescription: - amount: "100" - billingCycle: HOURLY - limit: 5 - publicKey: "{{publicKey}}" - country: NG - currency: NGN - allowPartialDebit: false - description: >- - Defines a recurring billing plan (amount + cadence + how many cycles - to run). Once created, subscribe a tokenized card to it and SeerBit - charges automatically on schedule. Host is `merchants.seerbitapi.com` - (plural) — a documented inconsistency vs. the - `merchant.seerbitapi.com` (singular) invoicing host, easy to mistype. - - - **Body fields** - - - Response includes `planId`, `payUrl`, and `status: "ACTIVE"` — save `planId` for future reference. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v2/recurring/publicKey/{publicKey}": - get: - tags: - - RECURRING & SUBSCRIPTIONS - summary: Get Merchant Subscriptions - description: Lists every subscription under this `publicKey`, with `amount`, - `customerId`, `cardName`, `cardNumber` (masked), `plan`, `status`, - `billingId`, `authorizationCode`, `startDate`, and `createdAt` per - entry. - operationId: get_get-merchant-subscriptions_27 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/recurring/charge: - post: - tags: - - RECURRING & SUBSCRIPTIONS - summary: Charge Subscription - description: Create and manage subscription plans, customer subscriptions, and - recurring charges. - operationId: post_charge-subscription_28 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - amount: - type: string - description: Amount to charge - publicKey: - type: string - description: Merchant public key - email: - type: string - description: Customer email - authorizationCode: - type: string - description: From the customer's completed subscription - paymentReference: - type: string - description: New, unique reference for this charge - currency: - type: string - description: Currency code - allowPartialDebit: - type: string - description: Whether to allow a partial charge on insufficient funds - required: - - amount - - publicKey - - email - - authorizationCode - - paymentReference - - currency - examples: - charge-subscription: - summary: Charge Subscription - value: - amount: "100" - publicKey: "{{publicKey}}" - email: customer@example.com - authorizationCode: "{{authorizationCode}}" - paymentReference: sub_charge_ref_001 - currency: NGN - allowPartialDebit: false - description: >- - Manually triggers a charge against an existing subscription's - tokenized card, outside the automatic billing schedule (e.g. to bill - immediately rather than wait for the next cycle). - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/api/v2/recurring/{publicKey}/customerId/{customerId}": - get: - tags: - - RECURRING & SUBSCRIPTIONS - summary: Get Customer Subscription - description: Lists the subscriptions belonging to one customer (`customerId`) - under this `publicKey` — a customer can have more than one active plan. - operationId: get_get-customer-subscription_29 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - - name: customerId - in: path - required: true - description: Value of customerId - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /api/v2/recurring/updates: - put: - tags: - - RECURRING & SUBSCRIPTIONS - summary: Update Customer Subscription - description: Create and manage subscription plans, customer subscriptions, and - recurring charges. - operationId: put_update-customer-subscription_30 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - billingId: - type: string - description: Identifies the subscription being updated - publicKey: - type: string - description: Merchant public key - currency: - type: string - description: Currency code - country: - type: string - description: Country code - amount: - type: string - description: New charge amount - status: - type: string - description: "`ACTIVE` or `INACTIVE` — set to `INACTIVE` to cancel future - billing" - mobileNumber: - type: string - description: Update the customer's phone number on file - required: - - billingId - - publicKey - - currency - - country - examples: - update-customer-subscription: - summary: Update Customer Subscription - value: - billingId: "{{billingId}}" - publicKey: "{{publicKey}}" - status: ACTIVE - amount: "100" - currency: NGN - country: NG - description: >- - Changes an existing subscription's status or terms, identified by - `billingId`. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /paymentlink/v2/payLinks/api: - post: - tags: - - PAYMENT LINKS - summary: Create Payment Link - description: Create, retrieve, update, and remove reusable payment links. - operationId: post_create-payment-link_31 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - status: - type: string - description: "`ACTIVE` or `INACTIVE`" - paymentLinkName: - type: string - description: Internal name for the link - description: - type: string - description: Shown to the customer on the payment page - currency: - type: string - description: Currency code, e.g. `NGN` - publicKey: - type: string - description: Merchant public key - paymentFrequency: - type: string - description: "`ONE_TIME` or `RECURRENT`" - requiredFields: - type: string - description: "Which customer fields the payer must fill in: `address`, `amount`, - `customerName`, `mobileNumber`, `invoiceNumber` (each - boolean)" - email: - type: string - description: Notification email - successMessage: - type: string - description: Shown after a successful payment - customizationName: - type: string - description: Branding/customization preset - additionalData: - type: string - description: Free-text metadata attached to the link - linkExpirable: - type: boolean - description: Whether the link expires - expiryDate: - type: string - description: Expiry date, required if `linkExpirable` is true - oneTime: - type: boolean - description: Whether the link is invalidated after first use - required: - - status - - paymentLinkName - - description - - currency - - publicKey - - paymentFrequency - - requiredFields - examples: - create-payment-link: - summary: Create Payment Link - value: - status: ACTIVE - paymentLinkName: testing out - description: Give out donations - currency: NGN - successMessage: Thank you for your payment - publicKey: "{{publicKey}}" - customizationName: dot dty it - paymentFrequency: ONE_TIME - paymentReference: "" - email: js@emaildomain.com - requiredFields: - address: true - amount: true - customerName: true - mobileNumber: true - invoiceNumber: false - additionalData: "Customer Email: js@mailinator.com" - linkExpirable: false - expiryDate: "" - oneTime: false - description: >- - Creates a hosted, shareable payment URL — send it directly to a - customer instead of building a checkout flow. Supports one-time links - and recurring links. - - - **Body fields** - - - Response returns `paymentLinkUrl` and `paymentLinkId` — save the latter, it's needed to update or delete the link later. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - put: - tags: - - PAYMENT LINKS - summary: Update Payment Link - description: Create, retrieve, update, and remove reusable payment links. - operationId: put_update-payment-link_33 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - paymentLinkId: - type: string - description: From *Create Payment Link*'s response, or *Get Merchant Payment - Links* - required: - - paymentLinkId - examples: - update-payment-link: - summary: Update Payment Link - value: - paymentLinkId: "77287988" - status: INACTIVE - description: Test paymentLink - successMessage: Payment made successfully! - businessName: My Business - publicKey: "{{publicKey}}" - customizationName: my_link_4 - paymentFrequency: RECURRENT - email: customer@seerbit.com - requiredFields: - address: true - amount: true - customerName: true - mobileNumber: true - invoiceNumber: false - linkExpirable: false - expiryDate: "" - oneTime: false - description: >- - Updates an existing payment link's configuration. Source: - doc.seerbit.com/online-payment/payment-features/payment-links. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/paymentlink/v2/payLinks/api/{publicKey}": - get: - tags: - - PAYMENT LINKS - summary: Get Merchant Payment Links - description: Lists every payment link created under this `publicKey`, with their - current status, configuration, and timestamps. Use this to find a - `paymentLinkId` if you didn't save it when creating the link. - operationId: get_get-merchant-payment-links_32 - servers: - - url: https://seerbitapi.com - parameters: - - name: publicKey - in: path - required: true - description: Value of publicKey - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/paymentlink/v2/payLinks/api/deleteLink/{paymentLinkId}": - delete: - tags: - - PAYMENT LINKS - summary: Delete Payment Link - description: "Permanently deactivates a payment link. Source: - doc.seerbit.com/online-payment/payment-features/payment-links, which - documents this as DELETE (the original collection request used GET — - fixed)." - operationId: delete_delete-payment-link_34 - servers: - - url: https://seerbitapi.com - parameters: - - name: paymentLinkId - in: path - required: true - description: Value of paymentLinkId - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/authenticate: - post: - tags: - - POCKET - summary: Authenticate - description: Authenticate and manage SeerBit Pockets, including balances, - sub-pockets, and internal transfers. - operationId: post_authenticate_35 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - email: - type: string - description: Pocket account email - password: - type: string - description: Your **Pocket password** — not your SeerBit merchant dashboard - password. This is the password for your Pocket account at - flow.seerbitapi.com. - required: - - email - - password - examples: - authenticate: - summary: Authenticate - value: - email: "{{pocketEmail}}" - password: "{{pocketPassword}}" - description: >- - Logs in to a Pocket (SeerBit's wallet product) and returns a Bearer - token scoped to Pocket and Payout endpoints — **not** the same token - as `{{BearerToken}}` (the OAuth token from *Get Access Token* in the - Authentication folder, used everywhere else in this collection). - Pocket is a **separate feature from Payout**: the doc site describes - Pocket as sending funds between pockets, sub-pockets, or out to banks - (that last case *is* a payout), while the Payout folder above covers - the signed, OTP-gated bank-payout flow specifically — both folders - share this same login and the same token. - - - **Body fields** - - - Response includes `bearerToken`, `expiryTime`, and `requirePasswordChange` — check the last one and call *Change Password* if true. Save `bearerToken` as `{{pocketAuthToken}}` — the variable used on Pocket and Payout requests that require this login, kept distinct from `{{BearerToken}}` on purpose. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/user/change-password: - post: - tags: - - POCKET - summary: Change Password - description: Authenticate and manage SeerBit Pockets, including balances, - sub-pockets, and internal transfers. - operationId: post_change-password_36 - servers: - - url: https://seerbitapi.com - requestBody: - required: true - content: - application/json: - schema: - type: object - properties: - currentPassword: - type: string - description: Current Pocket password - newPassword: - type: string - description: New Pocket password - required: - - currentPassword - - newPassword - examples: - change-password: - summary: Change Password - value: - currentPassword: "{{pocketPassword}}" - newPassword: "{{newPocketPassword}}" - description: >- - Changes the Pocket account's password — required on first login if - *Authenticate*'s response flagged `requirePasswordChange: true`. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/pocket-id/{pocketID}/sub-pocket": - post: - tags: - - POCKET - summary: Add Sub-Pocket - description: Authenticate and manage SeerBit Pockets, including balances, - sub-pockets, and internal transfers. - operationId: post_add-sub-pocket_37 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketID - in: path - required: true - description: Value of pocketID - schema: - type: string - requestBody: - required: true - content: - application/json: - schema: - type: array - items: - type: object - properties: - reference: - type: string - description: Your unique reference for this sub-pocket - pocketFunction: - type: string - description: e.g. `BOTH` (can send and receive) - currency: - type: string - description: Currency the sub-pocket holds - selfOwned: - type: boolean - description: Whether the sub-pocket belongs to you or an external owner - pocketOwner: - type: string - description: "`existingPocketOwner` plus `pocketOwnerDetails` (`firstName`, - `lastName`, `emailAddress`, `phoneNumber`, - `businessName`)" - tagGroup: - type: string - description: Grouping label - tagName: - type: string - description: Display label - required: - - reference - - pocketFunction - - currency - - selfOwned - - pocketOwner - examples: - add-sub-pocket: - summary: Add Sub-Pocket - value: - - reference: subpocket_ref_001 - pocketFunction: BOTH - currency: NGN - selfOwned: true - pocketOwner: - existingPocketOwner: "false" - pocketOwnerDetails: - firstName: Jane - lastName: Doe - emailAddress: jane@example.com - phoneNumber: "08012345678" - businessName: Acme Ltd - description: >- - Creates a sub-pocket under a parent pocket — e.g. one wallet per - vendor, department, or customer, all rolling up to the parent. Body is - an array, so you can create several sub-pockets in one call. - - - **Body fields (per array entry)** - - - Response returns the new `pocketId`, its dedicated `bankAccountNumber`/`bankAccountName`/`bankName`, and login details for the sub-pocket's own user. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/transfer/from-pocket/{pocketID}/to-pocket/{destinationPocketID}": - post: - tags: - - POCKET - summary: Pocket to Pocket Transfer - description: Authenticate and manage SeerBit Pockets, including balances, - sub-pockets, and internal transfers. - operationId: post_pocket-to-pocket-transfer_38 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketID - in: path - required: true - description: Value of pocketID - schema: - type: string - - name: destinationPocketID - in: path - required: true - description: Value of destinationPocketID - schema: - type: string - requestBody: - required: true content: application/json: schema: - type: object - properties: - amount: - type: string - description: Amount to move - currency: - type: string - description: Currency, must match both pockets - reference: - type: string - description: Unique reference for this transfer - description: - type: string - description: Free-text note - required: - - amount - - currency - - reference - - description - examples: - pocket-to-pocket-transfer: - summary: Pocket to Pocket Transfer - value: - amount: "5000.00" - currency: NGN - reference: transfer_ref_001 - description: Internal transfer - description: >- - Moves funds between two pockets (parent-to-sub-pocket, sub-to-sub, - etc.) — an internal transfer, not a bank payout. - - - **Body fields** - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/pocket-id/{pocketID}": - get: - tags: - - POCKET - summary: Get Pocket Details - description: "Fetches a pocket's full profile: status, balances, its own - dedicated bank account (`accountNumber`, `fundingLink`), owner details, - and any linked `pocketAccounts`." - operationId: get_get-pocket-details_39 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketID - in: path - required: true - description: Value of pocketID - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/balance/pocket-id/{pocketID}": - get: - tags: - - POCKET - summary: Get Pocket Balance - description: Fast balance-only lookup for one pocket — - `availableBalanceAmount`/`Currency` and `lastTransactionAt`. Use *Get - Pocket Details* instead when you also need the account number or owner - info. - operationId: get_get-pocket-balance_40 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketID - in: path - required: true - description: Value of pocketID - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/balances-summation/pocket-id/{pocketID}": - get: - tags: - - POCKET - summary: Get Merchant Balance Summation - description: "Rolls up balances across pockets: - `merchantSubPocketsBalanceSummation` (just the sub-pockets under this - one) and `merchantAllPocketsBalanceSummation` (every pocket under the - merchant)." - operationId: get_get-merchant-balance-summation_41 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketID - in: path - required: true - description: Value of pocketID - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - "/pocket/transaction/reference/{reference}": - get: - tags: - - POCKET - summary: Get Transaction by Reference - description: Looks up one Pocket transaction (funding, transfer, fee, etc.) by - its `reference`. Returns `transactionLeg` (`DEBIT`/`CREDIT`), - `transactionType`, `status`, and counterparty details. - operationId: get_get-transaction-by-reference_42 - servers: - - url: https://seerbitapi.com - parameters: - - name: reference - in: path - required: true - description: Value of reference - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/transaction/search: - get: - tags: - - POCKET - summary: Search Transactions - description: >- - Lists a pocket's transaction history, paginated. - - - **Query parameters** - - - | Field | Type | Required | Description | - - |---|---|---|---| - - | `pocketId` | string | Yes | The pocket to list transactions for | - - | `page` | integer | Yes | Zero-based page number | - - | `size` | integer | Yes | Records per page | - - - Response wraps results in `content` plus `pageable`, `totalElements`, `totalPages` for pagination. - operationId: get_search-transactions_43 - servers: - - url: https://seerbitapi.com - parameters: - - name: pocketId - in: query - required: false - description: Query parameter pocketId - schema: - type: string - - name: page - in: query - required: false - description: Query parameter page - schema: - type: string - - name: size - in: query - required: false - description: Query parameter size - schema: - type: string - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/payout/account-enquiry: - post: - tags: - - PAYOUT - summary: Account Enquiry - description: Verify destination accounts and initiate or confirm external bank - payouts. - operationId: post_account-enquiry_44 - servers: - - url: https://seerbitapi.com - requestBody: + $ref: '#/components/schemas/GenerateEncryptedSecretKeyRequest' required: true - content: - application/json: - schema: - type: object - properties: - accountnumber: - type: string - description: Recipient bank account number - bankcode: - type: string - description: Recipient bank's code, from *Bank List* - required: - - accountnumber - - bankcode - examples: - account-enquiry: - summary: Account Enquiry - value: - accountnumber: "0123456789" - bankcode: "058" - description: >- - Reconfirms the account holder's name for a bank account before sending - a payout — use it to catch a wrong account number before money moves. - - - **Body fields** - - - **Note:** the payout flow (*Authenticate for Payout* → *Initiate Single/Bulk Payout* → *Confirm Payout with OTP*) doesn't call this endpoint — it goes straight from authentication to initiating the payout, with no separate account-name-confirmation step built in. Whether it's still expected to run first, is optional, or belongs to a different flow isn't stated; use it as a manual pre-check if you want extra assurance before sending funds. - responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/banks/category/NIP: - get: - tags: - - PAYOUT - summary: Bank List - description: Returns the banks supported for payouts in a given category — `NIP` - in the saved URL is Nigeria's instant transfer network; swap the path - segment if a different category is documented for your corridor. - Requires Bearer auth plus a Public-Key header. - operationId: get_bank-list_45 - servers: - - url: https://seerbitapi.com responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/authenticate#authenticate-for-payout: + 200: + description: SUCCESS + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateEncryptedSecretKeyResponse' + 400: + description: Bad Request + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 404Response: + $ref: '#/components/examples/404Response' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + x-codegen-request-body-name: Body + /encrypt/hashs: post: tags: - - PAYOUT - summary: Authenticate for Payout - description: Verify destination accounts and initiate or confirm external bank - payouts. - operationId: post_authenticate-for-payout_46 - servers: - - url: https://seerbitapi.com + - STANDARD CHECKOUT + summary: Generate Hash + description: 'This is used to ensure the request payload has not been altered' + operationId: GenerateHash requestBody: - required: true content: application/json: schema: - type: object - properties: - email: - type: string - description: Your merchant account's login email - password: - type: string - description: Your **Pocket password** — not your SeerBit merchant dashboard - password. This is the password for your Pocket account at - flow.seerbitapi.com. - required: - - email - - password - examples: - authenticate-for-payout: - summary: Authenticate for Payout - value: - email: your-merchant-login-email@example.com - password: your-merchant-password - description: >- - Logs in with your merchant account email and Pocket password to obtain - the bearer token required by every other request in this payout flow. - - - **Body fields** - - - **Response: 200 OK** - - ```json - - { - "data": { - "bearerToken": "..." - } - } - - ``` - - Save `data.bearerToken` as `{{pocketAuthToken}}` — used as the `Authorization: Bearer` value on *Initiate Single Payout*, *Initiate Bulk Payout*, and *Confirm Payout with OTP*. This is the same login and token as *Authenticate* in the Pocket folder — kept as one shared variable, `{{pocketAuthToken}}`, and kept distinct from `{{BearerToken}}` (the OAuth token used everywhere else in this collection). - - - **Note:** this is the only endpoint in this collection that authenticates with an email/password pair rather than an API key or OAuth token. + $ref: '#/components/schemas/GenerateHashRequest' + required: true responses: - "200": - description: Successful response - security: - - BearerAuth: [] - /pocket/v2/payouts: + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/GenerateHashResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 404Response: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + x-codegen-request-body-name: Body + /payments: post: tags: - - PAYOUT - summary: Initiate Single Payout - description: Verify destination accounts and initiate or confirm external bank - payouts. - operationId: post_initiate-single-payout_47 - servers: - - url: https://seerbitapi.com + - STANDARD CHECKOUT + summary: Payment Link From Checkout + description: 'SeerBit Checkout Standard Initialises a transaction from merchants server to generate a payment link which redirects your customers to a page to make payment and after payment has been made the customer is redirected back to the merchants website.' + operationId: PaymentLinkFromCheckout requestBody: - required: true content: application/json: schema: - type: object - properties: - pocketId: - type: string - description: The Pocket to pay out from - reference: - type: string - description: Your unique reference for this payout. Re-submitting the same - `reference` is idempotent — it returns the existing - `payoutId` and a message that the OTP was already sent, - rather than sending a new OTP. - currency: - type: string - description: Currency code - amount: - type: number - description: Amount to send - description: - type: string - description: Free-text note for the payout - accountNumber: - type: string - description: Recipient bank account number - bankCode: - type: string - description: Recipient bank's code — see *Bank List* - required: - - pocketId - - reference - - currency - - amount - - accountNumber - - bankCode - examples: - initiate-single-payout: - summary: Initiate Single Payout - value: - pocketId: SBP0016878 - reference: PAY-SINGLE-Ideal-001 - currency: NGN - amount: 10 - description: Single Payout API test - accountNumber: "0522376248" - bankCode: "000013" - description: >- - Phase 1 of 2 — initiates a single payout. Validates the request - signature, encrypts the payload, and emails an OTP to the merchant; - the payout only moves money once that OTP is submitted to *Confirm - Payout with OTP*. - - - **Required headers** - - - | Header | Description | - - |---|---| - - | `Public-Key` | Your merchant public key (`{{publicKey}}`) | - - | `X-Seerbit-Signature` | HMAC-SHA256 of the exact raw JSON request body, computed with your merchant secret key (`{{SECRET_KEY}}`), hex-encoded. | - - | `Authorization` | `Bearer {{pocketAuthToken}}` — from *Authenticate for Payout* (same token as Pocket's *Authenticate*), not the OAuth `{{BearerToken}}`. | - - - **Body fields** - - - **Response: 202 Accepted** - - ```json - - { - "payoutId": "PV2-ABCDEF123456", - "status": "PENDING_OTP", - "message": "OTP sent to registered email. Please confirm to proceed." - } - - ``` - - Save `payoutId` as the `{{payoutId}}` collection variable — it's the path parameter for *Confirm Payout with OTP*. - - - **Error responses:** - - - 401 Unauthorized — missing or invalid `X-Seerbit-Signature` - - - 400 Bad Request — missing `Public-Key` header - - - 400 Bad Request — missing/invalid required fields (e.g. "currency is required", "amount must be positive") - - - **Note:** this flow doesn't include a separate account-name-confirmation step before initiating — call *Account Enquiry* first if you want to verify the recipient's account name. + $ref: '#/components/schemas/PaymentLinkFromCheckoutRequest' + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/PaymentLinkFromCheckoutResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Header Token Missing + content: + application/json: + schema: + type: object + examples: + 403Response: + $ref: '#/components/examples/403Response' + 403Response1: + $ref: '#/components/examples/403Response1' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 404Response: + $ref: '#/components/examples/404Response' + 400Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + PaymentLinkFromCheckout500Response: + $ref: '#/components/examples/PaymentLinkFromCheckout500Response' + PaymentLinkFromCheckout500Response1: + $ref: '#/components/examples/PaymentLinkFromCheckout500Response1' + PaymentLinkFromCheckout500Response2: + $ref: '#/components/examples/PaymentLinkFromCheckout500Response2' + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - "/pocket/v2/payouts/{payoutId}/confirm": + - Bearer: [] + x-codegen-request-body-name: Body + /payments/order: post: tags: - - PAYOUT - summary: Confirm Payout with OTP - description: Verify destination accounts and initiate or confirm external bank - payouts. - operationId: post_confirm-payout-with-otp_48 - servers: - - url: https://seerbitapi.com - parameters: - - name: payoutId - in: path - required: true - description: Value of payoutId - schema: - type: string + - ORDER CHECKOUT + summary: Create Order Before Payment + description: 'Create an order before payment' + operationId: CreateOrderBeforePayment requestBody: - required: true content: application/json: schema: - type: object - properties: - otp: - type: string - description: 6-digit code emailed to the merchant. Expires 5 minutes after being - issued. It's presumably sent to the email used to log in via - *Authenticate for Payout*, though this isn't stated - explicitly. - required: - - otp + type: object examples: - confirm-payout-with-otp: - summary: Confirm Payout with OTP - value: - otp: "123456" - description: >- - Phase 2 of 2 — submits the OTP emailed to the merchant during - *Initiate Single Payout* / *Initiate Bulk Payout*. On success, SeerBit - decrypts the payload and dispatches it for processing; this is what - actually moves money. - - - **Path parameter** - - - | Parameter | Description | - - |---|---| - - | `payoutId` (in URL path) | From the Initiate call's response, saved to `{{payoutId}}` | - - - **Body fields** - - - **Response: 200 OK** - - ```json - - { - "payoutId": "PV2-ABCDEF123456", - "status": "QUEUED", - "message": "Payout confirmed and queued for processing", - "batchId": "BATCH-XYZ" - } - - ``` - - - **Error responses (400):** - - - Payout not found - - - Unauthorized access - - - Not in `PENDING_OTP` state - - - OTP has expired - - - Invalid OTP - - - Insufficient funds + # CreateOrderRequest: + # $ref: '#/components/examples/CreateOrderRequest' + CreateOrderRequest1: + $ref: '#/components/examples/CreateOrderRequest2' + + + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + type: object + examples: + CreateOrder200Response: + $ref: '#/components/examples/CreateOrder200Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + Order403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response1: + $ref: '#/components/examples/Order404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + 500Response5: + $ref: '#/components/examples/500Response5' + deprecated: false security: - - BearerAuth: [] - /pocket/v2/payouts#initiate-bulk-payout: + - Bearer: [] + x-codegen-request-body-name: Body + /products/orders: post: tags: - - PAYOUT - summary: Initiate Bulk Payout - description: Verify destination accounts and initiate or confirm external bank - payouts. - operationId: post_initiate-bulk-payout_49 - servers: - - url: https://seerbitapi.com + - ORDER CHECKOUT + summary: Create Order After Payment + description: 'Create an order after payment' + operationId: CreateOrder requestBody: - required: true content: application/json: schema: - type: object - properties: - pocketId: - type: string - description: The Pocket to pay out from - batchReference: - type: string - description: Your unique reference for the whole batch. Re-submitting the same - `batchReference` is idempotent — returns the existing - `payoutId` rather than creating a new batch. - transfers: - type: array - description: One entry per recipient — see fields below. Must be non-empty to - trigger bulk mode. - "transfers[]": - type: string - description: Your unique reference for this individual transfer within the batch - required: - - pocketId - - batchReference - - transfers - - transfers[] + type: object examples: - initiate-bulk-payout: - summary: Initiate Bulk Payout - value: - pocketId: SBP0003440 - batchReference: BATCH-PAY-001 - transfers: - - reference: BULK-REF-001 - currency: NGN - amount: 500 - description: Payment to vendor A - accountNumber: "0522376248" - bankCode: "000013" - - reference: BULK-REF-002 - currency: NGN - amount: 500 - description: Payment to vendor B - accountNumber: "0522376248" - bankCode: "000013" - description: >- - Phase 1 of 2 — initiates a payout to multiple recipients in one call, - sharing a single OTP confirmation. Same endpoint as *Initiate Single - Payout*; a non-empty `transfers` array is what puts the request in - bulk mode. - - - **Required headers:** same as *Initiate Single Payout* — `Public-Key`, `X-Seerbit-Signature` (HMAC-SHA256 of the raw body using `{{SECRET_KEY}}`), `Authorization: Bearer {{pocketAuthToken}}` from *Authenticate for Payout*. - - - **Body fields** - - - **Response: 202 Accepted** — same shape as *Initiate Single Payout*: one `payoutId` for the whole batch, `status: "PENDING_OTP"`. - - - **Note:** there's no documented endpoint for checking an individual transfer's outcome within a batch — only the batch-level `batchId` returned by *Confirm Payout with OTP*. + CreateOrderRequest: + $ref: '#/components/examples/CreateOrderRequest' + # CreateOrderRequest1: + # $ref: '#/components/examples/CreateOrderRequest2' + + + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/CreateOrder201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + Order403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response1: + $ref: '#/components/examples/Order404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /auth/login: - post: + - Bearer: [] + x-codegen-request-body-name: Body + put: tags: - - PARTNERS API - summary: Partner Login - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_partner-login_50 - servers: - - url: https://seerbitapi.com + - ORDER CHECKOUT + summary: Update Order + description: 'Update an order' + operationId: UpdateOrder requestBody: - required: true content: application/json: schema: type: object - properties: - email: - type: string - description: Partner's registered email - password: - type: string - description: Partner account password - required: - - email - - password - examples: - partner-login: - summary: Partner Login - value: - email: partner@example.com - password: "{{partnerPassword}}" - description: >- - Authenticates a SeerBit partner and returns a Bearer token for the - Partners API endpoints below (a separate token from the merchant - `BearerToken` used elsewhere in this collection). No auth required to - call it. - - - **Body fields** + examples: + UpdateOrderRequest: + $ref: '#/components/examples/UpdateOrderRequest' + required: true + responses: + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateOrder201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response1: + $ref: '#/components/examples/Order404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + security: + - Bearer: [] + x-codegen-request-body-name: Body + /products/orders/publicKey/SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u: + get: + tags: + - ORDER CHECKOUT + summary: Get Orders + description: 'Get a list of orders' + operationId: GetOrderByPublicKey + responses: + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/GetOrderByPublicKey201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response2: + $ref: '#/components/examples/Order404Response2' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + security: + - Bearer: [] + /products/orders/publicKey/SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u/paymentReference/0w0eimkizc41602513327447: + get: + tags: + - ORDER CHECKOUT + summary: Get an Order with Payment Reference + description: 'Get order details with payment reference' + operationId: GetOrderByPublicKeyAndPaymentReference + responses: + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/GetOrderByPublicKeyAndPaymentReference201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response2: + $ref: '#/components/examples/Order404Response2' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + security: + - Bearer: [] + /products/orders/publicKey/SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u/orderId/wil0f47b62: + get: + tags: + - ORDER CHECKOUT + summary: Get Order with Order Id + description: 'Get order details with OrderId' + operationId: GetOrderByPublicKeyandOrderId responses: - "200": - description: Successful response + # 200: + # description: "" + # content: + # application/json: + # schema: + # $ref: '#/components/schemas/GetOrderByPublicKeyAndOrderIdResponse' + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/GetOrderByPublicKeyAndOrderId201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response2: + $ref: '#/components/examples/Order404Response2' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /auth/password: + - Bearer: [] + x-codegen-request-body-name: Body + /payments/initiates: post: tags: - - PARTNERS API - summary: Request Password Reset - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_request-password-reset_51 - servers: - - url: https://seerbitapi.com + - PAYMENT METHOD + summary: Initiate Payment + description: 'Accept more payments with our unified payments API. Accept payments from all major cards and the most popular local and alternative payment methods all in a single integration.' + operationId: InitiatePayment requestBody: - required: true content: application/json: schema: type: object - properties: - email: - type: string - description: Registered partner email - required: - - email examples: - request-password-reset: - summary: Request Password Reset - value: - email: partner@example.com - description: >- - Triggers a password-reset email containing an OTP, which you then pass - to *Reset Password*. No auth required. - - - **Body fields** + momoRequestPaylaod: + $ref: '#/components/examples/momoRequestPaylaod' + cardRequestPaylaod: + $ref: '#/components/examples/cardRequestPayload' + accountRequestPaylaod: + $ref: '#/components/examples/accountRequestPaylaod' + transferRequestPaylaod: + $ref: '#/components/examples/transferRequestPaylaod' + + + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + type: object + examples: + InitiateAccountPaymentResponse: + $ref: '#/components/examples/InitiateAccountPaymentResponse' + InitiateAccountPaymentS12Response: + $ref: '#/components/examples/InitiateAccountPaymentS12Response' + InitiateAccountPaymentS7Response: + $ref: '#/components/examples/InitiateAccountPaymentS7Response' + InitiateCardPaymentResponse: + $ref: '#/components/examples/InitiateCardTransactionsResponse' + InitiateCardTransactionsS12Response: + $ref: '#/components/examples/InitiateCardTransactionsS12Response' + InitiateCardTransactionsS18Response: + $ref: '#/components/examples/InitiateCardTransactionsS18Response' + InitiateTransferResponse: + $ref: '#/components/examples/InitiateTransferResponse' + GhanaMomoResponse: + $ref: '#/components/examples/GhanaMomoResponse' + 400: + description: Bad Request + content: + application/json: + schema: + type: object + # $ref: '#/components/schemas/InitiatePayment400Response' + examples: + InitiatePayment400InputResponse: + $ref: '#/components/examples/InitiatePayment400InputResponse' + InitiatePayment400Response: + $ref: '#/components/examples/InitiatePayment400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + # $ref: '#/components/schemas/InitiatePayment403Response' + examples: + InitiatePayment403Response: + $ref: '#/components/examples/403Response' + InitiateCardTransactionsResponse403Response: + $ref: '#/components/examples/403Response1' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + 500Response1: + $ref: '#/components/examples/500Response1' + deprecated: false security: - - BearerAuth: [] - /auth/reset: + - Bearer: [] + x-codegen-request-body-name: Body + + + /banks/merchant/SBTESTPUBK_p8GqvFSFNCBahSJinczKd9aIPoRUZfda: + get: + tags: + - PAYMENT METHOD + summary: Get Banks + description: 'Get list of banks' + operationId: GetBanks + responses: + 201: + description: "" + content: + application/json: + schema: + type: object + examples: + BanksResponse: + $ref: '#/components/examples/BanksResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/OTPMomo400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + 404Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + # security: + # - Bearer: [] + x-codegen-request-body-name: Body + + /payments/momo/otp: post: tags: - - PARTNERS API - summary: Reset Password - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_reset-password_52 - servers: - - url: https://seerbitapi.com + - MOMO + summary: OTP Momo + description: 'When making MOMO transfers, and OTP is required to complete the payment' + operationId: OTPMomo requestBody: - required: true content: application/json: schema: - type: object - properties: - email: - type: string - description: Registered partner email - newPassword: - type: string - description: Minimum 8 characters, must include an uppercase letter and a - special character - otp: - type: string - description: Code sent by *Request Password Reset* - required: - - email - - newPassword - - otp - examples: - reset-password: - summary: Reset Password - value: - email: partner@example.com - newPassword: "{{newPartnerPassword}}" - otp: "123456" - description: >- - Completes a password reset using the OTP emailed by *Request Password - Reset*. - - - **Body fields** + $ref: '#/components/schemas/OTPMomoRequest' + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + type: object + examples: + OTPMomoResponse: + $ref: '#/components/schemas/OTPMomoResponse' + OTPMomoResponse1: + $ref: '#/components/examples/OTPMomoResponse1' + 400: + description: Method Not Allowed + content: + application/json: + schema: + $ref: '#/components/schemas/OTPMomo400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /api/v1/business/invite: + - Bearer: [] + x-codegen-request-body-name: Body + /payments/charge: post: tags: - - PARTNERS API - summary: Invite Business - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_invite-business_53 - servers: - - url: https://seerbitapi.com + - NON 3DS PAYMENT + summary: Charge Card + description: 'This payment option is used to charge non 3d transactions' + operationId: ChargeCard requestBody: - required: true content: application/json: schema: - type: object - properties: - name: - type: string - description: Contact person's name at the business - businessName: - type: string - description: Business's registered name - email: - type: string - description: Business contact email — the invite is sent here - countryCode: - type: string - description: Defaults to `NG`; change only if the business operates outside - Nigeria - partnerId: - type: string - description: Your partner ID — don't modify this - required: - - name - - businessName - - email - - countryCode - - partnerId + type: object examples: - invite-business: - summary: Invite Business - value: - name: Jane Doe - businessName: Acme Ltd - email: jane@acme.com - countryCode: NG - partnerId: "{{partnerId}}" - description: >- - Invites a new sub-merchant business under this partner account. Auth - is via a Public-Key header rather than Bearer alone. - - - **Body fields** + ChargeCardRequest: + $ref: '#/components/examples/ChargeCardRequest' + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + type: object + examples: + ChargeCardResponse: + $ref: '#/components/examples/ChargeCardResponse' + ChargeCardResponse1: + $ref: '#/components/examples/ChargeCardResponse1' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response1: + $ref: '#/components/examples/400Response1' + 400Response2: + $ref: '#/components/examples/400Response2' + 400Response3: + $ref: '#/components/examples/400Response3' + 400Response4: + $ref: '#/components/examples/400Response4' + 400Response5: + $ref: '#/components/examples/400Response5' + 400Response6: + $ref: '#/components/examples/400Response6' + 400Response7: + $ref: '#/components/examples/400Response7' + 400Response8: + $ref: '#/components/examples/400Response8' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 403Response4: + $ref: '#/components/examples/403Response4' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /api/v1/business/SBT0050/invite: + - Basic: [] + x-codegen-request-body-name: Body + /payments/query/STG10948E242065R569A22tAQM85EQW4: get: tags: - - PARTNERS API - summary: Get Business Invite - description: Lists businesses invited under a given business/partner ID. - `SBT0050` in the saved URL is the example ID shown in the doc — replace - it with a real one. Returns each invited business's ID, name, and email. - operationId: get_get-business-invite_54 - servers: - - url: https://seerbitapi.com + - CARD + summary: Check Status + description: 'This Operation allows you to check the status of a transaction via the status check api. This is done by making a Get request to the endpoint below with your payment reference.' + operationId: CheckStatus responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/CheckStatusResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + CreateOrder400Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + 500Response4: + $ref: '#/components/examples/500Response4' + deprecated: false security: - - BearerAuth: [] - /api/v1/business/commission: + - Bearer: [] + x-codegen-request-body-name: Body + /payments/validate: post: tags: - - PARTNERS API - summary: Set Business Commission - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_set-business-commission_55 - servers: - - url: https://seerbitapi.com + - ACCOUNT + summary: Validate Transaction + description: 'This option is used to complete an account transaction, when OTP is required' + operationId: ValidateTransaction requestBody: - required: true content: application/json: schema: - type: object - properties: - businessId: - type: string - description: The sub-merchant business to set commission for - mccPercentage: - type: number - description: Commission percentage charged per transaction - cappedAmount: - type: string - description: Maximum commission amount per transaction, regardless of percentage - required: - - businessId - - mccPercentage - - cappedAmount - examples: - set-business-commission: - summary: Set Business Commission - value: - cappedAmount: "10000" - mccPercentage: "1.5" - businessId: "{{businessId}}" - description: >- - Sets the commission SeerBit deducts on transactions for one - sub-merchant business. Auth is via a Public-Key header rather than - Bearer alone. - - - **Body fields** + $ref: '#/components/schemas/ValidateTransactionRequest' + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + type: object + examples: + ValidateTransactionResponse: + $ref: '#/components/examples/ValidateTransactionResponse' + ValidateTransactionResponse1: + $ref: '#/components/examples/ValidateTransactionResponse1' + ValidateTransactionResponse2: + $ref: '#/components/examples/ValidateTransactionResponse2' + ValidateTransactionResponse3: + $ref: '#/components/examples/ValidateTransactionResponse3' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /api/v1/business/password: + - Bearer: [] + x-codegen-request-body-name: Body + /payments/tokenize: post: tags: - - PARTNERS API - summary: Change Partner Password - description: Authenticate partner accounts and manage invited businesses, - commissions, and partner credentials. - operationId: post_change-partner-password_56 - servers: - - url: https://seerbitapi.com + - TOKENIZE + summary: Tokenize a Card + description: 'In order to store your customers payment details, you need to pass some additional parameter when making the first payment request using the payments/tokenize endpoint, the Cvv field and pin are optional(this could be null). After the first payment is made, the payment details is collected and a token is generated for it which is then stored for future use.' + operationId: TokenizeaCard requestBody: - required: true content: application/json: schema: type: object - properties: - currentPassword: - type: string - description: Partner's current password - newPassword: - type: string - description: Must meet the same complexity rules as *Reset Password* - required: - - currentPassword - - newPassword - examples: - change-partner-password: - summary: Change Partner Password - value: - currentPassword: "{{partnerPassword}}" - newPassword: "{{newPartnerPassword}}" - description: >- - Changes the logged-in partner's password. Requires Bearer auth (the - partner token from *Partner Login*). - - - **Body fields** + examples: + TokenizeaCardRequest: + $ref: '#/components/examples/TokenizeaCardRequest' + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/TokenizeCardResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response9: + $ref: '#/components/examples/400Response9' + 400Response10: + $ref: '#/components/examples/400Response10' + 401: + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/TokenizeCard401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + 403Response3: + $ref: '#/components/examples/403Response3' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 404Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks: + - Basic: [] + x-codegen-request-body-name: Body + /payments/authorise: post: tags: - - WEBHOOKS (REFERENCE) - summary: refund - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_refund_57 - servers: - - url: https://seerbitapi.com + - AUTHORISE + summary: Authorise + description: 'In SeerBit API, the term “authorisation” indicates, that payment is authorised but not captured. This allows a merchant to cancel transaction at their discretion, typically based but not limited to fraud-related activities. This authorisation state is valid for a limited period of time, which provides a window to cancel the transaction.' + operationId: Authorise requestBody: - required: true content: application/json: schema: - type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object + type: object examples: - refund: - summary: refund - value: - eventType: refund - eventDate: 2026-05-01 12:55:57 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - amount: "5000.00" - createdAt: 2026-05-01T12:55:00Z - transactionRef: payment_reference8 - description: Customer requested refund - type: FULL_REFUND - mode: LIVE - updatedAt: 2026-05-01T12:55:57Z - description: >- - **Reference only — not a request you send.** This documents the - `refund` payload SeerBit POSTs to *your* configured webhook URL after - the matching event happens; there is nothing at SeerBit to call here. - The body below is the shape of what you'll receive. - - - Sent when a refund is processed against one of your transactions (full or partial, per `type`). - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + AuthoriseRequest: + $ref: '#/components/examples/AuthoriseRequest' + AuthorisewithCardTokenRequest: + $ref: '#/components/examples/AuthorisewithCardTokenRequest' + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + type: object + examples: + Authorise201Response: + $ref: '#/components/examples/Authorise201Response' + Authorise201Response1: + $ref: '#/components/examples/Authorise201Response1' + AuthorisewithCardTokenResponse1: + $ref: '#/components/examples/AuthorisewithCardTokenResponse1' + AuthorisewithCardTokenResponse: + $ref: '#/components/examples/AuthorisewithCardTokenResponse' + + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response1: + $ref: '#/components/examples/400Response1' + 400Response3: + $ref: '#/components/examples/400Response3' + 400Response5: + $ref: '#/components/examples/400Response5' + 400Response6: + $ref: '#/components/examples/400Response6' + 400Response7: + $ref: '#/components/examples/400Response7' + 400Response8: + $ref: '#/components/examples/400Response8' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response1: + $ref: '#/components/examples/401Response1' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 403Response4: + $ref: '#/components/examples/403Response4' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 404Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks#dispute: + - Basic: [] + x-codegen-request-body-name: Body + /payments/authorise3ds: post: tags: - - WEBHOOKS (REFERENCE) - summary: dispute - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_dispute_58 - servers: - - url: https://seerbitapi.com + - AUTHORISE + summary: 3DS Authorise + description: 'PIN and CVV are not Required to complete Transaction. Authorization is completed on 3DS.' + operationId: 3DSAuthorise requestBody: - required: true content: application/json: schema: - type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object + type: object examples: - dispute: - summary: dispute - value: - eventType: dispute - eventDate: 2026-05-01 12:56:07 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - evidence: - - images: - - image: https://example.com/evidence1.png - description: >- - **Reference only — not a request you send.** This documents the - `dispute` payload SeerBit POSTs to *your* configured webhook URL after - the matching event happens; there is nothing at SeerBit to call here. - The body below is the shape of what you'll receive. - - - Sent when a chargeback/dispute is raised against one of your transactions; `evidence` carries whatever supporting material is attached. - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + 3DSAuthoriseRequest: + $ref: '#/components/examples/3DSAuthoriseRequest' + required: true responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + type: object + examples: + 3DSAuthoriseResponse: + $ref: '#/components/examples/3DSAuthoriseResponse' + 3DSAuthoriseResponse1: + $ref: '#/components/examples/3DSAuthoriseResponse1' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 403Response4: + $ref: '#/components/examples/403Response4' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response1: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks#transaction: + - Bearer: [] + x-codegen-request-body-name: Body + /payments/capture: post: tags: - - WEBHOOKS (REFERENCE) - summary: transaction - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_transaction_59 - servers: - - url: https://seerbitapi.com + - PREAUTHORIZATION + summary: Capture + description: 'Captures a payment if supported by the payment method.' + operationId: Capture requestBody: - required: true content: application/json: schema: - type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object - examples: - transaction: - summary: transaction - value: - eventType: transaction - eventDate: 2026-07-01 08:56:16 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - amount: 5000 - reference: payment_reference8 - gatewayMessage: Successful - publicKey: "{{publicKey}}" - businessName: Your Business - fee: 50 - channelType: MASTERCARD - maskedPan: 5123-40xx-xxxx-0008 - fullname: Jane Doe - email: customer@example.com - gatewayReference: GW-REF-001 - country: NG - currency: NGN - paymentType: CARD - gatewayCode: "00" - code: "00" - createdAt: 2026-07-01T08:56:00Z - updatedAt: 2026-07-01T08:56:16Z - description: >- - **Reference only — not a request you send.** This documents the - `transaction` payload SeerBit POSTs to *your* configured webhook URL - after the matching event happens; there is nothing at SeerBit to call - here. The body below is the shape of what you'll receive. - - - Sent for a card payment (e.g. from Standard Checkout or Tokenization) reaching a final state — this is the async counterpart to polling *Check Payment Status*. - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + $ref: '#/components/schemas/CaptureRequest' + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + type: object + examples: + CaptureResponse: + $ref: '#/components/examples/Capture201Response' + CaptureResponse1: + $ref: '#/components/examples/Capture201Response1' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response2: + $ref: '#/components/examples/400Response2' + 400Response3: + $ref: '#/components/examples/400Response3' + 400Response4: + $ref: '#/components/examples/400Response4' + 400Response5: + $ref: '#/components/examples/400Response5' + 400Response6: + $ref: '#/components/examples/400Response6' + 400Response8: + $ref: '#/components/examples/400Response8' + 400Response11: + $ref: '#/components/examples/400Response11' + + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + 403Response: + $ref: '#/components/examples/403Response' + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks#transactionwallet: + - Basic: [] + x-codegen-request-body-name: Body + /payments/refund: post: tags: - - WEBHOOKS (REFERENCE) - summary: transaction.wallet - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_transactionwallet_60 - servers: - - url: https://seerbitapi.com + - PREAUTHORIZATION + summary: Refund + description: 'Refunds a payment if supported by the payment method.' + operationId: Refund requestBody: - required: true content: application/json: schema: - type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object - examples: - transactionwallet: - summary: transaction.wallet - value: - eventType: transaction.wallet - eventDate: 2026-05-01 12:52:28 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - amount: 5000 - fee: 0 - mobile: "08012345678" - reference: va_ref_001 - gatewayMessage: APPROVED - bankCode: "000016" - description: Wallet funding - type: Transfer - fullname: Jane Doe - email: customer@example.com - country: NG - currency: NGN - creditAccountName: Jane Doe - creditAccountNumber: "1234567890" - originatorAccountnumber: "0987654321" - originatorName: John Smith - narration: Funding - createdAt: 2026-05-01T12:52:00Z - updatedAt: 2026-05-01T12:52:28Z - description: >- - **Reference only — not a request you send.** This documents the - `transaction.wallet` payload SeerBit POSTs to *your* configured - webhook URL after the matching event happens; there is nothing at - SeerBit to call here. The body below is the shape of what you'll - receive. - - - Sent when a bank transfer lands on a Virtual Account or Pocket — this is what tells you a *Get Payments* or Pocket balance actually changed, without you having to poll. - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + $ref: '#/components/schemas/RefundRequest' + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/Refund201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response2: + $ref: '#/components/examples/400Response2' + 400Response3: + $ref: '#/components/examples/400Response3' + 400Response4: + $ref: '#/components/examples/400Response4' + 400Response5: + $ref: '#/components/examples/400Response5' + 400Response6: + $ref: '#/components/examples/400Response6' + 400Response8: + $ref: '#/components/examples/400Response8' + 400Response11: + $ref: '#/components/examples/400Response11' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + 403Response: + $ref: '#/components/examples/403Response' + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks#transactionrecurrent: + - Basic: [] + x-codegen-request-body-name: Body + /payments/cancel: post: tags: - - WEBHOOKS (REFERENCE) - summary: transaction.recurrent - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_transactionrecurrent_61 - servers: - - url: https://seerbitapi.com + - PREAUTHORIZATION + summary: Cancel + description: 'Cancel a payment if supported by the payment method.' + operationId: Cancel requestBody: - required: true content: application/json: schema: - type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object - examples: - transactionrecurrent: - summary: transaction.recurrent - value: - eventType: transaction.recurrent - eventDate: 2026-05-01 12:50:33 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - amount: 100 - mobile: "08012345678" - reference: sub_charge_ref_001 - publicKey: "{{publicKey}}" - description: Subscription charge - productId: product222 - maskedPan: 5123-40xx-xxxx-0008 - email: customer@example.com - country: NG - narration: Recurrent - createdAt: 2026-05-01T12:50:00Z - updatedAt: 2026-05-01T12:50:33Z - description: >- - **Reference only — not a request you send.** This documents the - `transaction.recurrent` payload SeerBit POSTs to *your* configured - webhook URL after the matching event happens; there is nothing at - SeerBit to call here. The body below is the shape of what you'll - receive. - - - Sent when a subscription's scheduled charge (from *Create Plan* / *Charge Subscription*) completes. - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + $ref: '#/components/schemas/CancelRequest' + required: true responses: - "200": - description: Successful response + 201: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/Cancel201Response' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response2: + $ref: '#/components/examples/400Response2' + 400Response3: + $ref: '#/components/examples/400Response3' + 400Response4: + $ref: '#/components/examples/400Response4' + 400Response5: + $ref: '#/components/examples/400Response5' + 400Response6: + $ref: '#/components/examples/400Response6' + 400Response11: + $ref: '#/components/examples/400Response11' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + 403Response2: + $ref: '#/components/examples/403Response2' + 403Response3: + $ref: '#/components/examples/403Response3' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response1' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] - /webhooks#transactionrecurringdebit: + - Basic: [] + x-codegen-request-body-name: Body + /recurring/subscribes: post: tags: - - WEBHOOKS (REFERENCE) - summary: transaction.recurring.debit - description: Reference payloads SeerBit sends to your callback URL for - payment-related events. - operationId: post_transactionrecurringdebit_62 - servers: - - url: https://seerbitapi.com + - RECURRENT + summary: Initiate Subscription + description: 'To complete this transaction, merchant is expected to redirect to the 3DSecure site via the redirect URL provided with the response below. However if the redirect url is not returned and the code is S20 and the message is transaction is pending, the Validate OTP endpoint should be called as the customer would have received a token either by email or sms on the customers phone. To get the subscription created or the status of a subscription for the customer, the GET Subscription endpoint is called by passing the paymentReference as billingId.' + operationId: InitiateSubscription requestBody: - required: true content: application/json: schema: type: object - properties: - eventType: - type: string - eventDate: - type: string - eventId: - type: string - data: - type: object examples: - transactionrecurringdebit: - summary: transaction.recurring.debit - value: - eventType: transaction.recurring.debit - eventDate: 2026-05-01 12:55:32 - eventId: 3fa85f64-5717-4562-b3fc-2c963f66afa6 - data: - amount: 5000 - reference: charge_token_ref_001 - gatewayMessage: Successful - publicKey: "{{publicKey}}" - description: Authorised charge - channelType: Recurring Debit - maskedPan: 5123-40xx-xxxx-0008 - type: TOKEN - fullname: Jane Doe - email: customer@example.com - country: NG - currency: NGN - narration: Authorised charge - paymentType: card - createdAt: 2026-05-01T12:55:00Z - updatedAt: 2026-05-01T12:55:32Z - description: >- - **Reference only — not a request you send.** This documents the - `transaction.recurring.debit` payload SeerBit POSTs to *your* - configured webhook URL after the matching event happens; there is - nothing at SeerBit to call here. The body below is the shape of what - you'll receive. - - - Sent for a subsequent automated debit against a stored token (e.g. *Charge Authorization Token*) outside the subscription schedule. - - - Your endpoint must respond with HTTP 200 within the acknowledgment window (see this folder's description for V1 vs V2 timing/format) or SeerBit will retry. + InitiateSubscriptionRequest: + $ref: '#/components/examples/InitiateSubscriptionRequest' + required: true + responses: + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/InitiateSubscriptionResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 400Response1: + $ref: '#/components/examples/400Response12' + 400Response3: + $ref: '#/components/examples/400Response13' + 400Response4: + $ref: '#/components/examples/400Response14' + 400Response5: + $ref: '#/components/examples/400Response15' + 400Response6: + $ref: '#/components/examples/400Response16' + 401: + description: Unauthorized + content: + application/json: + schema: + type: object + examples: + 401Response: + $ref: '#/components/examples/401Response' + 403: + description: Missing Header Token + content: + application/json: + schema: + type: object + examples: + CreateOrder403Response: + $ref: '#/components/examples/Order403Response' + 403Response: + $ref: '#/components/examples/403Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/404Response' + 409: + description: Conflict + content: + application/json: + schema: + type: object + examples: + 409Response: + $ref: '#/components/examples/409Response' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false + security: + - Bearer: [] + x-codegen-request-body-name: Body + /recurring/billingId/TPR2181t55PER542RPP1U1W4391WO: + get: + tags: + - RECURRENT + summary: Get a Subscription + description: 'Get customer subscription' + operationId: GetaSubscription responses: - "200": - description: Successful response + 200: + description: "" + content: + application/json: + schema: + $ref: '#/components/schemas/GetSubscriptionResponse' + 400: + description: Method Not Allowed + content: + application/json: + schema: + type: object + examples: + 400Response: + $ref: '#/components/examples/400Response' + 404: + description: Not Found + content: + application/json: + schema: + type: object + examples: + 400Response1: + $ref: '#/components/examples/404Response1' + 400Response2: + $ref: '#/components/examples/404Response2' + 500: + description: Internal Server Error + content: + application/json: + schema: + type: object + examples: + 500Response: + $ref: '#/components/examples/500Response' + deprecated: false security: - - BearerAuth: [] + - Bearer: [] components: + schemas: + GenerateEncryptedSecretKeyRequest: + title: GenerateEncryptedSecretKeyRequest + required: + - key + type: object + properties: + key: + type: string + description: This consist of the PrivateKey and the publicKey separated with a '.' in the middle(eg:{privateKey.publicKey} + example: + key: SBTESTSECK_9Cb8dbqR5Rc2JwZaa77P5QYHzQaeGUcrkEMD1dEi.SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + GenerateHashRequest: + title: GenerateHashRequest + required: + - amount + - callbackUrl + - country + - currency + - email + - paymentReference + - productDescription + - productId + - publicKey + type: object + properties: + publicKey: + type: string + description: This is the merchant public key. + amount: + type: string + description: This is the amount to be paid. + currency: + type: string + description: This is the currency the transaction is to be carried out in. + country: + type: string + description: This is the country from which the transaction is been carried out from + paymentReference: + type: string + description: This is the unique identifier for a transaction, to be generated by merchant. + email: + type: string + description: This is the email of the customer. + productId: + type: string + description: This is the product id entered by the merchant. + productDescription: + type: string + description: This is the product description supplied by the merchant. + callbackUrl: + type: string + example: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + amount: "10.00" + currency: NGN + country: NG + paymentReference: 3791090233047WZ73QN + email: mamadou.diouf@intouchgroup.net + productId: "15013" + productDescription: touch badge + callbackUrl: https://gutouch.com + PaymentLinkFromCheckoutRequest: + title: PaymentLinkFromCheckoutRequest + required: + - amount + - callbackUrl + - country + - currency + - email + - hash + - hashType + - paymentReference + - productDescription + - productId + - publicKey + type: object + properties: + publicKey: + type: string + description: This is the merchant public key. + amount: + type: string + description: This is the amount to be paid. + currency: + type: string + description: This is the currency the transaction is to be carried out in. + country: + type: string + description: This is the country from which the transaction is been carried out from + paymentReference: + type: string + description: This is the unique identifier for a transaction, to be generated by merchant. + email: + type: string + description: This is the email of the customer. + productId: + type: string + description: This is the product id entered by the merchant. + productDescription: + type: string + description: This is the product description supplied by the merchant. + callbackUrl: + type: string + description: This is the callback url supplied by the merchant so that Seerbit can redirect back to it . + hash: + type: string + description: This is the hash of the concatenated string for payment. Check hash module for more clarification. + hashType: + type: string + description: This refers to the hash type used in generating the hash + example: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + amount: "10.00" + currency: NGN + country: NG + paymentReference: P791090233047WZ73QN + email: mamadou.diouf@intouchgroup.net + productId: "15013" + productDescription: touch badge + callbackUrl: https://gutouch.com + hash: cfb5464ea21cce315ea72fb28f7ea45c4b61c443783eeff82dea98e57d445e15 + hashType: sha256 + OTPMomoRequest: + title: OTPMomoRequest + required: + - linkingReference + - otp + type: object + properties: + linkingReference: + type: string + description: This is the internal gateway reference + otp: + type: string + description: This is the TOKEN sent to customer’s phone or email + example: + linkingReference: CF630837081601460887752 + otp: "81015" + ValidateTransactionRequest: + title: ValidateTransactionRequest + required: + - linkingReference + - otp + type: object + properties: + linkingReference: + type: string + description: This is the internal gateway reference + otp: + type: string + description: This is the TOKEN sent to customer’s phone or email + example: + linkingReference: F092648971601293723061 + otp: "123456" + CaptureRequest: + title: CaptureRequest + required: + - amount + - country + - currency + - paymentReference + - productDescription + - publicKey + type: object + properties: + paymentReference: + type: string + description: This is the unique identifier for a transaction, to be generated by merchant. + currency: + type: string + description: This is the currency the transaction is to be carried out in. + country: + type: string + description: This is the country the customer is doing the transaction from + productDescription: + type: string + description: This is the product description supplied by the merchant. + amount: + type: string + description: This is the amount to be paid. + publicKey: + type: string + description: This is the merchant public key. + example: + paymentReference: PREAUTH124456789798765k321CB0 + currency: NGN + country: NG + productDescription: preauth test capture + amount: "5.10" + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + RefundRequest: + title: RefundRequest + required: + - amount + - country + - currency + - paymentReference + - productDescription + - publicKey + type: object + properties: + paymentReference: + type: string + description: This is the unique identifier for a transaction, to be generated by merchant. + currency: + type: string + description: This is the currency the transaction is to be carried out in. + country: + type: string + description: This is the country the customer is doing the transaction from + productDescription: + type: string + description: This is the product description supplied by the merchant. + amount: + type: string + description: This is the amount to be paid. + publicKey: + type: string + description: This is the merchant public key. + example: + paymentReference: PREAUTH124456789798765432CB0 + currency: NGN + country: NG + productDescription: preauth test capture + amount: "5.10" + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + CancelRequest: + title: CancelRequest + required: + - country + - paymentReference + - productDescription + - publicKey + type: object + properties: + paymentReference: + type: string + description: This is the unique identifier for a transaction, to be generated by merchant. + publicKey: + type: string + description: This is the merchant public key. + country: + type: string + description: This is the country the customer is doing the transaction from + productDescription: + type: string + description: This is the product description supplied by the merchant. + example: + paymentReference: PREAUTH124456789798765k3L1CB0 + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + country: NG + productDescription: test void + GenerateEncryptedSecretKeyResponse: + title: GenerateEncryptedSecretKeyRequest + type: object + example: + status: SUCCESS + data: + code: "00" + EncrytedSecKey: + encryptedKey: oAX1OeAlwNt9BI5VEwBLlxtWgL2WaLT9kTc4EMaaZgXMfdhHXaqqVgapnQSOO4OZM2oLRPtqjJzwNLEEGqFSvam8MFz06U4fl/5TVwfWLMsRHq4mML9ExIaXRVn3bVm8 + message: Successful + GenerateHashResponse: + title: GenerateHashResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + hash: + hash: ae18321b005df1b9f16ca8590425e213366da3ab1d8aa2fa30d78dfa6ab9850a + PaymentLinkFromCheckoutResponse: + title: PaymentLinkFromCheckoutResponse + type: object + example: + status: SUCCESS + data: + code: "00" + payments: + redirectLink: https://checkout.seerbitapi.com/#/?mid=SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u&paymentReference=39910902330P7WZ73QN + paymentStatus: "08" + message: Successful + CreateOrder201Response: + title: CreateOrderResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + products: + - amount: 100 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM + paymentReference: 0w0eimkizc41602513327447 + orderId: wil61c8cd7 + createdAt: 2020-10-16T11:41:05.723 + updatedAt: 2020-10-16T11:41:05.723 + - amount: 300 + currency: NGN + productId: 3081869.0 + productDescription: SKIN CARE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil9b10fbe + createdAt: 2020-10-16T11:41:07.17 + updatedAt: 2020-10-16T11:41:07.17 + UpdateOrder201Response: + title: CreateOrderResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + products: + - amount: 800 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + - amount: 400 + currency: NGN + productId: 3081869.0 + productDescription: SKIN CARE UPDATE TEST + paymentReference: 0w0eimkizc41602513327447 + orderId: wil1cc231f + + GetOrderByPublicKey201Response: + title: GetOrderByPublicKeyResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + products: + - amount: 100 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:28 + updatedAt: 2020-10-17T21:56:54 + - amount: 300 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:29 + updatedAt: 2020-10-17T21:56:54 + GetOrderByPublicKeyAndPaymentReference201Response: + title: GetOrderByPublicKeyResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + products: + - amount: 100 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:28 + updatedAt: 2020-10-17T21:56:54 + - amount: 300 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:29 + updatedAt: 2020-10-17T21:56:54 + GetOrderByPublicKeyAndOrderId201Response: + title: GetOrderByPublicKeyResponse + type: object + example: + status: SUCCESS + data: + code: "00" + message: Successful + products: + - amount: 100 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:28 + updatedAt: 2020-10-17T21:56:54 + - amount: 300 + currency: NGN + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + paymentReference: 0w0eimkizc41602513327447 + orderId: wil0f47b62 + createdAt: 2020-10-12T15:38:29 + updatedAt: 2020-10-17T21:56:54 + OTPMomoResponse: + title: OTPMomoResponse + type: object + example: + status: SUCCESS + data: + code: S20 + payments: + paymentReference: O456S5077987982QWEuWAT05M + linkingReference: CF580053381599564199316 + message: Transaction is pending + OTPMomo400Response: + title: OTPMomoResponse + type: object + example: + message: Bad Request + error: There has been a problem with reading or understanding the request. + CheckStatusResponse: + title: CheckStatusResponse + type: object + example: + status: SUCCESS + data: + code: S20 + payments: + redirectLink: http://checkout-seerbit.surge.sh + amount: 100 + internationalChargedAmount: 155.2 + mobilenumber: 8.033456599E9 + publicKey: SBTESTPUBK_PjQ5dFOi522L383MlsQYUMAe6cZYviTF + paymentType: CARD + productId: Foods + productDescription: RASPBERRY + maskedPan: 5123-45xx-xxxx-0008 + gatewayMessage: Transaction is pending + gatewayCode: S20 + gatewayref: F002672971602775508582 + mode: test + redirecturl: http://checkout-seerbit.surge.sh + channelType: Mastercard + sourceIP: 127.0.0.1:3456 + deviceType: Apple Laptop + cardBin: "512345" + lastFourDigits: "0008" + type: 3DSECURE + country: NG + currency: NGN + paymentReference: SSQ22POtAQMVC85EQWB8 + processorCode: S20 + processorMessage: Transaction is pending + reason: Transaction is pending + customers: + customerId: SBTfd3024f89b67e2f8a121 + customerName: Kola Victor + customerMobile: 8.033456599E9 + customerEmail: kolawole@gmail.com + message: Transaction is pending + TokenizeCardResponse: + title: CheckStatusResponse + type: object + example: + status: SUCCESS + data: + code: S20 + payments: + paymentReference: KES0092992991 + linkingReference: SEERBIT428813491603106540088 + status: TOKENIZED + card: + bin: "512345" + last4: "0008" + token: tk_fa12ee73-9807-4a8a-bc91-8e81ca3c47ce + TokenizeCard401Response: + title: CheckStatusResponse + type: object + example: + message: Invalid Authentication Token + error: INPUT + Refund201Response: + title: RefundResponse + type: object + example: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + status: REFUNDED + card: + bin: "512345" + last4: "0008" + token: tk_40a0503d-4586-4220-a69e-c69cc9293016 + message: APPROVED + Cancel201Response: + title: CancelResponse + type: object + example: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + status: CANCELLED + card: + bin: "512345" + last4: "0008" + message: APPROVED + InitiateSubscriptionResponse: + title: InitiateSubscriptionResponse + type: object + example: + status: SUCCESS + data: + code: S20 + payments: + paymentReference: TPR2181t55PER540RPP1U1W4392WO + linkingReference: F365652421603189345033 + redirectUrl: https://staging.seerbitapigateway.com/seerbit/card-dispatch?sredref=F365652421603189345033 + message: Transaction is pending + GetSubscriptionResponse: + title: GetSubscriptionResponse + type: object + example: + status: SUCCESS + data: + subscriptions: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + amount: 100 + country: NG + customerId: SBT4d26d47dcb33f9430507 + cardName: Kolade Samuel + cardNumber: 5123-45xx-xxxx-0008 + plan: c6d4096c8244b5e0dbda + status: INACTIVE + billingId: TPR2181t55PER542RPP1U1W4391WO + authorizationCode: 5f818a9f1191c423446b + startDate: 2020-02-25 00:00:00 + createdAt: 1601385265000 + code: "00" + message: Successful securitySchemes: - BearerAuth: + Bearer: + type: apiKey + name: Authorization + in: header + Basic: type: http - scheme: bearer - bearerFormat: EncryptedSecKey + scheme: basic + examples: + CreateOrderRequest: + summary: An example of order after payment request payload + value: + paymentReference: 0w0eimkizc41602513327447 + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + orders: + - amount: "100.00" + productId: 1089162.0 + productDescription: FODD ITEM + currency: NGN + - amount: "300.00" + productId: 3081869.0 + productDescription: SKIN CARE + currency: NGN + CreateOrderRequest2: + summary: An example of order before payment request payload + value: + email: test@mvaa.com + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + paymentReference: 2PPTG108Q13432E29P23R5L6W93I9 + fullName: "" + orderType: BULK_BULK + mobileNumber: "" + callbackUrl: http://mvaa.ebs-rcm.com/payment + country: NG + currency: NGN + amount: "250.00" + orders: + - orderId: "1235567-113227878-64332q" + currency: NGN + amount: "125.00" + productId: "0008162" + productDescription: FRSC PLATE NUMBER + - orderId: "2211567-2230578-754332" + currency: NGN + amount: "125.00" + productId: "4030018" + productDescription: WEIGHING AND ADMIN CHARGES + + cardRequestPayload: + summary: An example of card request payload + value: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + amount: "100.00" + fee: "10" + fullName: Kola Victor + mobileNumber: 8.028089445E9 + currency: NGN + country: NG + paymentReference: STG10948E242P65R569A20tAQM85EQW4 + email: kolawole@gmail.com + productId: Foods + productDescription: RASPBERRY + clientAppCode: kpp64 + redirectUrl: http://checkout-seerbit.surge.sh + paymentType: CARD + scheduleId: "" + channelType: Mastercard + deviceType: Apple Laptop + sourceIP: 127.0.0.1:3456 + cardNumber: "5123450000000008" + cvv: "100" + expiryMonth: "05" + expiryYear: "21" + pin: '####' + source: "" + retry: "false" + invoiceNumber: 10000123abc123 + isCvv: "true" + accountRequestPaylaod: + summary: An example of account request payload + value: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + amount: "2000.00" + fee: "10" + fullName: Samuel Tosin + mobileNumber: 8.028089445E9 + currency: NGN + country: NG + paymentReference: VERS2FURTHERTESTAc029456784 + email: kolawole@gmail.com + productId: Foods + productDescription: 'Uba Account Transaction ' + clientAppCode: kpp64 + channelType: BANK_ACCOUNT + redirectUrl: https://checkout.seerbit.com + callbackUrl: https://checkout.seerbit.com + paymentType: ACCOUNT + deviceType: Apple Laptop + sourceIP: 127.0.0.1:3456 + accountName: kolawole Alagbon + accountNumber: "1234567890" + bankCode: "033" + bvn: "12345678901" + dateOfBirth: 4011984.0 + source: "" + retry: "false" + invoiceNumber: 1234567891abc123ac + transferRequestPaylaod: + summary: An example of transfer request payload + value: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + fullName: Samuel Teas + amount: "20.00" + fee: 10 + redirectUrl: http://checkout-seerbit.surge.sh + sourceIP: 127.0.0.1:3456 + cardNumber: 5123450000000008 + isCvv: "true" + pocketReference: "12345678543" + callbackUrl: https://checkout.seerbit.com + accountName: kolawole Alagbon + accountNumber: "1234567890" + bankCode: "033" + bvn: "12345678901" + amountControl: FIXEDAMOUNT + channelType: Mastercard + mobileNumber: "08033456539" + cvv: "100" + expiryMonth: 5 + expiryYear: 21 + pin: '####' + type: 3DSECURE + source: "" + currency: NGN + country: NG + paymentReference: L16FDE3311RSEY2AUA3QWERQPU + email: kolawole@gmail.com + productId: Foods + productDescription: RASPBERRY + clientAppCode: kpp64 + paymentType: CARD + deviceType: Apple Laptop + walletDaysActive: "1" + retry: "false" + invoiceNumber: 1234567890abc123ac + momoRequestPaylaod: + summary: An example of momo request payload + value: + fullName: john doe + email: johndoe@gmail.com + mobileNumber: 2.48360953E8 + publicKey: SBPUBK_QGOX9NBAHWDYY1PAFSG2PTDOSSZYEWXM + paymentReference: O456S5077907982QWEuWAT05M + deviceType: nokia 3310 + sourceIP: 1.0.1.0 + currency: GHS + productDescription: snacks + country: GH + network: MTN + voucherCode: "" + fee: "0.00" + amount: "1.00" + productId: grocery + paymentType: MOMO + AuthoriseRequest: + summary: An example of Authorise Request payload + value: + paymentReference: PREAUTH124456789798765k3K1CB0 + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + cardNumber: "5123450000000008" + cvv: "100" + expiryMonth: "05" + expiryYear: "21" + currency: NGN + country: NG + productDescription: preauth test capture + amount: "100.00" + email: johndoe@gmail.com + fullName: john doe + AuthorisewithCardTokenRequest: + summary: AuthorisewithCardToken Request payload + value: + paymentReference: 30451A789S987643128hgffsfP6K + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + cardToken: tk_b0a4b2f6-9ac1-485b-b031-9e018d9479bd + currency: NGN + country: NG + productDescription: preauth test capture + amount: "1.00" + email: johndoe@gmail.com + fullName: john doe + callbackUrl: https://google.com + 3DSAuthoriseRequest: + summary: 3DSAuthorise Request payload + value: + paymentReference: 30451B789S987643108hgfdsfP6W + publicKey: SBPUBK_OMX6ZNRZPLIHQ9Y0ZG6FCNR0EAYIGIAT + cardNumber: "5242820813772165" + cvv: "865" + expiryMonth: "02" + expiryYear: "22" + currency: NGN + country: NG + productDescription: preauth test capture + amount: "1.00" + email: johndoe@gmail.com + fullName: john doe + callbackUrl: https://google.com + TokenizeaCardRequest: + summary: 3DSAuthorise Request payload + value: + publicKey: SBPUBK_OMX6ZNRZPLIHQ9Y0ZG6FCNR0EAYIGIAT + amount: "0.00" + fullName: john doe + mobileNumber: 8.033456599E9 + currency: NGN + country: NG + paymentReference: KES0092992991 + email: johndoe@gmail.com + productId: Foods + productDescription: RASPBERRY + cardNumber: "5123450000000008" + cvv: "100" + expiryMonth: "05" + expiryYear: "21" + InitiateSubscriptionRequest: + summary: Initiate Subscription Request payload + value: + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + paymentReference: TPR2181t55PKR540RPP1U1W4392WO + planId: "" + cardNumber: "5123450000000008" + expiryMonth: "05" + callbackUrl: https://www.google.com + expiryYear: "21" + cvv: "100" + amount: "1000.00" + currency: NGN + productDescription: Pilot Test Subscription + productId: Terrain + country: NG + startDate: "2020-02-25 00:00:00" + cardName: Kolade Samuel + billingCycle: WEEKLY + email: akintoyekolawole@gmail.com + mobileNumber: 08033456500 + customerId: "12345678901234" + pin: 0999 + type: 3DSECURE + billingPeriod: "1" + subscriptionAmount: true + ChargeCardRequest: + summary: 3DSAuthorise Request payload + value: + publicKey: SBTESTPUBK_dhrpzbRpR34l6VmqkCFOKA94L5E1jSTu + amount: "10.00" + fullName: Diei Okechukwu Peter + mobileNumber: 8.030540611E9 + currency: NGN + country: NG + paymentReference: NGN0000037Q35 + email: okechukwu.diei2@gmail.com + productId: Foods + productDescription: RASPBERRY + cardNumber: "5123450000000008" + expiryMonth: "05" + expiryYear: "21" + UpdateOrderRequest: + summary: 3DSAuthorise Request payload + value: + paymentReference: 0w0eimkizc41602513327447 + publicKey: SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u + orders: + - amount: "800.00" + productId: 1089162.0 + productDescription: FODD ITEM UPDATE + currency: NGN + orderId: wil0f47b62 + - amount: "400.00" + productId: 3081869.0 + productDescription: SKIN CARE UPDATE TEST + currency: NGN + orderId: wil1cc231f + InitiateAccountPaymentResponse: + summary: An example of account response payload + value: + status: SUCCESS + data: + code: "20" + payments: + paymentReference: VERS2FURTHERTESTAc722456784 + linkingReference: F282866521599191373372 + message: Transaction is pending + InitiateAccountPaymentS12Response: + summary: An example of account response S12 payload + value: + status: SUCCESS + data: + code: "S12" + payments: {} + message: Cant process at this moment, please try again Transaction reference must be unique + InitiateAccountPaymentS7Response: + summary: An example of account response S7 payload + value: + status: SUCCESS + data: + code: "S7" + payments: {} + message: Cant process at this moment, please try again Invalid Amount = Amount cannot be less than 100.0 + InitiateCardTransactionsResponse: + summary: An example of card response payload + value: + status: SUCCESS + data: + code: "S20" + payments: + paymentReference: STG10342E29R569A22QAQMP5EQW8 + linkingReference: F569896131602965690855 + redirectUrl: https://staging.seerbitapigateway.com/seerbit/card-dispatch?sredref=F569896131602965690855 + message: Transaction is pending + InitiateCardTransactionsS18Response: + summary: An example of card S18 response payload + value: + status: SUCCESS + data: + code: "S18" + payments: {} + message: Transaction reference must be unique + InitiateCardTransactionsS12Response: + summary: An example of card S12 response payload + value: + status: SUCCESS + data: + code: 'S12' + payments: {} + message: Transaction Failed + InitiateTransferResponse: + summary: An example of transfer response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: NGN0100067Q35 + amount: 20 + walletName: SeerBit + wallet: "9956411533" + bankName: Providus Bank + accountNumber: "9956411533" + message: ACCOUNT OPENED SUCCESSFULLY + GhanaMomoResponse: + summary: An example of momo response payload + value: + status: SUCCESS + data: + code: NIP + payments: + paymentReference: O456S5077987982QWEuWAT05M + linkingReference: CF580053381599564199316 + message: Kindly Enter Otp + 404Response: + summary: An example of 404 response payload + value: + error: Not Found + 404Response1: + summary: An example of 404 response payload + value: + message: Not Found + error: The server can not find the requested resource + 404Response2: + summary: An example of 404 response payload + value: + message: Subscription Not Found + error: NOT_FOUND + 401Response: + summary: An example of 401 response payload + value: + message: Invalid Authentication Token + error: INPUT + 400Response: + summary: An example of 400 response payload + value: + message: Bad Request + error: There has been a problem with reading or understanding the request. + + 403Response1: + summary: An example of 403 response payload + value: + message: Header Token Missing + error: PERMISSION + 403Response: + summary: An example of 403 response payload + value: + message: Confirm Merchant Environment + error: PERMISSION + InitiatePayment400Response: + summary: An example of 400 response payload + value: + message: Payment Type cannot be null + error: INPUT + InitiatePayment400InputResponse: + summary: An example of 400 response payload + value: + message: Bad Request + error: There has been a problem with reading or understanding the request. + 500Response: + summary: An example of 500 response payload + value: + message: Internal Server Error + error: PROCESSING + 500Response1: + summary: An example of 500 response payload + value: + message: Transaction with reference exists + error: PROCESSING + 500Response2: + summary: An example of 500 response payload + value: + message: Transaction with paymentReference does not exist + error: PROCESSING + 500Response3: + summary: An example of 500 response payload + value: + message: Transaction with paymentReference does not exist + error: PROCESSING + 500Response4: + summary: An example of 500 response payload + value: + message: No transaction found + error: PROCESSING + 500Response5: + summary: An example of 500 response payload + value: + message: Transaction Exists + error: PROCESSING + PaymentLinkFromCheckout500Response: + summary: An example of PaymentLinkFromCheckout 500 response payload + value: + message: INVALID HASH + error: PROCESSING + PaymentLinkFromCheckout500Response1: + summary: An example of PaymentLinkFromCheckout 500 response payload + value: + message: Transaction Exists + error: PROCESSING + PaymentLinkFromCheckout500Response2: + summary: An example of PaymentLinkFromCheckout 500 response payload + value: + error: PROCESSING + CreateOrder404Response: + summary: An example of 404 response payload + value: + message: Not Found + error: The server can not find the requested resource + Order404Response1: + summary: An example of 404 response payload + value: + message: Transaction Not Found + error: NOT_FOUND + Order404Response2: + summary: An example of 404 response payload + value: + message: Orders Not Found + error: NOT_FOUND + Order403Response: + summary: An example of 403 response payload + value: + message: Header Token Missing + error: PERMISSION + OTPMomoResponse1: + summary: An example of 403 response payload + value: + status: SUCCESS + data: + code: S12 + payments: + reference: O456S5077907982QWEuWAT05M + linkingreference: CF630837081601460887752 + message: Header Token Missing + 403Response2: + summary: An example of 403 response payload + value: + status: ERROR + data: + code: S12 + message: Bad credentials = invalid public key + 403Response3: + summary: An example of 403 response payload + value: + status: ERROR + data: + code: S12 + message: Bad credentials + 403Response4: + summary: An example of 403 response payload + value: + data: + code: S12 + message: Invalid/Missing parameters = paymentReference + 400Response1: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Duplicate transaction reference + 400Response2: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid/Missing parameters = publicKey + 400Response3: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid/Missing parameters = amount + 400Response4: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid/Missing parameters = paymentReference + 400Response5: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid/Missing parameters = currency + 400Response6: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid/Missing parameters = country + 400Response7: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Missing Card details + 400Response8: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Incomplete Card details + 400Response9: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid Card Number + 400Response10: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: Bad credentials = invalid public key + 400Response11: + summary: An example of 400 response payload + value: + status: ERROR + data: + code: S12 + message: No authorised transaction found for this reference + 400Response12: + summary: An example of 400 response payload + value: + message: Payment Reference cannot be null + error: INPUT + 400Response13: + summary: An example of 400 response payload + value: + message: Amount cannot be null + error: INPUT + 400Response14: + summary: An example of 400 response payload + value: + message: Public Key cannot be null + error: INPUT + 400Response15: + summary: An example of 400 response payload + value: + message: Country cannot be null + error: INPUT + 400Response16: + summary: An example of 400 response payload + value: + message: Currency cannot be null + error: INPUT + 409Response: + summary: An example of 409 response payload + value: + message: Transaction with reference exists + error: PROCESSING + ChargeCardResponse: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: NGN0100067Q35 + linkingReference: SEERBIT146140441602959589412 + status: CAPTURED + card: + bin: "512345" + last4: "0008" + token: tk_edcac221-63e5-4baf-8846-4922af4a10e6 + message: APPROVED + ChargeCardResponse1: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "S12-91" + payments: + paymentReference: NGN0100067Q35 + linkingReference: SEERBIT146140441602959589412 + status: FAILED + card: + bin: "512345" + last4: "0008" + token: tk_edcac221-63e5-4baf-8846-4922af4a10e6 + message: FAILURE = TIMED_OUT (Issuer or switch inoperative) + ValidateTransactionResponse: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: VERS2FURTHERTESTAc722456784 + linkingReference: F282866521599191373372 + authoption: [] + message: Successful + ValidateTransactionResponse1: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "RR" + payments: + paymentReference: VERS2FURTHERTESTAc722456784 + linkingReference: F282866521599191373372 + authoption: [] + message: Sorry payment already processed + ValidateTransactionResponse2: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "S7" + payments: null + message: operation failed + ValidateTransactionResponse3: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "S5" + payments: + reference: VERS2FURTHERTESTAc722456784 + authoption: [] + message: Invalid/Missing parameters = transaction/otp + Authorise201Response: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + linkingReference: F938003831601492624719 + status: AUTHORIZED + card: + bin: "512345" + last4: "0008" + token: tk_40a0503d-4586-4220-a69e-c69cc9293016 + message: APPROVED + Authorise201Response1: + summary: An example of 200 response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + linkingReference: F938003831601492624719 + status: AUTHORIZED + card: + bin: "512345" + last4: "0008" + token: tk_40a0503d-4586-4220-a69e-c69cc9293016 + message: FAILURE = TIMED_OUT (Issuer or switch inoperative) + 401Response1: + summary: An example of 401 response payload + value: + status: ERROR + data: + code: S12 + message: Invalid credentials + 3DSAuthoriseResponse: + summary: An example of 3DSAuthoriseResponse payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: 30451A789S987643128hgfdsfP6W + redirectLink: https://seerbitapigateway.com/seerbit/card-dispatch?sredref=F535459411601493328771 + linkingReference: F535459411601493328771 + status: AUTHORISATION PENDING + message: Transaction is pending + 3DSAuthoriseResponse1: + summary: An example of 3DSAuthoriseResponse payload + value: + status: SUCCESS + data: + code: "S100" + message: Transaction Not Completed + AuthorisewithCardTokenResponse1: + summary: An example of Authorise with Card Token Response payload + value: + status: SUCCESS + data: + code: "S12-91" + payments: + paymentReference: 31451A789S987643128hgffsfP6K + linkingReference: F535459411601493328771 + status: FAILED + card: + bin: '512345' + last4: 0008 + token: tk_b0a4b2f6-9ac1-485b-b031-9e018d9479bd + message: FAILURE = TIMED_OUT (Issuer or switch inoperative) + AuthorisewithCardTokenResponse: + summary: An example of Authorise with Card Token Response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: 30451A789S987643128hgfdsfP6W + linkingReference: F135171921601494142535 + status: AUTHORIZED + card: + bin: '512345' + last4: 0008 + token: tk_b0a4b2f6-9ac1-485b-b031-9e018d9479bd + message: APPROVED + Capture201Response: + summary: An example of A Capture 201 Response payload + value: + status: SUCCESS + data: + code: "00" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + status: PARTIALLY_CAPTURED + card: + bin: "512345" + last4: "0008" + token: tk_40a0503d-4586-4220-a69e-c69cc9293016 + message: APPROVED + Capture201Response1: + summary: An example of A Capture 201 Response payload + value: + status: SUCCESS + data: + code: "S12" + payments: + paymentReference: PREAUTH1244567890987654321CB0 + card: + bin: "512345" + last4: "0008" + token: tk_40a0503d-4586-4220-a69e-c69cc9293016 + message: INVALID_REQUEST = Transaction already exists. Retry not supported as it is not the last transaction on the order. + CreateOrder200Response: + summary: An example of A Create order before payment 200 Response payload + value: + status: SUCCESS + data: + code: "00" + payments: + amount: 250 + paymentReference: 2PPTG108QL13432E29P23R5L6W93I9 + paymentStatus: "08" + redirectLink: "https://checkout.seerbitapi.com/?mid=SBTESTPUBK_9sN3TuLgW6a9redEfY48cKKkUa09Pz2u&paymentReference=2PPTG108QL13432E29P23R5L6W93I9" + message: Successful + BanksResponse: + summary: An example of A Get Bank 201 Response payload + value: + status: SUCCESS + data: + code: "00" + merchantBanks: + - bankName: Guarantee Trust Bank + bankCode: "058" + url: + logo: + status: "ACTIVE" + minimumAmount: 100 + requiredFields: + accountName: YES + accountNumber: NO + isBankCode: YES + bvn: NO + dateOfBirth: NO + mobileNumber: NO + - bankName: United Bank for Africa + bankCode: 033 + url: + logo: + status: ACTIVE + minimumAmount: 100 + requiredFields: + accountName: YES + accountNumber: YES + isBankCode: YES + bvn: YES + dateOfBirth: YES + mobileNumber: NO + - bankName: First Bank of Nigeria + bankCode: 011 + url: + logo: + status: ACTIVE + minimumAmount: 100 + requiredFields: + accountName: NO + accountNumber: NO + isBankCode: YES + bvn: NO + dateOfBirth: NO + mobileNumber: NO + - bankName: Sterling Bank + bankCode: 232 + url: + logo: + status: ACTIVE + minimumAmount: 100 + requiredFields: + accountName: YES + accountNumber: YES + isBankCode: YES + bvn: NO + dateOfBirth: NO + mobileNumber: YES + - bankName: Wema Bank + bankCode: 035 + url: + logo: + status: ACTIVE + minimumAmount: 100 + requiredFields: + accountName: YES + accountNumber: YES + isBankCode: YES + bvn: NO + dateOfBirth: NO + mobileNumber: YES + - bankName: Zenith Bank + bankCode: 057 + url: + logo: + status: ACTIVE + minimumAmount: 100 + requiredFields: + accountName: YES + accountNumber: YES + isBankCode: YES + bvn: YES + dateOfBirth: YES + mobileNumber: NO + message: "Successful" + + +