{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"1457cde8-ae89-4fe8-a375-c663521c273a","name":"The Reward Store","description":"**The Reward Store** is a unified digital rewards platform that enables businesses to integrate gift cards, offers, mobile recharges, and DTH recharges via powerful APIs. The platform helps increase user engagement, loyalty, and retention by providing real-time digital fulfillment with multi-currency wallet support and webhook notifications.\n\n### Services Offered\n\n#### 🎁 **Gift Cards**\n\n- Global and local digital gift cards from top brands.\n    \n- Redeemable on respective brand applications or services.\n    \n\n#### 📦 **Offers**\n\n- Coupon codes from top brands.\n    \n- Usable on respective brand applications or services.\n    \n\n#### 📱 **Mobile Recharges**\n\n- Prepaid top-ups for major telecom operators in real-time.\n    \n\n#### 📡 **DTH Recharges**\n\n- Satellite TV recharges for supported DTH providers\n    \n\n🛍️ Merchandise\n\n- Global and local Merchandise from top brands.\n    \n\nAll transactions are fulfilled digitally in real time, with **status tracking**, **webhook notifications**, and **multi-currency wallet support**.\n\n# Getting Started\n\n### 1\\. Request Sandbox Access\n\n- **Contact**: [onboarding@therewardstore.com](https://null)\n    \n- **Information to provide**:\n    \n    - Business name\n        \n    - Address\n        \n    - User details\n        \n\n### 2\\. Generate API Keys\n\n- **Login**: The Reward Store Sandbox Dashboard\n    \n- **Navigate** to API Settings.\n    \n- **Generate** sandbox API keys for authentication (Basic Auth).\n    \n\n### 3\\. Start Testing\n\n- **Test Tools**: Postman, cURL\n    \n- **Base URL for Sandbox**: [https://sandbox-api.thereward.store](https://sandbox-api.thereward.store/)\n    \n- **Authentication**: Include API keys in the Authorization header.\n    \n\n# **Base URL**\n\n`Sandbox - https://sandbox-api.thereward.store`\n\n`Production - https://api.thereward.store`\n\n### Core Concepts & Terminology\n\n#### Gift Cards\n\n**Description:**\n\n- Digital codes that can be purchased on the platform and redeemed on their respective brand’s applications or services.\n    \n\n**Key Attributes:**\n\n- **Product Name:** e.g., Amazon, Google Play\n    \n- **Image URL:** Visual representation of the gift card/offers\n    \n- **Usage Details:** Instructions on how to redeem\n    \n- **Terms and Conditions:** Any applicable rules\n    \n- **Available Denominations:** Fixed or variable amounts\n    \n\n**Gift Card Attributes:**  \nIt may include one or more of the following fields for redemption:\n\n- **Code / Card Number:** Primary voucher identifier\n    \n- **PIN / PIN Code:** Additional security layer for some vouchers\n    \n- **Claim URL:** Direct link for online redemption\n    \n\n**Testing Permutations:**  \nClients should ensure their integration can handle all permutations of voucher fields:\n\n- **Code Alone:** Test vouchers with only the code provided.\n    \n- **Code and Pin:** Some vouchers require both a code and a pin for redemption.\n    \n- **Claim URL Alone:** For direct online redemption without a code or pin.\n    \n- **All Three Fields:** The most comprehensive vouchers include a code, pin, and claim URL.\n    \n\nThe sandbox environment includes representative products for each voucher type. Clients are advised to test all permutations to confirm their system's readiness for any voucher configuration presented by \"The Reward Store\".\n\n---\n\n#### Mobile Recharges\n\n**Description:**\n\n- Real-time prepaid mobile top-ups for supported telecom operators.\n    \n\n**Key Attributes:**\n\n- **Operator Name:** e.g., Airtel, Jio\n    \n- **Circle / Region:** e.g., Delhi/NCR\n    \n- **Mobile Number:** Target number for recharge\n    \n- **Recharge Plan / Amount:** Value or plan details\n    \n- **Talktime / Data:** Optional included benefits\n    \n\n---\n\n#### DTH Recharges\n\n**Description:**\n\n- Real-time recharges for satellite TV subscriptions.\n    \n\n**Key Attributes:**\n\n- **Provider Name:** e.g., Tata Play, DishTV\n    \n- **Subscriber ID**\n    \n- **Recharge Amount / Plan**\n    \n\n---\n\n#### **Merchandise**\n\n**Description:**\n\n- Physical (or deliverable) items that can be redeemed on the platform using points/wallet balance and fulfilled via shipping/delivery, with full order tracking on \"The Reward Store\".\n    \n\n**Key Attributes:**\n\n- **Product Name:** e.g., Electronics, Lifestyle, Accessories (brand/category based)\n    \n- **Image URL:** Visual representation of the product\n    \n- **Product Details:** Description/specifications/variant info (if applicable)\n    \n- **Price / Points Cost:** Cost to redeem (points and/or wallet amount as per program)\n    \n- **Availability / Stock:** Whether the item can be ordered at the time of redemption\n    \n- **Delivery / Shipping Details:** Delivery timelines, charges (if any), and serviceability rules\n    \n- **Return / Warranty Terms:** Applicable conditions for returns/replacements (if supported)\n    \n\n**Merchandise Order Attributes:**  \nIt may include one or more of the following fields for fulfillment and tracking:\n\n- **Order ID:** Primary identifier to query status and history\n    \n- **Order Status:** e.g., created/confirmed/processing/shipped/delivered/cancelled (as provided by API)\n    \n- **Shipment / Tracking Reference:** Courier AWB / tracking number (if available)\n    \n- **Tracking URL:** Direct link for shipment tracking (if available)\n    \n- **Delivery Address Snapshot:** Address details used at time of order (may be returned in response)\n    \n\n**Testing:**  \nClients should ensure their integration can handle all of the fulfillment fields:\n\n- **Order ID + Status Only:** Minimal flow where only order id and status are provided.\n    \n- **Status With No Shipment Info:** Orders in processing states may not have tracking details yet.\n    \n- **Tracking Reference Only:** Tracking number present without a tracking URL.\n    \n- **Tracking URL Only:** Direct tracking link without an explicit tracking number.\n    \n- **Both Tracking Reference and URL:** Most complete shipments include both.\n    \n\nThe sandbox environment includes representative products and order scenarios. Clients are advised to test:\n\n- Address creation/update flows before placing orders\n    \n- Order placement + list/orders history\n    \n- Item-level order history (when multiple items exist under one order)\n    \n- Shipment tracking permutations to confirm readiness for any fulfillment configuration presented by \"The Reward Store.\"\n    \n\n### **Currencies & Wallets**\n\n- **Currencies**:  \n    The Reward Store supports global currencies for the account.\n    \n    - **Attributes:**  \n        Currency Code (e.g., USD, EUR, INR)\n        \n- **Wallets:**  \n    The Reward Store supports different wallets of multiple currencies for the account.\n    \n    - **Attributes:**\n        \n        - Wallet ID\n            \n        - Currency\n            \n        - Amount\n            \n- **Forex:**\n    \n    - Forex allows a purchase of a product ( Gift Card ) using a different currency wallet than the product currency wallet by passing the expected wallet_id in the \"Place_order\" API request.\n        \n    - Forex allows a purchase of a product ( Gift Card ) using a different currency wallet than the product currency wallet by passing the expected wallet_id in the \"Place_order\" API request.\n        \n    - When no wallet_id is passed in the \"Place Order\" API, the amount is deducted from the wallet that matches the product’s currency (If a wallet is active for an account).**If a wallet is not active that matches the product’s currency, the amount is deducted from the wallet that matches the base currency of the account.**\n        \n    - **Attributes in the Request:**\n        \n        - **Wallet ID** - It is an optional parameter that indicates the wallet to be used for the respective transaction.\n            \n    - **Attributes in the Response:**\n        \n        - **Conversion Rate** - It is a conversion amount for a single unit, based on the mid-market rates that we lock in the UTC timezone from XE.com.\n            \n        - **Handling Fee** - It is an additional percentage fee that is calculated on the Total discounted amount (in converted currency) for processing the transaction by The Reward Store.\n            \n        - **Deduction Currency** - It represents the currency in which the amount was deducted against the transaction.\n            \n        - **Base Currency** - It represents the base currency of the account.\n            \n    - **Example**\n        \n        - Product Currency is SGD and Wallet Currency is USD\n            \n        - Denomination (100) x Quantity (30)\n            \n        - Total Amount (in SGD) = 3,000 SGD\n            \n        - Discount (2%) = 60 SGD\n            \n        - Total discounted amount ( in SGD) = 2,940 SGD\n            \n        - Conversion Rate (1 SGD = 0.77 USD) = 0.77 USD **as per the respective date\n            \n        - Total discounted amount (in USD) = 2,263.8 USD\n            \n        - Handling Fee (2%) = 45.276 USD\n            \n        - Total Payable (in USD) = 2,309.08 USD\n            \n    - **For Forex FAQs, click** [<b>here</b>](https://therewardstore.freshdesk.com/support/solutions/1070000072409)\n        \n\n### Orders\n\n- **Description:**  \n    Orders document the purchase of vouchers by clients, with amount deducted from the client's wallet according to the product's currency value.\n    \n- **Attributes:**\n    \n    - Order ID\n        \n    - Product Name\n        \n    - Amount\n        \n    - Date/Time of Purchase\n        \n    - Status (e.g., Completed, Pending)\n        \n\n### SubClient Management\n\n- **What is a SubClient?**  \n    A SubClient is a sub-account under the main parent account. Each SubClient operates with its own storefront, wallets, customers, and API credentials. SubClients can create their own child SubClients, enabling nested hierarchies.\n    \n- **Key Attributes & Concepts:**\n    \n    - **SubClient ID:** Unique identifier for the SubClient\n        \n    - **Parent ID:** Identifier of the parent account or SubClient\n        \n    - **Wallets:** Each SubClient has independent wallets for managing funds\n        \n    - **API Credentials:** SubClients have separate API keys for scoped access\n        \n    - **Purchase Limits:** Maximum quantity restrictions per SubClient\n        \n    - **Domain Restrictions:** Whitelisted or blacklisted domains for storefronts\n        \n\n### Customer Management\n\n- **Who is a Customer?**  \n    A Customer represents an individual user or employee under a specific SubClient. Customers have their own profiles and wallets and can earn or redeem points.\n    \n- **Key Attributes:**\n    \n    - **Customer ID:** Unique customer identifier\n        \n    - **Full Name & Email:** Basic profile information\n        \n    - **External Reference Code:** Optional code for integration with external systems\n        \n    - **Wallet:** Customer’s wallet balance used for points and rewards\n        \n    - **Status:** Active, inactive, or other operational statuses\n        \n\n### Points Management\n\n- **Points Distribution and Deduction**  \n    Points represent a virtual currency or reward that SubClients can distribute to or deduct from Customers’ wallets.\n    \n    - **Distribute Points:** Credits points from a SubClient’s wallet to a Customer’s wallet\n        \n    - **Deduct Points:** Deducts points from a Customer’s wallet, crediting back the SubClient’s wallet\n        \n\n### Wallet Operations\n\n- **Managing Wallet Balances at SubClient Level**\n    \n    - **Top-Up Wallet:** Add funds to a SubClient’s wallet from the parent or another wallet\n        \n    - **Deduct from Wallet:** Remove funds from a SubClient’s wallet, typically for refunds or adjustments\n        \n    - **Reconcile Wallet:** Verify and adjust wallet balances by comparing expected and actual amounts\n        \n\n### Customer Token Management\n\n- **Authentication Token for Customers**  \n    Tokens are JWTs generated by SubClients on behalf of Customers, allowing Customers to securely perform user-level actions like redeeming points or viewing balances in frontend applications.\n    \n    - **Token Validity:** Tokens are valid for 1 hour and must be refreshed thereafter\n        \n    - **Scope:** Tokens are scoped to the Customer and limited to user-facing API calls\n        \n    - **Generation:** Tokens are generated using the Customer Auth Token API by providing the Customer’s email\n        \n\n### Data Relationships\n\n- **Accounts and Wallets:**  \n    Each account (Client or SubClient) can have one or more wallets, each tied to a specific currency. Wallets hold balances used to purchase products or distribute points.\n    \n- **Currency-Specific Accounts:**  \n    An account created to purchase products priced in INR must be separate from accounts purchasing products in other currencies.\n    \n- **Products:**  \n    Products are offered from various global brands and are priced in multiple currencies to support purchases worldwide. The availability and pricing depend on the currency of the wallet used.\n    \n- **SubClients and Hierarchies:**  \n    SubClients are nested accounts under a parent Client or SubClient. Each SubClient maintains independent wallets, API credentials, and customer bases. This multi-level hierarchy enables flexible, granular management of wallets and transactions across branches or brands.\n    \n- **Customers and Wallets:**  \n    Customers are individual end-users or employees associated with a SubClient. Customers have their own wallets to receive, hold, and redeem points.\n    \n- **Wallet Operations Across Hierarchies:**  \n    Wallet top-ups, deductions, and reconciliations can occur at both SubClient and Customer levels. Transactions between wallets are tracked with detailed transaction objects, including amounts, currencies, conversion rates, and handling fees when applicable.\n    \n- **Forex Transactions:**  \n    When purchasing products in a currency different from the wallet currency, the system uses foreign exchange conversions based on locked mid-market rates. Handling fees apply for such transactions. Wallets with different currencies interact seamlessly through the forex mechanism.\n    \n\n# Pagination Support\n\nOur API offers comprehensive pagination support, enabling seamless navigation through extensive datasets. You can achieve this by incorporating the '`limit`' parameter in your API requests.\n\nMoreover, you can utilize the '`page`' filter for sample searching. For instance:\n\n`{{base_url}}/products?page=2`\n\n**Note**: The pagination information is present in the Response Header. Below are the fields available.\n\n| Field | Example Value |\n| --- | --- |\n| x-pagination-first-page | 1 |\n| x-pagination-current-page | 1 |\n| x-pagination-last-page | 3 |\n| x-pagination-per-page | 50 |\n| x-pagination-has-more-pages | true |\n| x-pagination-total-records | 1 |\n\n# IP Whitelisting\n\nTo enhance the advanced security needs associated with external API integrations, we provide the option to whitelist IP addresses. This feature is designed to fortify your account by allowing access exclusively from designated IP addresses, thereby safeguarding your data against unauthorized entry points. You can whitelist your IP in our UI Portal.\n\nNote: The IP whitelisting will be mandatory from 1st Aug 2024.\n\n# Webhooks\n\nWebhooks empower your application to receive near-instant notifications about essential events within our system. Use webhooks to keep your system's data effortlessly synchronised and to build custom integrations with our platform.\n\n### Supported Events\n\nOur webhooks support notifications for these primary events:\n\n- **Order Events**\n    \n    - `DELIVERED`\n        \n    - `PARTIALLY_DELIVERED`\n        \n    - `CANCELLED`\n        \n- **Wallet Events**\n    \n    - `TOPPED_UP`\n        \n- **Recharge Events**\n    \n    - `RECHARGED`\n        \n    - `FAILED`\n        \n\nMore events will be supported in the future.\n\n### Configuring Webhooks\n\n1. **Log in to The Reward Store Application.**\n    \n2. **Go to the \"API Settings\" section.**\n    \n3. **Click the \"Webhooks URL\" tab.**\n    \n4. **Add a webhook endpoint.** This is the URL on your server where you want to receive webhook notifications. You can add multiple endpoints if needed.\n    \n\n**Important:** Your webhook endpoint must be a publicly accessible HTTPS URL.\n\n### Webhook Payloads\n\nWebhook payloads are sent as JSON. Here's the basic structure of a webhook payload:\n\n**Order Events**\n\n``` json\n{\n  \"resource\": \"ORDER\",\n  \"id\": 12345,\n  \"reference_code\": \"REF_1234\",\n  \"transaction_id\": 13234,\n  \"status\": \"DELIVERED\",\n  \"placed_on\": \"2024-09-27T11:23:35.000+00:00\",\n  \"refunded_amount\": null,\n  \"delivered_quantity\": 1\n}\n\n ```\n\n**Wallet Events**\n\n``` json\n{\n  \"resource\": \"TRANSACTION\",\n  \"id\": 28946,\n  \"type\": \"CREDIT\",\n  \"amount\": \"1.00\",\n  \"currency\": \"INR\",\n  \"wallet_id\": 2,\n  \"status\": \"COMPLETED\",\n  \"created_at\": \"2024-04-15T13:00:52.212+00:00\"\n}\n\n ```\n\n**Recharge Events**\n\n``` json\n{\n  \"resource\": \"RECHARGE\",\n  \"id\": 17037,\n  \"transaction_id\": 16944,\n  \"reference_number\": \"2pk7tw83OVMOmJ1vV5JHM5qDGoj\",\n  \"amount\": \"11.00\",\n  \"currency\": \"SGD\",\n  \"mobile_country_code\": \"91\",\n  \"mobile_number\": \"9876543210\",\n  \"circle\": \"Karnataka\",\n  \"operator\": \"AIRTEL\",\n  \"plan_id\": 7,\n  \"plan_name\": \"Data\",\n  \"status\": \"PENDING\",\n  \"status_text\": \"\",\n  \"is_special_recharge\": false,\n  \"is_prepaid\": false,\n  \"created_at\": \"0001-01-01T00:00:00.000Z\"\n}\n\n ```\n\n### Handling Webhook Events\n\n1. **Verify the event's authenticity.** To ensure the webhook notification originated from our system (TRS), follow these steps:\n    \n    1. **Generate a private token.** Create a secure, private token within your application. Do not expose this token publicly.\n        \n    2. **Share the private token with TRS.** Provide this token to the TRS team through the TRS platform while creating the Webhooks URL. This field is editable and token can be changed as and when required.\n        \n    3. **Validate incoming webhooks.** When you receive a webhook notification, it will include a header (`X-TRS-WEBHOOK-TOKEN`) containing a token. Compare it to your private token. If they match, the event is authentic.\n        \n2. **Parse the event payload.**\n    \n3. **Take the appropriate actions based on the event type.** For example, if the event type is `DELIVERED`, you might update the order status in your own database and trigger an email notification to the customer.\n    \n\n### Webhook Logs\n\nYou can view your webhook logs in the \"Webhooks\" section of the The Reward Store Application. Logs are extremely valuable for debugging, as they provide detailed information on which webhooks were sent, their status, and any related error messages.\n\n# **Debugging Requests with Request ID**\n\nTo assist with troubleshooting and debugging, our API includes a feature where a unique request identifier (Request ID) is generated and included in the response header for every API call made. This identifier serves as a valuable tool for both clients and our support team to trace and investigate any issues encountered during API interactions.\n\n| **Field** | **Example Value** |\n| --- | --- |\n| x-request-id | clsbwcsqz01wti6pc27khcxbw |\n\n# Error Handling and Order Reference:\n\nIn case of errors, fetch the order using the unique reference code provided by the client.  \nHandling \"PENDING\" Order Status:If an order is \"PENDING,\" poll for updates using an exponential backoff strategy. Start with a short delay (e.g., 30 seconds) and double the delay after each attempt, up to a maximum interval (e.g., 15 minutes), until the order status updates.\n\n### Error Format\n\n``` json\n{\n  \"error\": {\n    \"name\": \"String\",\n    \"code\": \"string\",\n    \"messages\": {\n      // Objects containing array of errors\n      // Can be null object\n    },\n    \"message\": \"string\"\n  }\n}\n- `error`: Object representing the error details.\n  - `name`: A string representing the name of the error.\n  - `code`: A string representing the error code.\n  - `messages`: An object containing arrays of errors. Can be null.\n  - `message`: A string providing additional information about the error.\n\n ```\n\n# API Integration Flow\n\n- **Client Sandbox Login**: Log in to the sandbox account and generate sandbox API keys for secure testing.\n    \n- **Testing HTTP APIs**: Use HTTP clients like Postman or cURL with sandbox API keys to test APIs.\n    \n\n#### **Use Case 1 : Gift Card/Offer Purchase**\n\n- **Fetch Available Gift Cards/Offers**  \n    Call GET /products with filters if needed to retrieve product details.\n    \n- **Select Product and Denomination**  \n    Choose a product ID and denomination for purchase.\n    \n- **Place Order for the Product**  \n    Call POST /orders with product ID, denomination, quantity, and optional wallet ID.\n    \n- **Check Order Status**  \n    Wait for the Web hooks GET /orders/{order_id} until status changes to DELIVERED.\n    \n- **Retrieve Voucher Details**  \n    Once delivered, get voucher codes, PINs, or claim URLs from order details response.\n    \n- **Redeem Voucher**  \n    End user redeems the voucher using provided code or URL as per brand instructions.\n    \n\n#### **Use Case 2: Mobile Recharge Purchase & Processing**\n\n- **Fetch Mobile Recharge Operators**  \n    GET /recharges/operators — Retrieve list of available operators.\n    \n- **Fetch Recharge Circles (Regions)**  \n    GET /recharges/circles — Retrieve list of service regions.\n    \n- **Get Recharge Plans**  \n    POST /recharges/plans — Provide operator and circle to get available plans.\n    \n- **Identify Operator & Circle by Mobile Number**  \n    POST /recharges/operator — Input mobile number to detect operator and circle.\n    \n- **Validate Recharge Request**  \n    POST /recharges/validate — Validate the recharge details before placing order.\n    \n- **Place Recharge Order**  \n    POST /recharges — Execute the recharge transaction.\n    \n- **Await web hook on Recharge Status**  \n    GET /recharges/{id} — Check status of recharge until completed or failed.\n    \n\n#### **Use Case 3: DTH Recharge Purchase & Processing**\n\n- **Fetch DTH Operators :**  \n    GET /recharges/DTH/operators — Get list of DTH providers.\n    \n- **Fetch DTH Circles (Regions) :**  \n    GET /recharges/DTH/circles — Get regions served.\n    \n- **Get DTH Plans :**  \n    POST /recharges/DTH/plans — Fetch plans by operator and circle.\n    \n- **Validate DTH Recharge Request :**  \n    POST /recharges/DTH/validate — Validate subscriber details and plan.\n    \n- **Place DTH Recharge Order :**  \n    POST /recharges/DTH — Execute DTH recharge.\n    \n- **Await web hook on DTH Recharge Status :**  \n    GET /recharges/DTH/{id} — Check order status until success/failure.\n    \n\n#### **Use Case 4: Employee Points Distribution & Redemption**\n\n- **Create Customer (Employee) Account :**  \n    POST /customers — Create a new employee who will be eligible to receive rewards and redeem points.\n    \n- **Distribute Points to Customer (Employee) :**  \n    POST /points/distribute — Distribute points to employee’s wallet.\n    \n- **Generate Customer (Employee) Authentication Token :**  \n    POST /token/generate — Create a token for customer frontend authentication. The token will expire every hour. It can be regenerated using the same API.\n    \n- **Customer (Employee) are Redirected :**  \n    Once the customer (Employee) is authenticated via the `POST /token/generate` endpoint, redirect them to the redemption portal using the generated `public-token`.This redirection URL is used to open a hosted redemption experience.**  \n    **URL Format**\n    \n    - `{{sub_domain}}`: Your assigned subdomain, configured by us during production setup.\n        \n    - `{{token}}`: The `public-token` received from the token generation API.\n        \n    - This URL opens the personalized redemption portal for the authenticated user.  \n        `https://{{sub_domain}}.thereward.store/login?public-token={{token}}`\n        \n    - For testing in the sandbox environment, use the following static URL:  \n        `https://sandbox-rewards.thereward.store/login?public-token={{token}}`\n        \n    - No custom subdomain is required in sandbox mode. Just replace `{{token}}` with the actual `public-token` value.\n        \n- **Reconcile Customer Wallet :**  \n    POST /customers/{id}/reconcile — Use this endpoint to fetch and validate the latest wallet balance for a customer. This is typically used as part of a scheduled reconciliation job (e.g., via a cron script) to ensure wallet balances are accurate and reflect expected point transactions.\n    \n\n#### **Use Case 5: Multi-Tenant SubClient & Employee Engagement Management**\n\n- **Create SubClient's as Needed:**  \n    POST /sub-clients — Create SubClient under main account or a SubClient.\n    \n- **Generate SubClient API Keys:**  \n    POST /sub-clients/{id}/keys — Create credentials scoped to each SubClient.\n    \n- **Top-up SubClient Wallet:**  \n    POST /sub-clients/{id}/topup — Add funds to SubClient wallet from Authenticated client wallet.\n    \n- **Create Customers (Employee) under SubClients:**  \n    POST /customers — Create customers (Employees) per SubClient or Main Account.\n    \n- **Distribute Points to Customers (Employee):**  \n    POST /points/distribute — Credit points from SubClient wallets.\n    \n- **Generate Customer (Employee) Authentication Token:**  \n    POST /token/generate — Create a token for customer frontend authentication. The token will expire every hour. It can be regenerated using the same API.\n    \n- **Customer (Employee) are Redirected:**  \n    Once the customer (Employee) is authenticated via the `POST /token/generate` endpoint, redirect them to the redemption portal using the generated `public-token`.This redirection URL is used to open a hosted redemption experience.  \n    **URL Format**\n    \n    - `{{sub_domain}}`: Your assigned subdomain, configured by us during production setup.\n        \n    - `{{token}}`: The `public-token` received from the token generation API.\n        \n    - This URL opens the personalized redemption portal for the authenticated user.  \n        `https://{{sub_domain}}.thereward.store/login?public-token={{token}}`\n        \n    - For testing in the sandbox environment, use the following static URL:  \n        `https://sandbox-rewards.thereward.store/login?public-token={{token}}`\n        \n    - No custom subdomain is required in sandbox mode. Just replace `{{token}}` with the actual `public-token` value.\n        \n- **Reconcile Customer Wallet :**  \n    POST /customers/{id}/reconcile — Use this endpoint to fetch and validate the latest wallet balance for a customer. This is typically used as part of a scheduled reconciliation job (e.g., via a cron script) to ensure wallet balances are accurate and reflect expected point transactions.\n    \n- **Reconcile SubClient Wallet :**  \n    POST /subclients/{id}/reconcile — Verify wallet balance consistency for a SubClient. This endpoint can be used in a scheduled job (cron) to monitor and validate wallet balances regularly.\n    \n\n#### **Use Case 6 :** Merchandise Purchase & Fulfillment\n\n- **Fetch Available Merchandise Products:**  \n    GET /merchandise/v1/products with filters (category/brand/sub-category) if needed to retrieve product details.\n    \n    - **Select Product:** Choose a product ID, quantity, and confirm price.\n        \n- **Create Customer:**  \n    POST /merchandise/v1/customers to create the merchandise customer profile.\n    \n- **Add Delivery Address:**  \n    POST /merchandise/v1/addresses to add a delivery address for the customer.\n    \n- **Place Order for the Product:**  \n    POST /merchandise/v1/orders with customer ID, address ID, product ID(s), and quantity.\n    \n- **Check Order Status:**  \n    Wait for the Web hooks / poll using GET /merchandise/v1/orders/{order_id} until status changes to DELIVERED (or final state as per API).\n    \n- **Track Item-Level Order Progress (Optional):**  \n    GET /merchandise/v1/orders/{order_id}/items to view item-wise fulfillment history/status updates.\n    \n\n# FAQs\n\n1. **How do I integrate the basic flow of integration?**  \n    Contact [onboarding@therewardstore.com](https://mailto:onboarding@therewardstore.com) to create a sandbox account. Log in, generate API keys, based on the use case you can refer to the API Integration Flow.\n    \n2. **What does the API URL signify?**  \n    The API URL is the base endpoint for all API calls, e.g., [https://api.thereward.store](https://api.thereward.store). All endpoints are relative to this base URL.\n    \n3. **I get a User ID error. What does it mean?**  \n    This usually means your authentication tokens are unauthorized or invalid. Check that you’re using the correct API keys and token formats.\n    \n4. **How do I add my colleagues to the platform?**  \n    New users can be added by contacting support. This grants them access to the portal and API resources.\n    \n5. **How do I see my wallet balance?**  \n    Use GET /wallets API, optionally filtering by currency or wallet ID.\n    \n6. **How many wallets are there in my account?**  \n    Accounts can have multiple wallets, each tied to a specific currency.\n    \n7. **I don’t see all of the products in the API response. Why is it?**  \n    The products API is paginated (default 50 per page). Some products might be disabled by suppliers.\n    \n8. **How frequently should I fetch products from your system?**  \n    Once a day to keep your catalog current.\n    \n9. **What distinguishes “Discount Positive” from “Negative”?**  \n    Positive discounts are savings offered by The Reward Store; negative discounts are surcharges charged by The Reward Store.\n    \n10. **Why do I suddenly stop seeing products in the API?**  \n    Products may be disabled by suppliers, brands may have technical issues, wallets may be missing, or products may be discontinued. Pagination limits may also hide some items.\n    \n11. **What is the difference between “Delayed” and “Real-Time” product delivery?**  \n    Real-Time products are delivered immediately after ordering. Delayed products may take 2–4 working days, depending on the supplier.\n    \n12. **What distinguishes “Fixed Denomination” from “Variable Denomination”?**  \n    Fixed Denomination means fixed voucher amounts; Variable Denomination allows flexible amounts.\n    \n13. **Will a given product’s voucher code format always be the same?**  \n    Usually yes, but changes can occur if the brand updates their code transmission format.\n    \n14. **How frequently should I fetch the balance from your system?**  \n    We recommend fetching wallet balances every hour.\n    \n15. **How can I place an order using your API?**  \n    Use the POST /orders API, providing product ID, quantity, and other required details.\n    \n16. **How do I know the status of an order placed through your system?**  \n    Configure webhooks to receive real-time order status updates. Alternatively, use GET /orders/{order_id} to fetch current status.\n    \n17. **How do I track order status without polling?**  \n    Use webhook notifications configured in the portal to get instant updates on order status changes.\n    \n18. **What does “Order Status” refer to?**\\*_**Order Status\" refers to the current condition or state of an order that has been placed within a system. It provides information about the progress and status of the order from placement to fulfilment. Order statuses include:****__\\*__\\\\_**PENDING**: Indicates that the order is in progress and has yet to be fulfilled or delivered.  \n    **PARTIALLY_DELIVERED**: Indicates that only a portion of the order has been delivered, with the remaining items pending delivery.  \n    **CANCELLED**: Indicates that the order has been cancelled and will not be processed further.  \n    **DELIVERED**: Indicates that the order has been successfully delivered to the customer.\n    \n19. **What is reference_code in the Order Create API?**  \n    “Reference_code in the Order Create API”, means that each order is identified and processed using a special code that is different for every order. This unique ID helps keep track of individual orders and ensures that they are correctly processed and delivered to the right customer. So, when you place an order online, it gets its special code to make sure everything goes smoothly.\n    \n20. **How do I fetch codes for an existing order?**  \n    Our system also offers an Order Details API, which allows you to retrieve information about vouchers for a given order. This API provides details such as voucher codes, discounts, and expiration dates, enabling you to incorporate voucher functionality into your application or platform.\n    \n21. **I sometimes see CODE and PIN and sometimes a URL. Why?**  \n    The format of the code delivered can vary but typically includes a link, code, PIN, or in combination. This could be in the form of a link to access a digital code, an alphanumeric code provided directly, or a personal identification number (PIN) for accessing certain features or services.\n    \n22. **What does filter in API call mean?**  \n    Filter in API call refers to a mechanism used to narrow down or refine the data returned by the API, such as based on product_name, category, sub_category, currency, etc. Filters allow users to specify conditions to retrieve only the relevant subset of data from the API response. This helps streamline data retrieval and ensures that users receive the information they need efficiently.\n    \n23. **What are the Limits for Get APIs or limits for the Pagination?**  \n    Default pagination limit is 50 items per page; you can adjust limits within allowed maximums.\n    \n24. **Can you explain the difference between making a single purchase and buying in bulk?**  \n    A single order involves purchasing one item, while a bulk order involves purchasing a larger quantity of items at once. Our Bulk order limit is 250 units.\n    \n25. **Are Bulk orders processed in real-time or delayed?**  \n    The delivery of the bulk orders depends on each product.\n    \n26. **What does “TAT” signify?**  \n    Turnaround time (TAT) is the amount of time taken to complete or fulfil an order request. It varies from product to product. Our TAT is around 2-4 working days.\n    \n27. **What do “Timeouts” signify?**  \n    Timeouts refer to the maximum number of seconds for a Create Order API call. Timeouts for Create Order API calls have a maximum of 45 seconds.\n    \n28. **What information should I give if I need to raise a concern with the API?**  \n    Our system generates a unique key as part of the API response for every API call made. This key is used as a reference point for tracking the entire log associated with the error. Users can provide this key to our support team to raise a new ticket, enabling them to quickly diagnose and address the underlying issue, ensuring minimal downtime and optimal system performance.\n    \n29. **What error messages can I expect?**  \n    | Error Code | HTTP Status | Description |  \n    | INVALID_INPUT | 400 | The payload or parameters are invalid |  \n    | BAD_REQUEST | 400 | Generic bad request |  \n    | E_VALIDATION_FAILURE | 400 | One or more fields failed validation |  \n    | NO_MATCHING_RESULT | 400 | No matching result found |  \n    | INVALID_FILTERS | 400 | One or more filters provided are invalid |  \n    | INVALID_CALL | 400 | API called in an unsupported or incorrect way |  \n    | DUPLICATED_REFERENCE_CODE | 400 | A duplicate reference code was used |  \n    | INSUFFICIENT_BALANCE | 400 | Insufficient balance in the wallet |  \n    | SOURCE_WALLET_LOW_BALANCE | 400 | Wallet has insufficient funds |  \n    | WALLET_NOT_FOUND | 404 | Wallet does not exist |  \n    | NOT_FOUND | 404 | Generic resource not found |  \n    | SUB_CLIENT_NOT_FOUND | 404 | Sub-client does not exist |  \n    | PARENT_CLIENT_NOT_FOUND | 404 | Parent client does not exist |  \n    | FEATURE_DISABLED | 400 | Feature disabled — please ask admin to enable it |  \n    | INVALID_FEATURE | 400 | The requested feature is invalid or unsupported |  \n    | INVALID_STATUS | 400 | An invalid status value was provided |  \n    | UNAUTHORIZED | 401 | Authentication credentials are missing or invalid |  \n    | INVALID_CREDENTIALS | 401 | Incorrect API credentials |  \n    | FORBIDDEN | 403 | Access to this resource is forbidden |  \n    | FORBIDDEN_ACTION | 403 | The client is not allowed to perform this action |  \n    | SERVICE_UNAVAILABLE | 503 | Service is temporarily unavailable — try again later |  \n    | OPERATION_TIMEOUT | 504 | The operation took too long to complete |\n    \n30. **What are Client key and Secret key? Do they change?**  \n    The Client key and Secret key are credentials used for authentication when accessing our system's API. The Client key serves as the identifier for your application, while the Secret key acts as the password for authentication. These keys are typically generated on our portal and remain constant unless explicitly changed by the user for security reasons or if there's a need to regenerate them due to potential compromise.\n    \n31. **What is IP whitelisting?**  \n    IP whitelisting is a security measure used to restrict access to a system's resources based on the IP addresses of incoming requests. By whitelisting specific IP addresses, only requests originating from those addresses are permitted to access the system, while all other requests are denied. This helps enhance security by limiting access to authorized entities and preventing unauthorized access from unknown sources.\n    \n32. **How do customer authentication tokens work?**  \n    Tokens are valid for 1 hour, generated via POST /token/generate for secure frontend authentication.\n    \n33. **What is a SubClient?**  \n    A SubClient is a nested sub-account with separate wallets, customers, and API keys, enabling multi-tenant management.\n    \n34. **Can SubClients create their own SubClients?**  \n    Yes, SubClients can create child SubClients, allowing hierarchical account structures.\n    \n35. **How do I manage SubClient wallets?**  \n    Top up, deduct, and reconcile SubClient wallets using designated APIs.\n    \n36. **Can I purchase products using wallets of different currencies?**  \n    Yes, specify the wallet ID with different currency; the system handles forex conversion and fees.\n    \n37. **How do I reconcile wallets?**  \n    Use reconciliation APIs to verify and adjust wallet balances.\n    \n38. **How do I distribute and deduct points?**  \n    Use POST /points/distribute to credit and POST /points/deduct to debit points from customer wallets.\n    \n39. **How do customers redeem points?**  \n    Customers redeem points by placing orders with their points wallet through appropriate APIs.\n    \n40. **How do I use webhooks to track orders and wallet events?**  \n    Configure webhook URLs in the portal to receive real-time event notifications like order status changes, wallet top-ups, or recharge completions. Always verify webhook authenticity.\n    \n41. **What are best practices to avoid polling APIs?**  \n    Use webhooks for event-driven updates. Polling should be minimized to reduce load and latency.\n    \n\n# **Testing** Products in Sandbox\n\nBelow are the list of products in Sandbox to similuate the **Testing Permutations:**\n\n| **S.no** | **Product Name** | **Product ID** | **Currency** | **Use for** | **Expected Response** |\n| --- | --- | --- | --- | --- | --- |\n| 1 | Trial_Test (URL) | 1 | INR | REALTIME | Get the voucher in the claim_url field. |\n| 2 | Trial_Test (Code)korcomptenz | 2 | INR | REALTIME | Get the voucher in the card_number  <br>field. |\n| 3 | Trial_Test (Code/PIN) | 3 | INR | REALTIME | Get the voucher in the card_number or pin_code field. |\n| 4 | Trial_Test (PIN/URL) | 4 | INR | REALTIME | Get the voucher in the pin_code or claim_url field. |\n| 5 | Trial_Test (Code/URL) | 5 | INR | REALTIME | Get the voucher in the card_number or claim_url field. |\n| 6 | Trial_Test (Code/PIN/URL) | 6 | INR | REALTIME | Get the voucher in the card_number or pin_code or claim_url field. |\n| 7 | Trial_Test (URL) | 7 | USD | REALTIME | Get the voucher in the claim_url field. |\n| 8 | Trial_Test (Code) | 8 | USD | REALTIME | Get the voucher in the card_number  <br>field. |\n| 9 | Trial_Test (Code/PIN) | 9 | USD | REALTIME | Get the voucher in the card_number or pin_code field. |\n| 10 | Trial_Test (PIN/URL) | 10 | USD | REALTIME | Get the voucher in the pin_code or claim_url field. |\n| 11 | Trial_Test (Code/URL) | 11 | USD | REALTIME | Get the voucher in the card_number or claim_url field. |\n| 12 | Trial_Test (Code/PIN/URL) | 12 | USD | REALTIME | Get the voucher in the card_number or pin_code or claim_url field. |\n| 13 | Trial_Test (URL) | 13 | SGD | REALTIME | Get the voucher in the claim_url field. |\n| 14 | Trial_Test (Code) | 14 | SGD | REALTIME | Get the voucher in the card_number  <br>field. |\n| 15 | Trial_Test (Code/PIN) | 15 | SGD | REALTIME | Get the voucher in the card_number or pin_code field. |\n| 16 | Trial_Test (PIN/URL) | 16 | SGD | REALTIME | Get the voucher in the pin_code or claim_url field. |\n| 17 | Trial_Test (Code/URL) | 17 | SGD | REALTIME | Get the voucher in the card_number or claim_url field. |\n| 18 | Trial_Test (Code/PIN/URL) | 18 | SGD | REALTIME | Get the voucher in the card_number or pin_code or claim_url field. |\n| 19 | Trial_Test (URL) | 19 | EUR | REALTIME | Get the voucher in the claim_url field. |\n| 20 | Trial_Test (Code) | 20 | EUR | REALTIME | Get the voucher in the card_number  <br>field. |\n| 21 | Trial_Test (Code/PIN) | 21 | EUR | REALTIME | Get the voucher in the card_number or pin_code field. |\n| 22 | Trial_Test (PIN/URL) | 22 | EUR | REALTIME | Get the voucher in the pin_code or claim_url field. |\n| 23 | Trial_Test (Code/URL) | 23 | EUR | REALTIME | Get the voucher in the card_number or claim_url field. |\n| 24 | Trial_Test (Code/PIN/URL) | 24 | EUR | REALTIME | Get the voucher in the card_number or pin_code or claim_url field. |\n| 25 | Trial_Test (URL) | 29 | AED | REALTIME | Get the voucher in the claim_url field. |\n| 26 | Trial_Test (Code) | 30 | AED | REALTIME | Get the voucher in the card_number  <br>field. |\n| 27 | Trial_Test (Code/PIN) | 31 | AED | REALTIME | Get the voucher in the card_number or pin_code field. |\n| 28 | Trial_Test (PIN/URL) | 32 | AED | REALTIME | Get the voucher in the pin_code or claim_url field. |\n| 29 | Trial_Test (Code/URL) | 33 | AED | REALTIME | Get the voucher in the card_number or claim_url field. |\n| 30 | Trial_Test (Code/PIN/URL) | 34 | AED | REALTIME | Get the voucher in the card_number or pin_code or claim_url field. |\n| 31 | Trial_Test_Pending | 25 | INR | DELAYED | In Sandbox, order placed for this product will always have PENDING status.  <br>In Production, delayed products are delivered in 3-4 working days. |\n| 32 | Trial_Test_Pending | 26 | USD | DELAYED | In Sandbox, order placed for this product will always have PENDING status.  <br>In Production, delayed products are delivered in 3-4 working days. |\n| 33 | Trial_Test_Pending | 27 | SGD | DELAYED | In Sandbox, order placed for this product will always have PENDING status.  <br>In Production, delayed products are delivered in 3-4 working days. |\n| 34 | Trial_Test_Pending | 28 | EUR | DELAYED | In Sandbox, order placed for this product will always have PENDING status.  <br>In Production, delayed products are delivered in 3-4 working days. |\n| 35 | Trial_Test_Pending | 35 | AED | DELAYED | In Sandbox, order placed for this product will always have PENDING status.  <br>In Production, delayed products are delivered in 3-4 working days. |\n\n# APIs","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"29540295","team":5520161,"collectionId":"1457cde8-ae89-4fe8-a375-c663521c273a","publishedId":"2sB3BAKrYi","public":true,"publicUrl":"https://developers.thereward.store","privateUrl":"https://go.postman.co/documentation/29540295-1457cde8-ae89-4fe8-a375-c663521c273a","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"4B3097"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"light","themes":[{"name":"dark","logo":"https://content.pstmn.io/e5e9bfbb-53f5-4396-b115-9755ba8da644/VFJTIExvZ29fcG5nIGZpbGUucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"cfbdff"}},{"name":"light","logo":"https://content.pstmn.io/e5e9bfbb-53f5-4396-b115-9755ba8da644/VFJTIExvZ29fcG5nIGZpbGUucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"4B3097"}}]}},"version":"8.10.1","publishDate":"2025-08-01T06:38:26.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":"https://content.pstmn.io/e5e9bfbb-53f5-4396-b115-9755ba8da644/VFJTIExvZ29fcG5nIGZpbGUucG5n","logoDark":"https://content.pstmn.io/e5e9bfbb-53f5-4396-b115-9755ba8da644/VFJTIExvZ29fcG5nIGZpbGUucG5n"}},"statusCode":200},"environments":[{"name":"SandBox","id":"31787456-fe50-4eab-9a40-0d12f2ddb3a3","owner":"29489591","values":[{"key":"client_id","value":"Test","enabled":true,"type":"default"},{"key":"client_secret","value":"TestPass","enabled":true,"type":"default"},{"key":"base_url","value":"https://sandbox-api.thereward.store","enabled":true,"type":"default"},{"key":"mobile_number","value":"1234567890","enabled":true,"type":"default"},{"key":"sub_client_username","value":"SubClient","enabled":true,"type":"default"},{"key":"sub_client_password","value":"SubClientPass","enabled":true,"type":"default"},{"key":"SubClientID","value":"1","enabled":true,"type":"default"},{"key":"CustomerID","value":"1","enabled":true,"type":"default"},{"key":"ip_id","value":"1","enabled":true,"type":"default"},{"key":"webhook_id","value":"1","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/42d506d404a877af3ff1774db467daef4fa578442b643bccb9e9eead4196b4f8","favicon":"https://res.cloudinary.com/postman/image/upload/v1698940018/team/qivcodkmx4yzra7atmkn.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"SandBox","value":"29489591-31787456-fe50-4eab-9a40-0d12f2ddb3a3"}],"canonicalUrl":"https://developers.thereward.store/view/metadata/2sB3BAKrYi"}