### Render Tabby Installments Snippet Source: https://docs.tabby.ai/e-commerce-platforms/shopify/shopify-snippets This command should be placed near the price element in your theme files (e.g., product.liquid, main-product.liquid) to render the Tabby installments snippet on your storefront. ```Liquid {% render 'tabby-installments' %} ``` -------------------------------- ### GET /llms.txt Source: https://docs.tabby.ai/api-reference/checkout/create-a-session Retrieves the complete documentation index for the Tabby AI project. ```APIDOC ## GET /llms.txt ### Description Fetches the complete documentation index to discover all available pages within the Tabby AI documentation. ### Method GET ### Endpoint https://docs.tabby.ai/llms.txt ``` -------------------------------- ### API Integration Guide Source: https://docs.tabby.ai/api-reference/overview Quick links to essential resources for integrating with the Tabby API. ```APIDOC ## Quick Links to Documentation * [Direct API Integration Guide](/pay-in-4-custom-integration/quick-start) * [Testing Credentials](/testing-guidelines/testing-credentials) * [Postman API Collection](/testing-guidelines/postman-api-collections) ``` -------------------------------- ### Complete Product and Cart Snippet Implementation Source: https://docs.tabby.ai/pay-in-4-custom-integration/on-site-messaging A full example showing the HTML structure and script initialization for the product and cart promo snippet. ```HTML
``` -------------------------------- ### GET /webhooks Source: https://docs.tabby.ai/api-reference/webhooks/retrieve-all-webhooks Retrieves a list of all registered webhooks in the system. ```APIDOC ## GET /webhooks ### Description Retrieves all registered webhooks. ### Method GET ### Endpoint /webhooks ``` -------------------------------- ### Create Tabby Installments Snippet Source: https://docs.tabby.ai/e-commerce-platforms/shopify/shopify-snippets Create a new file named 'tabby-installments.liquid' in the Snippets folder. Ensure variables like publicKey, merchantCode, and priceElement are configured correctly for your store. ```HTML {%- liquid assign sectionId = section.id assign lang = localization.language.iso_code -%}
``` -------------------------------- ### Manually Set Tabby Extension Version Source: https://docs.tabby.ai/e-commerce-platforms/magento-2/magento-2-plugin-installation If a 'Higher matching version' error occurs during installation, manually specify the required version in your composer.json file or via the command line. ```bash tabby m2-payments >= 7.0.1 ``` -------------------------------- ### Get Disputes List using cURL Source: https://docs.tabby.ai/api-reference/disputes Use this cURL command to retrieve a list of disputes. Ensure you replace `` with your actual Bearer token for authorization. ```bash curl --request GET \ --url https://api.tabby.ai/api/v1/disputes \ --header 'Authorization: Bearer ' ``` -------------------------------- ### Handle Tabby Eligibility Rejection Source: https://docs.tabby.ai/introduction/faq Example of the status and rejection reason returned in the Tabby Session creation response when a customer is ineligible. ```json "status": "rejected", "configuration"."products"."installments"."rejection_reason": "not_available" ``` -------------------------------- ### JSON Phone Number Example Source: https://docs.tabby.ai/introduction/technical-requirements Accepts various mobile phone formats, using the UAE +971 mask as an example. ```json { "phone": "+971500000001" // OR "971500000001", "500000001", "0500000001" } ``` -------------------------------- ### Initialize TabbyPromo Component Source: https://docs.tabby.ai/pay-in-4-custom-integration/on-site-messaging Load the Tabby promo script and initialize the component with required merchant credentials and product details. ```HTML ``` -------------------------------- ### Implement Android File Chooser with ActivityResultContracts Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Uses PickVisualMedia to launch the system image picker and handle the result via a callback. ```kotlin var uploadMessageCallback: ValueCallback>? = null val fileChooserContract = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { result -> val callback = uploadMessageCallback ?: return@registerForActivityResult val URIs = result?.let { arrayOf(it) } callback.onReceiveValue(URIs) uploadMessageCallback = null } // Web chrome client implementation here. This implementation should be set to your WebView. object : WebChromeClient() { override fun onShowFileChooser( webView: WebView?, filePathCallback: ValueCallback>?, fileChooserParams: FileChooserParams? ): Boolean { uploadMessageCallback = filePathCallback fileChooserContract.launch( PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly) ) return true } } ``` -------------------------------- ### Initialize WebView with Custom WebChromeClient Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Sets a custom WebChromeClient instance to a WebView object. ```kotlin WebView(context).apply { webChromeClient = object : WebChromeClient() { // Custom implementations. } } ``` -------------------------------- ### GET /api/v2/checkout/{id} Source: https://docs.tabby.ai/openapi.yaml Retrieves an existing checkout session by its ID. ```APIDOC ## GET /api/v2/checkout/{id} ### Description Use this API to retrieve the token (only if tokens used in your integration). ### Method GET ### Endpoint /api/v2/checkout/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the checkout session ``` -------------------------------- ### GET /api/v2/payments/{payment.id} Source: https://docs.tabby.ai/offline-payment-methods/pos-integration Retrieves the current status of a specific payment. ```APIDOC ## GET /api/v2/payments/{payment.id} ### Description Retrieves the status of a payment using the payment ID. ### Method GET ### Endpoint /api/v2/payments/{payment.id} ### Parameters #### Path Parameters - **payment.id** (string) - Required - The unique identifier of the payment. ``` -------------------------------- ### Handling Multiple WebView Permissions (Java) Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Implements a WebChromeClient to handle permission requests for WebView resources. It checks for runtime permissions and launches a launcher to request them if not granted. ```java import android.webkit.PermissionRequest; import android.webkit.WebChromeClient; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import java.util.ArrayList; import java.util.List; import java.util.Map; public class PermissionRequester implements ActivityResultCallback> { private PermissionRequest permissionRequest; public ActivityResultLauncher multiplePermissionLauncher; public PermissionRequester() {} public WebChromeClient getWebChromeClient() { return new WebChromeClient() { @Override public void onPermissionRequest(PermissionRequest request) { permissionRequest = request; List permissions = getRuntimePermissions(request.getResources()); if (permissions.isEmpty()) { request.grant(request.getResources()); } else { multiplePermissionLauncher.launch(permissions.toArray(new String[0])); } } }; } @Override public void onActivityResult(Map o) { boolean allGranted = true; for (Boolean granted : o.values()) { if (!granted) { allGranted = false; break; } } if (allGranted) { permissionRequest.grant(permissionRequest.getResources()); } else { permissionRequest.deny(); } } private List getRuntimePermissions(String[] resources) { List permissions = new ArrayList<>(); for (String resource : resources) { switch (resource) { case PermissionRequest.RESOURCE_VIDEO_CAPTURE: permissions.add(android.Manifest.permission.CAMERA); break; ``` -------------------------------- ### Get Dispute by ID Source: https://docs.tabby.ai/api-reference/disputes/get-dispute-by-id Retrieves detailed information about a specific dispute. ```APIDOC ## GET /disputes/{id} ### Description Returns detailed information about a specific dispute. ### Method GET ### Endpoint /disputes/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the dispute. ### Response #### Success Response (200) - **dispute_details** (object) - Contains the detailed information of the dispute. ``` -------------------------------- ### Upgrade and Set Production Mode Source: https://docs.tabby.ai/e-commerce-platforms/magento-2/magento-2-plugin-installation Apply necessary upgrades and set the Magento 2 environment to production mode. Execute these commands from the Magento 2 root directory. ```bash php bin/magento setup:upgrade php bin/magento deploy:mode:set production ``` -------------------------------- ### GET /disputes Source: https://docs.tabby.ai/api-reference/disputes/get-disputes-list Retrieves a list of the 100 most recently created disputes. ```APIDOC ## GET /disputes ### Description Returns a list of 100 recently created disputes. ### Method GET ### Endpoint /disputes ### Response #### Success Response (200) - **disputes** (array) - A list of the 100 most recently created dispute objects. ``` -------------------------------- ### JSON Currency Example Source: https://docs.tabby.ai/introduction/technical-requirements Currency is defined using the ISO 4217 standard. ```json { "currency": "AED" } ``` -------------------------------- ### Create Session and Payment Source: https://docs.tabby.ai/offline-payment-methods/custom-payment-links Initiates a payment session and creates a payment. ```APIDOC ## POST /api/v2/checkout ### Description Creates a payment session and initiates the payment process. ### Method POST ### Endpoint /api/v2/checkout ### Parameters #### Request Body - **amount** (object) - Required - The payment amount details. - **currency** (string) - Required - The currency of the amount (e.g., "SAR", "AED"). - **value** (string) - Required - The numerical value of the amount (e.g., "100.00"). - **description** (string) - Optional - A description for the payment. - **order_id** (string) - Optional - Your internal order ID. - **customer** (object) - Optional - Customer details. - **email** (string) - Optional - Customer's email address. - **phone** (string) - Optional - Customer's phone number. - **name** (string) - Optional - Customer's full name. - **merchant_callbacks** (object) - Optional - Callback URLs for payment status updates. - **success** (string) - Optional - URL to redirect to on successful payment. - **cancel** (string) - Optional - URL to redirect to on payment cancellation. - **pending** (string) - Optional - URL to redirect to if payment is pending. ### Request Example ```json { "amount": { "currency": "SAR", "value": "100.00" }, "description": "Order #12345", "order_id": "YOUR_ORDER_ID", "customer": { "email": "customer@example.com", "phone": "+966500000000", "name": "John Doe" }, "merchant_callbacks": { "success": "https://your-site.com/tabby/success", "cancel": "https://your-site.com/tabby/cancel", "pending": "https://your-site.com/tabby/pending" } } ``` ### Response #### Success Response (200) - **id** (string) - The unique ID of the payment session. - **payment_url** (string) - The URL for the customer to complete the payment. - **status** (string) - The current status of the session (e.g., "CREATED"). #### Response Example ```json { "id": "sess_abcdef1234567890", "payment_url": "https://checkout.tabby.ai/sess_abcdef1234567890", "status": "CREATED" } ``` ``` -------------------------------- ### GET /api/v1/webhooks Source: https://docs.tabby.ai/api-reference/webhooks/retrieve-all-webhooks Retrieves all registered webhooks for your account. Requires your merchant code. ```APIDOC ## GET /api/v1/webhooks ### Description Retrieves all registered webhooks. ### Method GET ### Endpoint /api/v1/webhooks ### Parameters #### Header Parameters - **X-Merchant-Code** (string) - Required - Used for multi store/countries setup, please contact your Account manager to recognize that ### Request Example (No request body for GET requests) ### Response #### Success Response (200) - **WebhookResponseAll** (object) - Contains a list of webhooks or null if none are registered. - **Webhook** (object) - Represents a single webhook configuration. - **header** (object) - Nullable - Contains header information for signing requests. - **title** (string) - Arbitrary header name to sign the request. - **value** (string) - Random string to sign the request. - **id** (string) - Unique webhook ID, assigned by Tabby. - **is_test** (boolean) - Indicates whether to use this hook in test environment or not. - **url** (string) - HTTPS endpoint for notifications. The URL should be valid and accessible (not local). #### Error Response - **AuthenticationError_authorization** (object) - Returned if authorization fails. - **NotFoundError** (object) - Returned if an incorrect ID is used. - **UnexpectedError** (object) - Returned for any unexpected server errors. #### Response Example ```json [ { "header": { "title": "X-Tabby-Signature", "value": "random-secret-key" }, "id": "whk_12345abcde", "is_test": true, "url": "https://example.com/webhook" } ] ``` ```json null ``` ``` -------------------------------- ### Configure iOS Info.plist Permissions Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Add these keys to your Info.plist to define the purpose for camera, photo library, and microphone access. ```kotlin NSCameraUsageDescription This allows Tabby to take a photo NSPhotoLibraryUsageDescription This allows Tabby to select a photo NSMicrophoneUsageDescription For secure verification on the checkout step ``` -------------------------------- ### Initialize TabbyCard Component Source: https://docs.tabby.ai/pay-in-4-custom-integration/on-site-messaging Load the Tabby card script and initialize the component to display payment information during checkout. ```HTML ``` -------------------------------- ### GET /api/v1/disputes/{disputeId} Source: https://docs.tabby.ai/api-reference/disputes/get-dispute-by-id Retrieves detailed information about a specific dispute by its ID. ```APIDOC ## GET /api/v1/disputes/{disputeId} ### Description Returns detailed information about a specific dispute. ### Method GET ### Endpoint /api/v1/disputes/{dispute_id} ### Parameters #### Path Parameters - **dispute_id** (string, uuid) - Required - ID of the dispute. ### Response #### Success Response (200) - **dispute** (object) - The dispute object containing details like id, payment_id, amount, currency, status, and history. #### Response Example { "dispute": { "id": "uuid", "payment_id": "payment_id", "amount": "100.00", "currency": "AED", "status": "open", "order_number": "#1234" } } ``` -------------------------------- ### GET /api/v1/webhooks/{id} Source: https://docs.tabby.ai/api-reference/webhooks/retrieve-a-webhook Retrieves the details of a specific webhook by its unique identifier. ```APIDOC ## GET /api/v1/webhooks/{id} ### Description Retrieves the specified webhook configuration. ### Method GET ### Endpoint /api/v1/webhooks/{id} ### Parameters #### Path Parameters - **id** (string, uuid) - Required - ID of the webhook. #### Header Parameters - **X-Merchant-Code** (string) - Required - Used for multi store/countries setup. ### Response #### Success Response (200) - **id** (string) - Unique webhook ID, assigned by Tabby. - **is_test** (boolean) - Indicates whether to use this hook in test environment or not. - **url** (string) - HTTPS endpoint for notifications. - **header** (object) - Optional header configuration for signing requests. #### Response Example { "id": "unique webhook id", "is_test": true, "url": "https://example.com/", "header": { "title": "Arbitrary header name to sign the request", "value": "Random string to sign the request" } } ``` -------------------------------- ### Define Product and Cart Promo Container Source: https://docs.tabby.ai/pay-in-4-custom-integration/on-site-messaging Create an empty div element with a unique ID to serve as the mount point for the promotional snippet. ```HTML
``` -------------------------------- ### GET /webhooks/{id} Source: https://docs.tabby.ai/api-reference/webhooks/retrieve-a-webhook Retrieves the details of a specific webhook by its unique identifier. ```APIDOC ## GET /webhooks/{id} ### Description Retrieves the specified webhook. ### Method GET ### Endpoint /webhooks/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the webhook to retrieve. ``` -------------------------------- ### Webhook Payload Structure Source: https://docs.tabby.ai/pay-in-4-custom-integration/webhooks Example of the JSON POST-request payload sent to the registered webhook URL. ```JSON { "id": "string", "created_at": "2021-09-14T13:08:54Z", "expires_at": "2022-09-14T13:08:54Z", "closed_at": "2021-09-14T13:09:45Z", "status": "closed", "is_test": false, "is_expired": false, "amount": "100", "currency": "SAR", "order": { "reference_id": "string" }, "captures": [ { "id": "string", "amount": "100", "created_at": "2021-09-14T13:09:45Z", "reference_id": "string" } ], "refunds": [ { "id": "string", "amount": "100", "created_at": "2021-09-14T14:14:02Z", "reference_id": "string", "reason": "string" } ], "meta": { "order_id": null, "customer": null }, "token": "string" } ``` -------------------------------- ### POST /sessions Source: https://docs.tabby.ai/api-reference/checkout/create-a-session Creates a new Checkout session, initializes payment, and returns the pre-scoring status along with session and payment identifiers. ```APIDOC ## POST /sessions ### Description Creates a Checkout session. This endpoint initializes the session and payment process, returning the pre-scoring result status and the unique identifiers for both the payment and the session. ### Method POST ### Endpoint /sessions ### Response #### Success Response (200) - **status** (string) - The result of the pre-scoring process. - **payment_id** (string) - The unique identifier for the created payment. - **session_id** (string) - The unique identifier for the created session. ``` -------------------------------- ### Error Types Source: https://docs.tabby.ai/api-reference/payments/capture-a-payment Defines the structure and examples for various error responses encountered in the Tabby AI API. ```APIDOC ## Error Types ### Description This section details the different error types that can be returned by the Tabby AI API, including their structure and example values. ### Error Response Structure ```json { "errorType": "string", "error": "string" } ``` ### Specific Error Definitions #### Error_401 ```json { "status": "error", "errorType": "not_authorized" } ``` #### Error_403 ```json { "status": "error", "errorType": "no_permission" } ``` #### Error_404_no_such_payment ```json { "status": "error", "errorType": "not_found", "error": "no such payment" } ``` #### Error_500 ```json "Internal Server error" ``` ``` -------------------------------- ### JSON Locale Example Source: https://docs.tabby.ai/introduction/technical-requirements Tabby supports English and Arabic languages, referring to the RFC 1766 standard for locale. ```json { "lang": "en" } ``` -------------------------------- ### Documentation Index Source: https://docs.tabby.ai/api-reference/disputes/approve-disputes Fetch the complete documentation index to discover all available pages. ```APIDOC ## GET /llms.txt ### Description Fetch the complete documentation index. Use this file to discover all available pages before exploring further. ### Method GET ### Endpoint /llms.txt ### Response #### Success Response (200) - **content** (string) - The content of the documentation index file, listing available documentation pages. ``` -------------------------------- ### POST /api/v2/checkout Source: https://docs.tabby.ai/api-reference/checkout/create-a-session Creates a Checkout session. This endpoint initiates the checkout process, returning the status, payment ID, and session ID. ```APIDOC ## POST /api/v2/checkout ### Description Creates a Checkout session. Creates Session and Payment, returns Pre-Scoring result (status), ids of Payment and Session. ### Method POST ### Endpoint /api/v2/checkout ### Parameters #### Query Parameters None #### Request Body - **payment** (object) - Required - Payment object associated with the current session. - **lang** (string) - Required - Session language, used to launch HPP with desired language. Enum: `ar`, `en`. - **merchant_code** (string) - Required - Code provided to you from Tabby side. Please contact your integration manager to get the merchant code. - **merchant_urls** (object) - Optional - Used for redirecting the customer after Tabby Checkout flow. Required for Web integration, optional for Mobile App integration. - **token** (string) - Optional - If you already have `token`, you can pass it there. Authorization header still requires Secret Key. ### Request Example ```json { "payment": { "amount": { "value": "100.00", "currency": "SAR" }, "description": "test payload", "buyer": { "email": "test@example.com", "phone": "+966500000000", "full_name": "John Doe" }, "order": { "tax_amount": { "value": "15", "currency": "SAR" }, "shipping_amount": { "value": "10", "currency": "SAR" }, "merchant_reference_id": "12345" }, "buyer_history": { "registered_since": "2023-01-01T12:00:00Z", "loyalty_member": true, "total_purchase_amount": "500.00" }, "order_history": [ { "amount": { "value": "50", "currency": "SAR" }, "order_id": "order_1", "purchased_at": "2023-01-01T12:00:00Z", "item_count": 1 } ], "shipping_address": { "city": "Riyadh", "country": "SA", "address_line1": "123 Main St", "postal_code": "12345", "state": "Riyadh" } }, "lang": "en", "merchant_code": "code provided to you from Tabby side", "merchant_urls": { "success": "https://example.com/success", "cancel": "https://example.com/cancel", "pending": "https://example.com/pending" } } ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier for the checkout session. - **payment_id** (string) - The unique identifier for the payment. - **status** (string) - The current status of the checkout session (e.g., 'pending', 'authorized'). - **redirect_url** (string) - The URL to redirect the user to complete the payment. #### Response Example ```json { "id": "cps_xxxxxxxxxxxxxx", "payment_id": "pay_xxxxxxxxxxxxxx", "status": "pending", "redirect_url": "https://checkout.tabby.ai/payment?id=cps_xxxxxxxxxxxxxx" } ``` ### Error Handling - **400** - Bad Request: Invalid request payload or parameters. - **401** - Authentication Error: Invalid or missing API key. - **403** - Forbidden: Insufficient permissions. - **404** - Not Found: The requested resource was not found. - **500** - Unexpected Error: An internal server error occurred. ``` -------------------------------- ### GET /api/v2/payments Source: https://docs.tabby.ai/api-reference/payments/list-of-all-payments Retrieves a list of payments, including status, captures, and refunds, with support for date filtering and pagination. ```APIDOC ## GET /api/v2/payments ### Description Returns a list of success payments (AUTHORIZED or CLOSED) you’ve previously created. The payments are returned in sorted order, with the most recent payments appearing first. ### Method GET ### Endpoint /api/v2/payments ### Parameters #### Query Parameters - **created_at__gte** (string) - Optional - Filter for payment creation date >= ISO 8601 date. - **created_at__lte** (string) - Optional - Filter for payment creation date <= ISO 8601 date. - **limit** (integer) - Optional - Limits the number of returned results (max 20). - **status** (string) - Optional - Filter by specific statuses (authorized, closed, rejected, new, captured, refunded, cancelled). - **offset** (integer) - Optional - The number of records to skip, indexed at 0. ### Response #### Success Response (200) - **payments** (array) - List of payment objects. - **pagination** (object) - Pagination metadata. ``` -------------------------------- ### GET /api/v1/disputes Source: https://docs.tabby.ai/api-reference/disputes/get-disputes-list Retrieves a list of up to 100 recently created disputes, with support for filtering by status and creation date. ```APIDOC ## GET /api/v1/disputes ### Description Returns a list of 100 recently created disputes. This endpoint supports filtering by status and creation timestamps. ### Method GET ### Endpoint /api/v1/disputes ### Parameters #### Query Parameters - **statuses** (array) - Optional - Dispute status. If not set, all statuses are returned. Enum: new, declined, cancelled, refunded, in_progress, evidence_merchant, evidence_customer. - **created_at_gte** (string) - Optional - Filter disputes created after or at the specified date and time (e.g., 2022-12-01T00:00:00Z). - **created_at_lte** (string) - Optional - Filter disputes created before or at the specified date and time (e.g., 2022-12-01T00:00:00Z). - **page_token** (string) - Optional - Token to load the next page of results, obtained from the previous response. ### Response #### Success Response (200) - **disputes** (array) - List of dispute objects. - **next_page_token** (string) - Token for the next page of results. ``` -------------------------------- ### Documentation Index Source: https://docs.tabby.ai/api-reference/payments/update-a-payment Fetch the complete documentation index to discover all available API pages. ```APIDOC ## GET /llms.txt ### Description Fetches the complete documentation index for Tabby AI. This index lists all available documentation pages, allowing you to discover further API endpoints and details. ### Method GET ### Endpoint /llms.txt ### Response #### Success Response (200) - **Content** (string) - A text file containing the documentation index, listing available pages and their URLs. ### Response Example ``` https://docs.tabby.ai/llms.txt https://docs.tabby.ai/payments.html https://docs.tabby.ai/users.html ``` ``` -------------------------------- ### Checkout Configuration Product Source: https://docs.tabby.ai/api-reference/checkout/create-a-session Details about the product configuration for checkout, including web URL and QR code. ```APIDOC ## Checkout Configuration Product ### Description Details about the product configuration for checkout, including web URL and QR code. ### Properties - **web_url** (string, nullable) - ReadOnly - UAE/Kuwait: checkout.tabby.ai, KSA: checkout.tabby.sa - **qr_code** (string, nullable) - ReadOnly - UAE/Kuwait: api.tabby.ai, KSA: api.tabby.sa ``` -------------------------------- ### Get Disputes List Source: https://docs.tabby.ai/api-reference/disputes Retrieves a list of disputes with optional filtering by status and creation date. Supports pagination. ```APIDOC ## GET /api/v1/disputes ### Description Retrieves a list of disputes. This endpoint supports filtering by dispute status, creation date, and pagination. ### Method GET ### Endpoint https://api.tabby.ai/api/v1/disputes ### Parameters #### Query Parameters - **statuses** (string[]) - Optional - Filter disputes by their status. If not provided, all statuses are returned. Example: `"statuses=new&statuses=declined"` - **created_at_gte** (string) - Optional - Filter disputes created on or after the specified date and time. Example: `"created_at_gte=2022-12-01T00:00:00Z"` - **created_at_lte** (string) - Optional - Filter disputes created on or before the specified date and time. Example: `"created_at_lte=2022-12-01T00:00:00Z"` - **page_token** (string) - Optional - Token for retrieving the next page of results. Obtained from the `next_page_token` in the response. ### Request Example ```json { "example": "" } ``` ### Response #### Success Response (200) - **disputes** (object[]) - Required - A list of dispute objects. - **next_page_token** (string) - Required - Token for fetching the next page of disputes. Empty if it's the last page. #### Response Example ```json { "disputes": [ { "id": "dispute id, uuid format", "attachments": [ "attachment_1" ], "payment_id": "payment id, uuid format", "amount": "100.00", "currency": "AED", "created_at": "2018-10-17T00:00:00.000Z", "expired_at": "2018-10-17T00:00:00.000Z", "status": "new", "reason": "unreceived_refund", "days_left": 123, "items": [ { "reference_id": "payment id", "title": "Order item title", "unit_price": "100.00" } ], "order_number": "#1234", "comment": "additional comments" } ], "next_page_token": "next_page_token" } ``` #### Error Responses - **400**: Bad Request - **401**: Unauthorized - **404**: Not Found - **500**: Internal Server Error #### Authorizations - **Bearer Token**: Requires a `Authorization` header with a Bearer token. Format: `Bearer `. ``` -------------------------------- ### Implement Android WebChromeClient Permission Request Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Handle web page permission requests by overriding onPermissionRequest in WebChromeClient. ```kotlin object : WebChromeClient() { override fun onPermissionRequest(request: PermissionRequest) { request.grant(request.resources) } } ``` -------------------------------- ### Declare Android Manifest Permissions Source: https://docs.tabby.ai/pay-in-4-custom-integration/mobile-apps/integration-without-sdk Add required hardware features and permissions to your AndroidManifest.xml file. ```xml ``` -------------------------------- ### GET /api/v2/payments/{id} Source: https://docs.tabby.ai/api-reference/payments/retrieve-a-payment Retrieves the specified payment. Returns the entire payment object, including the payment Status, Captures and Refunds objects. ```APIDOC ## GET /api/v2/payments/{id} ### Description Retrieves the specified payment. Returns the entire payment object, including the payment Status, Captures and Refunds objects. ### Method GET ### Endpoint /api/v2/payments/{id} ### Parameters #### Path Parameters - **id** (string) - Required - ID of the payment. ### Responses #### Success Response (200) - **PaymentResponse** (object) - Success. Payment object is returned. #### Error Response (400) - **BadRequestError_PaymentsGet** (object) - One of the required fields is missing or request is not formatted correctly. #### Error Response (401) - **AuthenticationError_PaymentsGet** (object) - The request cannot be authorized. #### Error Response (404) - **NotFoundError_no_such_payment** (object) - You are using an incorrect ID. #### Error Response (500) - **UnexpectedError** (object) - Something bad happened. We're notified. ``` -------------------------------- ### Add Default Tabby Promo Snippet Source: https://docs.tabby.ai/e-commerce-platforms/shopify/shopify-snippets Use this default snippet for Tabby promotions. It dynamically fetches product data and currency to configure the Tabby promo. Ensure your Public API Key is correctly inserted. ```HTML {%- assign lang = localization.language.iso_code -%} {%- assign currency = cart.currency.iso_code -%}
``` -------------------------------- ### JSON Amount Example Source: https://docs.tabby.ai/introduction/technical-requirements Amounts are expected in minor units according to ISO 4217. AED and SAR accept up to 2 decimals, while KWD accepts up to 3. ```json { "amount": "100.00" } ``` -------------------------------- ### Product Details Schema Source: https://docs.tabby.ai/api-reference/payments/retrieve-a-payment Defines the structure for product information, including details like title, description, price, and category. ```APIDOC ## Product Details Schema ### Description This schema defines the structure for product information. ### Fields - **title** (string) - Required - Name of the product. - **description** (string) - Optional - Description of the product. - **quantity** (integer) - Required - Quantity of the product ordered. Minimum 0, default 0. - **unit_price** (string) - Required - Price per unit of the product. Should be positive or zero, default '0'. - **image_url** (string) - Optional - URL of the item image to show in the order information. - **product_url** (string) - Optional - URL of the item at your store. - **gender** (string) - Optional - Enum: Male, Female, Kids, Other. Who the goods are designed to. - **category** (string) - Required - Name of high-level category (e.g., Clothes, Electronics) or a tree of category-subcategory1-subcategory2; or id of the category and table with category-ids data mapped provided. - **color** (string) - Optional - Color of the product (e.g., white, blue, green). - **product_material** (string) - Optional - Material of the product (e.g., cotton, polyester, synthetic). - **size_type** (string) - Optional - Type of size measurement (e.g., EU, UK). - **size** (string) - Optional - Size of the product (e.g., M, L, XL, 12). - **brand** (string) - Optional - Brand name of the product (e.g., Mango, Dorothy Perkins, Tommy Hilfiger). - **is_refundable** (boolean) - Optional - Indicates whether a product can be returned. ``` -------------------------------- ### JSON Date and Time Example Source: https://docs.tabby.ai/introduction/technical-requirements API dates use the ISO 8601 standard with combined Date and Time in UTC. 'dob' fields accept YYYY-MM-DD format. ```json { "registered_since": "2019-08-24T14:15:22Z", "dob": "2019-08-24" } ``` -------------------------------- ### OpenAPI Specification Source: https://docs.tabby.ai/api-reference/overview Access the raw OpenAPI specification file or view it using ReDoc. ```APIDOC ## OpenAPI Specification To access and download the raw OpenAPI specification file kindly use this: [openapi.yaml](https://docs.tabby.ai/openapi.yaml) You can also view this API specification using [ReDoc](https://redocly.github.io/redoc/?url=https://docs.tabby.ai/openapi.yaml). ``` -------------------------------- ### Add No-price Tabby Promo Snippet Source: https://docs.tabby.ai/e-commerce-platforms/shopify/shopify-snippets Use this 'no-price' snippet if the default one has issues. It requires your Public API Key and a merchant code based on your store's currency. This snippet is useful for themes where the default snippet might not function correctly. ```HTML {%- liquid assign locale = localization.language.iso_code -%}
``` -------------------------------- ### Product Schema Definition Source: https://docs.tabby.ai/api-reference/payments/refund-a-payment Defines the properties required for product items in the system. ```APIDOC ## Product Schema ### Description Defines the attributes for items in the store. ### Properties - **url** (string) - URL of the item at the store - **gender** (string) - Target gender (Male, Female, Kids, Other) - **category** (string) - High-level category or category tree - **color** (string) - Product color - **product_material** (string) - Material composition - **size_type** (string) - Size standard (EU, UK) - **size** (string) - Product size - **brand** (string) - Brand name - **is_refundable** (boolean) - Indicates if the product is returnable - **barcode** (string) - Machine-readable identifier - **ppn** (string) - Manufacturer Product Part Number - **seller** (string) - Name of the seller ```