{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Whoosh Core API"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"whoosh-core-api","__idx":0},"children":["Whoosh Core API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Welcome to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Whoosh Innovations Pty. Core API"]}," — the integration layer for prepaid electricity vending, postpaid bill payments, and AARTO traffic fine management across South African municipalities."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"authentication","__idx":1},"children":["Authentication"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All API requests must include a valid API key in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-API-KEY"]}," request header."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"http","header":{"controls":{"copy":{}}},"source":"X-API-KEY: your-api-key-here\n","lang":"http"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the header is missing or the key is invalid, the API returns ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["HTTP 401 Unauthorized"]},"."]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important:"]}," Your test environment API key is different from your production API key. Never use a production key against a test environment."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"environments","__idx":2},"children":["Environments"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Environment"},"children":["Environment"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Base URL"},"children":["Base URL"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Testing"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api-test.amabills.co.za/api"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Production"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://api.amabills.co.za/api"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"services-overview","__idx":3},"children":["Services Overview"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"electricity-vending","__idx":4},"children":["Electricity Vending"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Prepaid token vending for the following municipalities:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Municipality"},"children":["Municipality"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Identifier"},"children":["Identifier"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["City of Tshwane"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tshwane_prepaid"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mogale City"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mogale_prepaid"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Zeerust"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["zeerust_prepaid"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ngwathe"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ngwathe_prepaid"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Thembelihle"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["thembelihle_prepaid"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"quick-start","__idx":5},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm the meter"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/Electricity/ConfirmCustomer"]}," with the meter number and municipality to validate the meter and retrieve customer details. This step is recommended before every purchase to confirm that you are vending for the correct meter."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purchase"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/Electricity/Purchase"]}," with the confirmed meter number, municipality, amount, and payment method to make the actual token purchase."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Monitor your balance"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/Merchant/CheckBalance"]}," to check your remaining merchant credit before vending."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"idempotency","__idx":6},"children":["Idempotency"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Pass a unique ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["idempotency"]}," string on each Purchase request. If a request fails and you need to retry, reuse the same value — the system will not generate a duplicate vend."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"test-data","__idx":7},"children":["Test Data"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"tshwane","__idx":8},"children":["Tshwane"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meter No"},"children":["Meter No"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["04243399104"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Normal Vend"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["07045191942"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["FBE (if you want only FBE put an amount of R0)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["07027050819"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Change"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["04292145648"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Change and FBE"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["81114325624"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Arrears"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["14445160626"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fixed Charges"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"mogale","__idx":9},"children":["Mogale"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meter No"},"children":["Meter No"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["81114338999"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Normal Vend"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["81114326440"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["FBE"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["07600938182"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Change"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":5,"id":"zeerust","__idx":10},"children":["Zeerust"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meter No"},"children":["Meter No"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Result"},"children":["Result"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["04265463002"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Normal Vend"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["07025361416"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["FBE"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["04235758721"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Change"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"traffic-fines","__idx":11},"children":["Traffic Fines"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Query and payment services for AARTO-registered traffic infringements, supporting lookups by ID number, business registration number, or notice number."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"quick-start-1","__idx":12},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Look up fines"]}," — search by ID number (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ViewByIDnumber"]},"), business registration number (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ViewByBusinessRegistration"]},"), or notice number (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ViewByNoticeNumber"]},"). Each response includes a list of ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["InfringementDetail"]}," objects with net amounts, vendor fees, and gross amounts."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Validate the payment amount"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ValidateMarkTrafficFinesAsPaid"]}," with the proposed amount. The response confirms whether the amount is correct (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["isCorrectAmount: true"]},") and returns the difference if not."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Mark as paid"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MarkTrafficFineAsPaid"]}," to declare that the merchant received the gross amount from the customer and to clear the fines with AARTO. The response includes AARTO receipt numbers (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["receiptNumber"]},") and invoice numbers (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["invoiceNumber"]},") per fine."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"amount-breakdown","__idx":13},"children":["Amount breakdown"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every fine exposes three amounts:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["netFineAmnt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The base fine amount set by the issuing authority"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vendorFeeAmnt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Whoosh processing fee"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grossAmnt"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Total to charge the customer (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["net + vendor"]},")"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When calling ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MarkTrafficFineAsPaid"]},", submit the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grossAmnt"]}," as the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}," per fine."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"bill-payments","__idx":14},"children":["Bill Payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Post paid bill payments for the following municipalities:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Municipality"},"children":["Municipality"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Identifier"},"children":["Identifier"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["City of Tshwane"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tshwane_postpaid"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Mogale City"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["mogale_postpaid"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm the meter"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/Bills/ConfirmCustomer"]}," with an account number and municipality to validate the account and retrieve customer details. This step is recommended before every purchase to confirm that you are clearing debts for the correct account."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purchase"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/Bills/Purchase"]}," with the confirmed account number, municipality, amount, and payment method to make the actual debt clarrenca"]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"value-added-services-vas","__idx":15},"children":["Value-Added Services (VAS)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Airtime, data bundles, lotto, and other value-added services. The Whoosh VAS API integration split into three simple operations: list products, confirm a quote, and purchase."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"quick-start-2","__idx":16},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["List products"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /v1/VAS/Products"]}," to retrieve the full product catalogue. Each product includes an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," (use as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["productID"]},") and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]}," array (pass as-is in subsequent calls)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Confirm"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/VAS/Confirm"]}," with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["productID"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]}," to get a quote. The response includes the fee breakdown, total amount, and optionally a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quoteId"]}," to bind to the purchase."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Purchase"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/VAS/Purchase"]}," with the same fields. For airtime and data products, value is delivered directly to the recipient. For voucher products, a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pin"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["instructions"]}," are returned to present to the customer."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"key-fields","__idx":17},"children":["Key fields"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Where it comes from"},"children":["Where it comes from"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Where it's used"},"children":["Where it's used"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["productID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," from List Products"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confirm & Purchase"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["reference"]}," array from List Products (JSON-encoded)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confirm & Purchase"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Caller-supplied (open-value) or fixed (from product)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confirm & Purchase"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["quoteId"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Returned by Confirm (if present)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Purchase"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"fixed-vs-open-value-products","__idx":18},"children":["Fixed vs open-value products"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Fixed-amount product"},"children":["Fixed-amount product"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Open-value product"},"children":["Open-value product"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fixedAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["amount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Set by product"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Caller-supplied"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["minAmount"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["maxAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Defines valid range"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"whoosh-payments","__idx":19},"children":["Whoosh Payments"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Order creation and Mastercard Hosted Checkout payment initiation. Creates an order on the Whoosh platform and returns a payment URL to redirect customers for secure card capture."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"quick-start-3","__idx":20},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create an order"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/putOrderV2"]}," with your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantId"]},", order details, line items, and redirect URLs."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Redirect the customer"]}," — use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["paymentPageUrl"]}," from the response to send the customer to the Mastercard Hosted Checkout page for secure card capture."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Handle the redirect"]}," — after payment, Mastercard redirects the customer to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectSuccess"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["redirectCancel"]}," URL. Use the Whoosh Reconciliation endpoints to verify the final payment status."]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Staging environment:"]}," Always use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantId: staging"]}," when calling the test base URL. A production ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["merchantId"]}," will be issued before go-live."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"whoosh-reconciliation","__idx":21},"children":["Whoosh Reconciliation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["MPGS reconciliation and payment status verification. Retrieve end-of-day transaction ledgers and verify the payment status of individual orders."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"quick-start-4","__idx":22},"children":["Quick Start"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["End-of-day ledger"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/whooshEndOfDayLedgerV2"]}," (no request body required) to retrieve all MPGS transactions for the previous South Africa business day, including totals and any verification errors."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Check order payment status"]}," — call ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v1/whooshCheckOrderPaymentStatusV2"]}," with an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["orderId"]}," to verify the payment status of a specific order."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"payment-statuses","__idx":23},"children":["Payment statuses"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PAID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment was successfully captured"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["PENDING"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment is in progress"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FAILED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Payment was attempted but failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NO_ATTEMPT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No payment attempt was made"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VERIFICATION_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Status could not be determined — check ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["verificationErrors"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"response-format-note","__idx":24},"children":["Response format note"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The reconciliation endpoints return different response shapes depending on the HTTP status code:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status code"},"children":["Status code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Response shape"},"children":["Response shape"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["200"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["500"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Direct response object"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["400"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["404"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{ status, data }"]}," wrapper"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"response-envelopes","__idx":25},"children":["Response Envelopes"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"electricity-endpoints","__idx":26},"children":["Electricity endpoints"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": true,\n  \"data\": { ... },\n  \"error\": null,\n  \"errorNo\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}," is a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["boolean"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"traffic-fine-endpoints","__idx":27},"children":["Traffic Fine endpoints"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": 1,\n  \"result\": { ... },\n  \"error\": null\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success"]}," is an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["integer"]}," — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1"]}," for success, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," for error."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling-traffic-fines","__idx":28},"children":["Error Handling (Traffic Fines)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a Traffic Fine request fails (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["success: 0"]},"), the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["error"]}," field contains an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ErrorMessage"]}," object:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": 0,\n  \"error\": {\n    \"code\": 9,\n    \"message\": \"No infringement found for the provided ID number.\",\n    \"validationMessage\": []\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Meaning"},"children":["Meaning"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authentication failed"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Service unavailable – retry; contact support if it persists"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Service error – contact support"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["5"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["6"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ID must be numeric"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["7"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ID number check digit must be valid"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["8"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identified infringer does not exist"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["9"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No infringement found for the identification type or number"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["10"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Check digit of the infringement notice number must be valid"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["11"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fine must be payable at a registering authority"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["12"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Infringement notice number does not exist"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["13"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Infringement notice number does not exist"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["14"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fine may not be in status 10 (court case)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["15"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Elected to be tried in court – successful court application status"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["16"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Transaction not allowed – nomination of driver is pending"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["17"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Partially paid fine must be settled at a registering authority or DLTS"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["18"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fine may not be in status 13 (partially paid)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["23"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Validation error – see ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validationMessage"]}," array for details"]}]}]}]}]}]},"headings":[{"value":"Whoosh Core API","id":"whoosh-core-api","depth":1},{"value":"Authentication","id":"authentication","depth":2},{"value":"Environments","id":"environments","depth":2},{"value":"Services Overview","id":"services-overview","depth":2},{"value":"Electricity Vending","id":"electricity-vending","depth":3},{"value":"Quick Start","id":"quick-start","depth":4},{"value":"Idempotency","id":"idempotency","depth":4},{"value":"Test Data","id":"test-data","depth":4},{"value":"Tshwane","id":"tshwane","depth":5},{"value":"Mogale","id":"mogale","depth":5},{"value":"Zeerust","id":"zeerust","depth":5},{"value":"Traffic Fines","id":"traffic-fines","depth":3},{"value":"Quick Start","id":"quick-start-1","depth":4},{"value":"Amount breakdown","id":"amount-breakdown","depth":4},{"value":"Bill Payments","id":"bill-payments","depth":3},{"value":"Value-Added Services (VAS)","id":"value-added-services-vas","depth":3},{"value":"Quick Start","id":"quick-start-2","depth":4},{"value":"Key fields","id":"key-fields","depth":4},{"value":"Fixed vs open-value products","id":"fixed-vs-open-value-products","depth":4},{"value":"Whoosh Payments","id":"whoosh-payments","depth":3},{"value":"Quick Start","id":"quick-start-3","depth":4},{"value":"Whoosh Reconciliation","id":"whoosh-reconciliation","depth":4},{"value":"Quick Start","id":"quick-start-4","depth":4},{"value":"Payment statuses","id":"payment-statuses","depth":4},{"value":"Response format note","id":"response-format-note","depth":4},{"value":"Response Envelopes","id":"response-envelopes","depth":2},{"value":"Electricity endpoints","id":"electricity-endpoints","depth":3},{"value":"Traffic Fine endpoints","id":"traffic-fine-endpoints","depth":3},{"value":"Error Handling (Traffic Fines)","id":"error-handling-traffic-fines","depth":2}],"frontmatter":{"seo":{"title":"Whoosh Core API"}},"lastModified":"2026-09-01T09:15:50.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}