{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "https:\/\/dukanam.com"
        }
    ],
    "info": {
        "name": "Dukanam Mobile API",
        "_postman_id": "419c784a-79bf-483d-b1fb-70428a51c650",
        "description": "Interactive Dukanam API reference for authentication, billing, POS, inventory, GST, compliance, exports, team access, testimonials and private feedback.",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json"
    },
    "item": [
        {
            "name": "Authentication",
            "description": "\nPrimary WhatsApp OTP authentication for mobile clients.",
            "item": [
                {
                    "name": "Request a WhatsApp verification code.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/otp\/request",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/otp\/request"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"phone\":\"9876543210\",\"challenge_id\":\"00000000-0000-4000-8000-000000000001\"}"
                        },
                        "description": "The response is intentionally identical for an existing account and a\nnew phone number, so callers cannot use this endpoint to discover users.\nDuring the resend cooldown, supply your existing challenge_id to resume\nthat same pending code without sending another message. Keep it private.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"If this number can receive WhatsApp, a verification code has been sent.\",\"challenge_id\":\"00000000-0000-4000-8000-000000000001\",\"expires_in_seconds\":600,\"resend_in_seconds\":60}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"phone\":[\"Enter a valid 10-digit Indian mobile number.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\"message\":\"Please wait before requesting another verification code.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"WhatsApp verification is not available right now. Please use email and password instead.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Verify a WhatsApp code and sign in to the matching account.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/otp\/verify",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/otp\/verify"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"challenge_id\":\"00000000-0000-4000-8000-000000000001\",\"code\":\"123456\",\"device_name\":\"Priya's phone\",\"fcm_token\":\"eY2x9_example_fcm_registration_token\"}"
                        },
                        "description": "After a valid OTP, an existing verified identity takes precedence. Otherwise,\na unique normalized user.phone match signs in immediately without email,\npassword, or account linking. Its verified identity is saved automatically\nif it has none; an existing different verified identity is preserved.\nBusiness and customer contact numbers are never used to select an account.\nMultiple matching user accounts return 422 with errors.code and no token\nor registration proof; offer password sign-in instead of choosing an account.\nOnly an unknown phone receives a short-lived, one-time registration proof.\nOpen account setup directly; do not show an account-linking step. Keep the\nproof secret and never put it in a URL.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Shop Owner\",\"email\":\"owner@example.com\",\"phone\":null},\"token\":\"1|example-mobile-token\",\"default_business_id\":1}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"requires_registration\":true,\"registration_proof\":\"one-time-registration-proof\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"code\":[\"The verification code is invalid or has expired.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"code\":[\"This number is saved on more than one account. Sign in with email and password to continue.\"]}}",
                            "name": "Ambiguous saved phone"
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"WhatsApp verification is not available right now. Please use email and password instead.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create an account after WhatsApp verification.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/otp\/register",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/otp\/register"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"challenge_id\":\"00000000-0000-4000-8000-000000000001\",\"registration_proof\":\"one-time-registration-proof\",\"name\":\"Priya Rao\",\"business_name\":\"Priya Textiles\",\"email\":\"priya@example.com\",\"password\":\"SecurePassword123!\",\"device_name\":\"Priya's phone\",\"fcm_token\":\"eY2x9_example_fcm_registration_token\",\"referral_code\":\"K7M2QX9A\",\"password_confirmation\":\"SecurePassword123!\",\"acquisition\":{\"utm_source\":\"google\",\"utm_medium\":\"organic\",\"utm_campaign\":\"launch\",\"referrer_host\":\"www.google.com\"}}"
                        },
                        "description": "The proof is single-use and expires quickly. A recovery password is\nrequired for sensitive actions, while WhatsApp remains the primary sign-in\nroute.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Priya Rao\",\"email\":\"priya@example.com\",\"phone\":null},\"business\":{\"id\":1,\"name\":\"Priya Textiles\",\"role\":\"owner\",\"is_owner\":true},\"token\":\"1|example-mobile-token\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"registration_proof\":[\"Your verified phone session has expired. Request a new WhatsApp code.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"WhatsApp verification is not available right now. Please use email and password instead.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Link a newly verified WhatsApp number to an existing password account (legacy compatibility).",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/otp\/link",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/otp\/link"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"challenge_id\":\"00000000-0000-4000-8000-000000000001\",\"registration_proof\":\"one-time-registration-proof\",\"email\":\"owner@example.com\",\"password\":\"SecurePassword123!\",\"device_name\":\"Priya's phone\",\"fcm_token\":\"eY2x9_example_fcm_registration_token\"}"
                        },
                        "description": "Clients must first obtain the same short-lived registration proof used\nfor new account creation. The email\/password check makes enrollment an\nexplicit migration path instead of trusting mutable historical contact\nphone fields.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Shop Owner\",\"email\":\"owner@example.com\",\"phone\":null},\"token\":\"1|example-mobile-token\",\"default_business_id\":1}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"registration_proof\":[\"Your verified phone session has expired. Request a new WhatsApp code.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"WhatsApp verification is not available right now. Please use email and password instead.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Register an account and its first workspace.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/register",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/register"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"email\":\"zbailey@example.net\",\"phone\":\"i\",\"business_name\":\"y\",\"password\":\"pBNvYg\",\"referral_code\":\"K7M2QX9A\",\"acquisition\":{\"utm_source\":\"google\",\"utm_medium\":\"organic\",\"utm_campaign\":\"launch\",\"referrer_host\":\"www.google.com\"},\"device_name\":\"Scribe API Docs\",\"fcm_token\":\"eY2x9_example_fcm_registration_token\"}"
                        },
                        "description": "The returned business includes `role: owner` and `is_owner: true` immediately,\nwithout a follow-up workspace request. Ownership is determined by `owner_user_id`.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Shop Owner\",\"email\":\"owner@example.com\"},\"business\":{\"id\":1,\"name\":\"Owner Shop\",\"role\":\"owner\",\"is_owner\":true},\"token\":\"1|example-mobile-token\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Sign in with the password fallback and return the default business.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/login",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/login"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"gbailey@example.net\",\"password\":\"|]|{+-\",\"remember\":false,\"fcm_token\":\"v\",\"device_name\":\"Scribe API Docs\"}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Shop Owner\",\"email\":\"owner@example.com\",\"phone\":null},\"token\":\"1|example-mobile-token\",\"default_business_id\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Email a password reset link.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/forgot-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/forgot-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"owner@example.com\"}"
                        },
                        "description": "Always returns the same response so callers cannot discover registered email addresses.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\":\"If an account exists for that email address, a password reset link has been sent.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Reset an account password.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/reset-password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/reset-password"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"token\":\"reset-token\",\"email\":\"owner@example.com\",\"password\":\"new-secure-password\",\"password_confirmation\":\"new-secure-password\"}"
                        },
                        "description": "A successful reset revokes every mobile bearer token and sends a security notification.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\":\"Password reset successfully. Sign in with your new password.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"email\":[\"This password reset token is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Return the current user and active workspaces available under each plan and seat assignment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/me",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/me"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Shop Owner\",\"email\":\"owner@example.com\",\"phone\":null},\"businesses\":[{\"id\":1,\"name\":\"My Shop\",\"role\":\"owner\",\"is_owner\":true}],\"default_business_id\":1,\"workspaces\":{\"limit\":1,\"used\":1,\"remaining\":0,\"can_create\":false}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update or clear the current user's Firebase Cloud Messaging registration token.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/fcm-token",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/fcm-token"
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"fcm_token\":\"eY2x9_example_fcm_registration_token\"}"
                        },
                        "description": "Send `null` to remove the currently stored token."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\":\"FCM token updated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "DELETE api\/v1\/auth\/token",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/token",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/token"
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "DELETE api\/v1\/auth\/tokens",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/auth\/tokens",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/auth\/tokens"
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Businesses",
            "description": "",
            "item": [
                {
                    "name": "List the active workspaces available under the caller's current plan and seat assignment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Ended paid subscriptions automatically fall back to Free Essentials. The ended subscription remains in history.\nBusiness resources include `invoice_allowance` (limit, used, remaining, can_create, resets_at) and\nowner-only `free_transition` (subscription_id, reason, requires_acknowledgement; null otherwise).\nWhen acknowledgement is required, offer paid plans and Continue on Free via POST billing\/continue-free.\nKeep viewing, downloading, and exporting existing invoices available throughout this flow.\n`is_active` describes workspace access, independently of paid subscription status."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a business for the signed-in account.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Priya Textiles\",\"skip_setup\":true}"
                        },
                        "description": "Any authenticated account can create its first or an additional business,\neven without an accessible workspace or while another workspace is in setup.\nThe caller becomes its owner. Creation uses the same setup service as web\nregistration: an active Free subscription, Walk-in Customer, and default\npayment accounts are created atomically. Existing memberships and the saved\ndefault business are unchanged; use the selection endpoint to change it.\nContinue guided onboarding from the language step using the returned ID.\nSupply contact phone, store type, and tax details through onboarding.\nDuplicate names are allowed and receive distinct slugs. Each successful\nrequest creates a new business; this endpoint is not idempotent.\n\nSend `skip_setup` to create a workspace that is immediately usable, with\nonboarding already marked complete and every step recorded as completed.\nNothing is guessed: only the name is set, and GST, address, and store\ndetails are entered later through the settings endpoint. This is what the\nweb account menu does, because an account adding a second workspace has\nalready been through guided setup once. Omit it to keep the guided flow."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":2,\"name\":\"Priya Textiles\",\"slug\":\"priya-textiles\",\"role\":\"owner\",\"is_owner\":true,\"onboarding\":{\"current_step\":\"language\",\"completed_steps\":[],\"skipped_steps\":[],\"completed_at\":null},\"subscription\":{\"status\":\"active\",\"billing_interval\":\"monthly\",\"provider\":\"manual\",\"plan\":{\"id\":1,\"name\":\"Free\",\"slug\":\"free\"}}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"Your plan covers 1 workspace.\",\"code\":\"workspace_limit_reached\",\"limit\":1,\"used\":1}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The name field is required.\",\"errors\":{\"name\":[\"The name field is required.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Select the business to open by default on the next sign-in.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/select",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/select",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Only an active, plan-eligible membership can be selected. The preference\nis shared with web sign-in; existing browser sessions retain their current\nworkspace. API requests always use the explicit business ID in their URL.\nSelection is allowed before onboarding completes so clients can switch\nout of an unfinished workspace. Follow data.business.onboarding afterward."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"default_business_id\":1,\"business\":{\"id\":1,\"name\":\"My Shop\",\"role\":\"owner\",\"is_owner\":true,\"onboarding\":{\"current_step\":\"complete\"}}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Your role requires an eligible team or accountant plan.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show the workspace and its current subscription.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Ended paid subscriptions automatically fall back to Free Essentials. The ended subscription remains in history.\nFree features and limits apply on both web and API; `is_active` describes workspace access.\nScheduled cancellations retain paid access until `ends_at`. A renewal due date alone does not end access."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update business settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/settings",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/settings",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"legal_name\":\"n\",\"phone\":\"g\",\"email\":\"rowan.gulgowski@example.com\",\"gst_registration_type\":\"unregistered\",\"gstin\":\"36ABCDE1234F1Z5\",\"address_line_1\":\"w\",\"address_line_2\":\"p\",\"city\":\"w\",\"state_code\":\"36\",\"pincode\":\"569775\",\"default_place_of_supply\":1,\"invoice_prefix\":\"HAWIOT\\\/26-27\\\/\",\"prices_include_tax\":false,\"authorized_signatory\":\"g\",\"bank_details\":\"z\",\"upi_id\":\"m\",\"receiving_bank_account\":{\"institution\":\"HDFC Bank\",\"account_name\":\"Anika Stores\",\"account_number\":\"001234567890\",\"ifsc\":\"HDFC0000123\",\"branch\":\"Pune\",\"show_on_invoice\":true},\"theme\":\"#2563EB\",\"custom_theme_colour\":\"#2563EB\",\"default_locale\":\"en\",\"invoice_share_message_template\":\"w\",\"min_shelf_life_days\":25,\"short_expiry_action\":\"warn\",\"notification_preferences\":[{\"enabled\":false,\"days\":[-364],\"threshold\":6}]}"
                        },
                        "description": "The `default_locale` and manual-sharing template fields may only be changed by workspace owners\nand admins. Manual sharing itself is available on every plan.\n\nGSTIN is required for a regular or composition registration, and its first two digits must match `state_code`. An unregistered business has its GSTIN cleared. `state_code` must be an Indian state or union territory (96, 97 and 99 are refused), and `default_place_of_supply` refuses 99."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Anika Stores\",\n        \"slug\": \"anika-stores\",\n        \"role\": \"owner\",\n        \"phone\": \"9876543210\",\n        \"email\": \"anika@example.com\",\n        \"legal_name\": \"Anika Stores Private Limited\",\n        \"gstin\": \"27AAPFU0939F1ZV\",\n        \"gst_registration_type\": \"regular\",\n        \"currency\": \"INR\",\n        \"timezone\": \"Asia\\\/Kolkata\",\n        \"address\": {\n            \"line_1\": \"12 Market Road\",\n            \"line_2\": null,\n            \"city\": \"Pune\",\n            \"state_code\": \"27\",\n            \"pincode\": \"411001\"\n        },\n        \"default_place_of_supply\": \"27\",\n        \"invoice_prefix\": \"INV\",\n        \"prices_include_tax\": true,\n        \"upi_id\": \"anikastores@bank\",\n        \"theme\": \"#2563EB\",\n        \"default_locale\": \"hi\",\n        \"is_active\": true,\n        \"manual_sharing\": {\n            \"enabled\": true,\n            \"invoice_share_message_template\": \"Hello {customer_name}, invoice {invoice_number} for {invoice_total} is ready.\"\n        },\n        \"subscription\": {\n            \"status\": \"active\",\n            \"billing_interval\": \"monthly\",\n            \"trial_ends_at\": null,\n            \"renews_at\": \"2026-09-19T00:00:00.000000Z\",\n            \"ends_at\": null,\n            \"cancelled_at\": null,\n            \"plan\": {\n                \"id\": 2,\n                \"name\": \"Smart\",\n                \"slug\": \"smart\",\n                \"features\": [\n                    \"inventory\",\n                    \"pos\",\n                    \"expenses\"\n                ],\n                \"limits\": []\n            }\n        },\n        \"receiving_bank_account\": {\n            \"id\": 2,\n            \"institution\": \"HDFC Bank\",\n            \"account_name\": \"Anika Stores\",\n            \"account_number\": \"001234567890\",\n            \"ifsc\": \"HDFC0000123\",\n            \"branch\": \"Pune\",\n            \"show_on_invoice\": true\n        },\n        \"theme_colours\": {\n            \"label\": \"Custom colour\",\n            \"brand\": \"#2159D4\",\n            \"brand_dark\": \"#19439F\",\n            \"soft\": \"#E5ECFD\"\n        }\n    }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/dashboard",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/dashboard",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/dashboard",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Business onboarding",
            "description": "\nComplete the resumable setup required after registering a new business. Until onboarding finishes,\nclients may resubmit a completed required step to correct saved data without moving the current step backwards.",
            "item": [
                {
                    "name": "GET api\/v1\/businesses\/{business}\/onboarding",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "PATCH api\/v1\/businesses\/{business}\/onboarding\/language",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/language",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/language",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"locale\":\"hi\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/onboarding\/business",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/business",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/business",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "name",
                                    "value": "Veera Stores",
                                    "type": "text",
                                    "description": "Public business name."
                                },
                                {
                                    "key": "store_type",
                                    "value": "kirana-store",
                                    "type": "text",
                                    "description": "Store type key."
                                },
                                {
                                    "key": "supply_type",
                                    "value": "goods",
                                    "type": "text",
                                    "description": "goods, services, or both."
                                },
                                {
                                    "key": "phone",
                                    "value": "9876543210",
                                    "type": "text",
                                    "description": "Public phone in E.164 or a 10-digit Indian local format."
                                },
                                {
                                    "key": "logo",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "PATCH api\/v1\/businesses\/{business}\/onboarding\/tax",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/tax",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/tax",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"gst_status\":\"registered\",\"gst_registration_type\":\"normal\",\"gstin\":\"29ABCDE1234F1Z5\",\"legal_name\":\"a\",\"address_line_1\":\"12 Market Road\",\"address_line_2\":\"k\",\"city\":\"Bengaluru\",\"state_code\":\"29\",\"pincode\":\"560001\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/onboarding\/steps\/{step}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/steps\/:step",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/steps\/:step",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "step",
                                    "key": "step",
                                    "value": "architecto",
                                    "description": "The step."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"skip\":true}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Check the setup product workbook against existing masters only; no masters are created.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/product-imports",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/product-imports",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Nonblank category\/subcategory\/brand\/manufacturer names must exist in this business.\nA supplied taxable GST percentage for a Regular GST business must match an existing master.\nBlank organisation columns may be assigned later. Preview rows include nullable resolved master IDs.\nReuploading an unconfirmed file refreshes its validation and returns the same record with HTTP 200.\nAlready imported files remain unchanged; fresh uploads return HTTP 201."
                    },
                    "response": []
                },
                {
                    "name": "Import every validated product row without exceeding the current plan's total item allowance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/onboarding\/product-imports\/:itemImport_id\/confirm",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/onboarding\/product-imports\/:itemImport_id\/confirm",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemImport_id",
                                    "key": "itemImport_id",
                                    "value": 1,
                                    "description": "The ID of the itemImport."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Rechecks the workbook before writing; new SKU\/barcode conflicts return 422 under file.\nRenamed\/deleted classification or GST masters also return 422 under file; no masters are created."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This file has already been imported.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\",\"errors\":{\"plan\":[\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "GST verification",
            "description": "\nVerify an Indian GSTIN through the configured Masters India taxpayer service.\nThe endpoint is available during onboarding so a merchant can use the verified\nlegal name and registered address before saving their business tax profile.",
            "item": [
                {
                    "name": "Look up and normalize an Indian GSTIN.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gstin\/lookup",
                            "query": [
                                {
                                    "key": "gstin",
                                    "value": "03AAFCE1234J1Z0",
                                    "description": "The 15-character GSTIN to verify.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gstin\/lookup?gstin=03AAFCE1234J1Z0",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"gstin\":\"03AAFCE1234J1Z0\",\"legal_name\":\"Edsafe Logistics Private Limited\",\"trade_name\":\"EdLogistics Private Limited\",\"status\":\"Active\",\"registration_type\":\"Regular\",\"constitution\":\"Private Limited Company\",\"einvoice_status\":\"Yes\",\"registration_date\":\"2019-04-01\",\"last_updated\":\"2026-01-15\",\"state_code\":\"03\",\"state_name\":\"Punjab\",\"address\":{\"line1\":\"Number 234, 55 Wide Road, Ground Floor, Opposite Upkar Transport\",\"line2\":\"Godown Area, Zirakpur, SASNagar\",\"city\":\"Zirakpur\",\"district\":\"SASNagar\",\"postal_code\":\"140603\",\"state_code\":\"03\",\"country_code\":\"IN\"},\"suggested_business\":{\"legal_name\":\"Edsafe Logistics Private Limited\",\"gst_registration_type\":\"normal\",\"gstin\":\"03AAFCE1234J1Z0\",\"address_line_1\":\"Number 234, 55 Wide Road, Ground Floor, Opposite Upkar Transport\",\"address_line_2\":\"Godown Area, Zirakpur, SASNagar\",\"city\":\"Zirakpur\",\"state_code\":\"03\",\"pincode\":\"140603\",\"default_place_of_supply\":\"03\"},\"suggested_contact\":{\"name\":\"EdLogistics Private Limited\",\"company_name\":\"EdLogistics Private Limited\",\"gst_treatment\":\"registered_regular\",\"gstin\":\"03AAFCE1234J1Z0\",\"billing_address_line_1\":\"Number 234, 55 Wide Road, Ground Floor, Opposite Upkar Transport\",\"billing_address_line_2\":\"Godown Area, Zirakpur, SASNagar\",\"billing_city\":\"Zirakpur\",\"billing_state_code\":\"03\",\"billing_pincode\":\"140603\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"We could not verify this GSTIN. Check it and try again.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"GST verification is temporarily unavailable. Please try again shortly.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Contacts",
            "description": "\nLoading customers and suppliers from a spreadsheet, which is how a shop moves its party list\noff whatever it used before. A file is uploaded, checked, and reviewed before anything is\nwritten; parties appear only when the import is committed, and then all of them at once.",
            "item": [
                {
                    "name": "Download a contact ledger statement PDF.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact_id\/ledger.pdf",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-04-01",
                                    "description": "Start date, inclusive.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2027-03-31",
                                    "description": "End date, inclusive. Must be on or after `from`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact_id\/ledger.pdf?from=2026-04-01&to=2027-03-31",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact_id",
                                    "key": "contact_id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "The statement includes dated movements, running receivable and payable balances, and period totals."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The generated ledger statement PDF.",
                            "name": "The generated ledger statement PDF."
                        }
                    ]
                },
                {
                    "name": "Email a contact ledger statement.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact_id\/ledger\/email",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact_id\/ledger\/email",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact_id",
                                    "key": "contact_id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"recipients\":[\"primary\",\"person-12\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"subject\":\"Sri Lakshmi Traders | Purchase order: PO-0007\",\"message\":\"Hi Ravi, please find purchase order PO-0007 for \u20b912,500.00. Please confirm the order and the delivery date.\",\"from\":\"2026-04-01\",\"to\":\"2027-03-31\"}"
                        },
                        "description": "Sends one email to each chosen person at the party with the statement PDF for the period attached and a button to the signed public statement. Choose people by the `key` values in `send_recipients` from GET `contacts\/{contact}`; each must have an email address. Leave `from` and `to` empty for all dates. Every email send is recorded in the audit log."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Emailed to Ravi Kumar.\",\"data\":{\"sent_to\":[{\"key\":\"primary\",\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.test\"}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Ravi Kumar has no email address.\",\"errors\":{\"recipients.0\":[\"Ravi Kumar has no email address.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Stop trading with a party, or start again.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact_id\/active",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact_id\/active",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact_id",
                                    "key": "contact_id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_active\":false}"
                        },
                        "description": "Its own endpoint rather than a field on update, which re-records the opening balance and\nwill reverse and replace its accounting entry when it looks changed. Retiring a party is a one-word\ndecision and has no business touching their khata. An inactive party keeps its balance and\nevery document it already sits on; it is simply no longer offered when raising a new one."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The walk-in customer is where every untagged counter sale is billed, so it cannot be made inactive.\",\"errors\":{\"is_active\":[\"The walk-in customer is where every untagged counter sale is billed, so it cannot be made inactive.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Bulk update contact status or party role.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/bulk",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/bulk",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_ids\":[1,2],\"action\":\"both\"}"
                        },
                        "description": "Atomic: all IDs must belong to this business and the caller must be authorized for every current and target role. Missing\/cross-business IDs return 404; denied roles return 403; invalid actions, duplicate IDs and protected walk-in changes return 422. Existing documents, balances, journals and profile fields are preserved. Use one ID for an individual role change."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"updated_count\":2}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "View the party's private profile photo.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact\/photo",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact\/photo",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact",
                                    "key": "contact",
                                    "value": 1,
                                    "description": "The contact."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires membership, khata access and sales permission for customers or purchases permission\nfor suppliers. Both parties permit either permission. Missing photos return 404.\nNo public storage path or signed public link is exposed. Production photos use private S3;\nlegacy images are read from their recorded disk through this same authenticated endpoint."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The saved JPEG, PNG or WebP photo, with private\/no-store headers.",
                            "name": "The saved JPEG, PNG or WebP photo, with private\/no-store headers."
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/contacts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "active\n\nThe `search` term also matches the name and phone of a contact's additional contacts.",
                                    "description": "Which parties to list by state: `all` (the default) lists both, with inactive parties last, `active` lists only parties the shop still trades with, and `inactive` lists only inactive ones. Use `active` when building a picker.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts?status=active%0A%0AThe%20%60search%60%20term%20also%20matches%20the%20name%20and%20phone%20of%20a%20contact%27s%20additional%20contacts.",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"type\":\"customer\",\"search\":\"b\",\"status\":\"all\",\"per_page\":22}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a contact and record its opening balance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "type",
                                    "value": "customer",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "is_active",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "profile_type",
                                    "value": "consumer",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "name",
                                    "value": "b",
                                    "type": "text",
                                    "description": "Must not be greater than 128 characters."
                                },
                                {
                                    "key": "company_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "contact_person",
                                    "value": "Anita Rao",
                                    "type": "text",
                                    "description": "Primary contact person at a business party. Ignored for consumer contacts. The primary contact phone and email are the contact's own `phone` and `email`. Must not be greater than 128 characters."
                                },
                                {
                                    "key": "phone",
                                    "value": "g",
                                    "type": "text",
                                    "description": "Must not be greater than 32 characters."
                                },
                                {
                                    "key": "email",
                                    "value": "rowan.gulgowski@example.com",
                                    "type": "text",
                                    "description": "Must be a valid email address. Must not be greater than 255 characters."
                                },
                                {
                                    "key": "gst_treatment",
                                    "value": "unregistered",
                                    "type": "text",
                                    "description": "GST registration status. Use unregistered for an Indian business without GST registration and overseas for a contact outside India."
                                },
                                {
                                    "key": "gstin",
                                    "value": "29ABCDE1234F1Z5",
                                    "type": "text",
                                    "description": "15-character Indian GSTIN. Required for registered_regular, registered_composition, and sez. Optional for an overseas contact registered under Indian GST; ignored for unregistered and consumer contacts. The same GSTIN may be used by multiple contacts. Must match the regex \/^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$\/. Must be 15 characters."
                                },
                                {
                                    "key": "pan",
                                    "value": "ABCDE1234F",
                                    "type": "text",
                                    "description": "Optional Indian PAN. Ignored for consumer and overseas contacts. Must match the regex \/^[A-Z]{5}[0-9]{4}[A-Z]$\/. Must be 10 characters."
                                },
                                {
                                    "key": "country",
                                    "value": "United Arab Emirates",
                                    "type": "text",
                                    "description": "Country where the overseas business is registered. Required when gst_treatment is overseas; ignored otherwise. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "foreign_tax_id",
                                    "value": "100123456700003",
                                    "type": "text",
                                    "description": "Optional foreign Tax, VAT, or government-issued business identification number. Used only for overseas contacts. Must not be greater than 64 characters."
                                },
                                {
                                    "key": "latitude",
                                    "value": "17.448583",
                                    "type": "text",
                                    "description": "Optional contact location latitude in decimal degrees, from -90 to 90. Send both latitude and longitude together. Omit both on update to preserve the location; send both as null to remove it. Mobile map pickers submit the selected coordinates here. This field is required when <code>longitude<\/code> is present. Must be between -90 and 90."
                                },
                                {
                                    "key": "longitude",
                                    "value": "78.390803",
                                    "type": "text",
                                    "description": "Optional contact location longitude in decimal degrees, from -180 to 180. Required with latitude; send both fields together, including when clearing them. This field is required when <code>latitude<\/code> is present. Must be between -180 and 180."
                                },
                                {
                                    "key": "address",
                                    "value": "d",
                                    "type": "text",
                                    "description": "Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "billing_address_line_1",
                                    "value": "l",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "billing_address_line_2",
                                    "value": "j",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "billing_city",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 96 characters."
                                },
                                {
                                    "key": "billing_state_code",
                                    "value": "1",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "billing_region",
                                    "value": "Dubai",
                                    "type": "text",
                                    "description": "State, province, emirate, or other first-level region for an overseas billing address. Ignored for contacts in India. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "billing_pincode",
                                    "value": "569775",
                                    "type": "text",
                                    "description": "Must be 6 digits."
                                },
                                {
                                    "key": "billing_postal_code",
                                    "value": "SW1A 1AA",
                                    "type": "text",
                                    "description": "Postal or ZIP code for an overseas billing address. Ignored for contacts in India. Must not be greater than 32 characters."
                                },
                                {
                                    "key": "shipping_same_as_billing",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "shipping_address_line_1",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "shipping_address_line_2",
                                    "value": "g",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "shipping_city",
                                    "value": "z",
                                    "type": "text",
                                    "description": "Must not be greater than 96 characters."
                                },
                                {
                                    "key": "shipping_state_code",
                                    "value": "1",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "shipping_region",
                                    "value": "Dubai",
                                    "type": "text",
                                    "description": "State, province, emirate, or other first-level region for an overseas shipping address. Ignored for contacts in India. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "shipping_pincode",
                                    "value": "569775",
                                    "type": "text",
                                    "description": "Must be 6 digits."
                                },
                                {
                                    "key": "shipping_postal_code",
                                    "value": "SW1A 1AA",
                                    "type": "text",
                                    "description": "Postal or ZIP code for an overseas shipping address. Ignored for contacts in India. Must not be greater than 32 characters."
                                },
                                {
                                    "key": "price_list_id",
                                    "value": "7",
                                    "type": "text",
                                    "description": "Rate card this party buys at. Item lines raised for the party take their rate from it unless the request quotes one. Requires the party pricing feature; leave empty to bill at the item master rate."
                                },
                                {
                                    "key": "default_discount_percent",
                                    "value": "2",
                                    "type": "text",
                                    "description": "Blanket percentage off whatever rate the party would otherwise pay, applied after the rate card. Defaults to 0. Must be at least 0. Must not be greater than 100."
                                },
                                {
                                    "key": "credit_limit",
                                    "value": "50000",
                                    "type": "text",
                                    "description": "Most this customer may owe at any moment, in rupees. Omit or send null for no limit; send 0 to put the party on cash only. Ignored for supplier contacts. A sales invoice or manual khata credit that would take the receivable balance past it is refused with HTTP 422. Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "opening_balance",
                                    "value": "22",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "opening_balance_side",
                                    "value": "receivable",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_balance_date",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "additional_contacts[0][name]",
                                    "value": "Suresh Gupta",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][designation]",
                                    "value": "Accounts",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][phone]",
                                    "value": "9811111111",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][email]",
                                    "value": "accounts@example.com",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "remove_photo",
                                    "value": "",
                                    "type": "text",
                                    "description": "Set true to remove the saved photo. Cannot be combined with a photo upload. Defaults to false."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Customer opening balances are recorded in Accounts receivable; supplier opening balances are recorded in Accounts payable, offset by Owner equity. A customer may also carry a `credit_limit`, the most it may owe at once; sales invoices and manual khata credits past it are refused with HTTP 422.\n\nA business party keeps its primary contact in `contact_person`, `phone` and `email`, and may list more people in `additional_contacts`."
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/contacts\/{id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update a contact and replace its opening-balance journal.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "type",
                                    "value": "customer",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "is_active",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "profile_type",
                                    "value": "consumer",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "name",
                                    "value": "b",
                                    "type": "text",
                                    "description": "Must not be greater than 128 characters."
                                },
                                {
                                    "key": "company_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "contact_person",
                                    "value": "Anita Rao",
                                    "type": "text",
                                    "description": "Primary contact person at a business party. Ignored for consumer contacts. The primary contact phone and email are the contact's own `phone` and `email`. Must not be greater than 128 characters."
                                },
                                {
                                    "key": "phone",
                                    "value": "g",
                                    "type": "text",
                                    "description": "Must not be greater than 32 characters."
                                },
                                {
                                    "key": "email",
                                    "value": "rowan.gulgowski@example.com",
                                    "type": "text",
                                    "description": "Must be a valid email address. Must not be greater than 255 characters."
                                },
                                {
                                    "key": "gst_treatment",
                                    "value": "unregistered",
                                    "type": "text",
                                    "description": "GST registration status. Use unregistered for an Indian business without GST registration and overseas for a contact outside India."
                                },
                                {
                                    "key": "gstin",
                                    "value": "29ABCDE1234F1Z5",
                                    "type": "text",
                                    "description": "15-character Indian GSTIN. Required for registered_regular, registered_composition, and sez. Optional for an overseas contact registered under Indian GST; ignored for unregistered and consumer contacts. The same GSTIN may be used by multiple contacts. Must match the regex \/^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z][1-9A-Z]Z[0-9A-Z]$\/. Must be 15 characters."
                                },
                                {
                                    "key": "pan",
                                    "value": "ABCDE1234F",
                                    "type": "text",
                                    "description": "Optional Indian PAN. Ignored for consumer and overseas contacts. Must match the regex \/^[A-Z]{5}[0-9]{4}[A-Z]$\/. Must be 10 characters."
                                },
                                {
                                    "key": "country",
                                    "value": "United Arab Emirates",
                                    "type": "text",
                                    "description": "Country where the overseas business is registered. Required when gst_treatment is overseas; ignored otherwise. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "foreign_tax_id",
                                    "value": "100123456700003",
                                    "type": "text",
                                    "description": "Optional foreign Tax, VAT, or government-issued business identification number. Used only for overseas contacts. Must not be greater than 64 characters."
                                },
                                {
                                    "key": "latitude",
                                    "value": "17.448583",
                                    "type": "text",
                                    "description": "Optional contact location latitude in decimal degrees, from -90 to 90. Send both latitude and longitude together. Omit both on update to preserve the location; send both as null to remove it. Mobile map pickers submit the selected coordinates here. This field is required when <code>longitude<\/code> is present. Must be between -90 and 90."
                                },
                                {
                                    "key": "longitude",
                                    "value": "78.390803",
                                    "type": "text",
                                    "description": "Optional contact location longitude in decimal degrees, from -180 to 180. Required with latitude; send both fields together, including when clearing them. This field is required when <code>latitude<\/code> is present. Must be between -180 and 180."
                                },
                                {
                                    "key": "address",
                                    "value": "d",
                                    "type": "text",
                                    "description": "Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "billing_address_line_1",
                                    "value": "l",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "billing_address_line_2",
                                    "value": "j",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "billing_city",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 96 characters."
                                },
                                {
                                    "key": "billing_state_code",
                                    "value": "1",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "billing_region",
                                    "value": "Dubai",
                                    "type": "text",
                                    "description": "State, province, emirate, or other first-level region for an overseas billing address. Ignored for contacts in India. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "billing_pincode",
                                    "value": "569775",
                                    "type": "text",
                                    "description": "Must be 6 digits."
                                },
                                {
                                    "key": "billing_postal_code",
                                    "value": "SW1A 1AA",
                                    "type": "text",
                                    "description": "Postal or ZIP code for an overseas billing address. Ignored for contacts in India. Must not be greater than 32 characters."
                                },
                                {
                                    "key": "shipping_same_as_billing",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "shipping_address_line_1",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "shipping_address_line_2",
                                    "value": "g",
                                    "type": "text",
                                    "description": "Must not be greater than 191 characters."
                                },
                                {
                                    "key": "shipping_city",
                                    "value": "z",
                                    "type": "text",
                                    "description": "Must not be greater than 96 characters."
                                },
                                {
                                    "key": "shipping_state_code",
                                    "value": "1",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "shipping_region",
                                    "value": "Dubai",
                                    "type": "text",
                                    "description": "State, province, emirate, or other first-level region for an overseas shipping address. Ignored for contacts in India. Must not be greater than 96 characters."
                                },
                                {
                                    "key": "shipping_pincode",
                                    "value": "569775",
                                    "type": "text",
                                    "description": "Must be 6 digits."
                                },
                                {
                                    "key": "shipping_postal_code",
                                    "value": "SW1A 1AA",
                                    "type": "text",
                                    "description": "Postal or ZIP code for an overseas shipping address. Ignored for contacts in India. Must not be greater than 32 characters."
                                },
                                {
                                    "key": "price_list_id",
                                    "value": "7",
                                    "type": "text",
                                    "description": "Rate card this party buys at. Item lines raised for the party take their rate from it unless the request quotes one. Requires the party pricing feature; leave empty to bill at the item master rate."
                                },
                                {
                                    "key": "default_discount_percent",
                                    "value": "2",
                                    "type": "text",
                                    "description": "Blanket percentage off whatever rate the party would otherwise pay, applied after the rate card. Defaults to 0. Must be at least 0. Must not be greater than 100."
                                },
                                {
                                    "key": "credit_limit",
                                    "value": "50000",
                                    "type": "text",
                                    "description": "Most this customer may owe at any moment, in rupees. Omit or send null for no limit; send 0 to put the party on cash only. Ignored for supplier contacts. A sales invoice or manual khata credit that would take the receivable balance past it is refused with HTTP 422. Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "opening_balance",
                                    "value": "22",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "opening_balance_side",
                                    "value": "receivable",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_balance_date",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "additional_contacts[0][name]",
                                    "value": "Suresh Gupta",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][designation]",
                                    "value": "Accounts",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][phone]",
                                    "value": "9811111111",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "additional_contacts[0][email]",
                                    "value": "accounts@example.com",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "remove_photo",
                                    "value": "",
                                    "type": "text",
                                    "description": "Set true to remove the saved photo. Cannot be combined with a photo upload. Defaults to false."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                },
                                {
                                    "key": "_method",
                                    "value": "PUT",
                                    "type": "text"
                                }
                            ]
                        },
                        "description": "Omit `additional_contacts` to leave the list as it is; send the complete list to replace it, or an empty array to remove every additional contact."
                    },
                    "response": []
                },
                {
                    "name": "DELETE api\/v1\/businesses\/{business}\/contacts\/{id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the contact."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Download the party import template.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contact-imports\/template",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contact-imports\/template",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "A CSV carrying the documented headers and two example rows. The headers are not the only\nones accepted \u2014 common labels from other billing software are recognised too, and a\n`column_map` on upload settles anything that cannot be guessed."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The party import template as CSV.",
                            "name": "The party import template as CSV."
                        }
                    ]
                },
                {
                    "name": "Upload a party file and stage it for review.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contact-imports",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contact-imports",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "duplicate_mode",
                                    "value": "skip",
                                    "type": "text",
                                    "description": "What to do with a row naming a party the books already hold: `skip`, `update`, or `create`. Defaults to `skip`."
                                },
                                {
                                    "key": "column_map[name]",
                                    "value": "Party Name",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "column_map[phone]",
                                    "value": "Mobile No",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "file",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Creates no contacts. The file is stored, checksummed, and checked row by row away from this\nrequest, so the response may come back still `uploaded`; poll the read endpoint until the\nstatus settles on `validated` or `invalid`.\n\n`profile_type` and `gst_treatment` need not be in the file. A column stating either always\nwins; otherwise a row with a GSTIN is taken as a registered business, one with a company\nname as an unregistered business, and one with neither as a walk-in consumer.\n\nAn `Other Contacts` column lists a business party's additional contacts in one cell, each\nperson as `Name | Role | Phone | Email` and people separated by `;`. A file without the\ncolumn leaves an updated party's additional contacts alone; with it, the cell replaces them,\nand a blank cell removes them."
                    },
                    "response": []
                },
                {
                    "name": "Read a staged import.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contactImport_uuid",
                                    "key": "contactImport_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the status, the row counts, every validation error with its row number in the\nsheet, and a preview sample saying what each row would do."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create and update every checked row.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid\/commit",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid\/commit",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contactImport_uuid",
                                    "key": "contactImport_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "The whole file is written in one transaction: a failure anywhere leaves the party list\nexactly as it was. Rows carrying an opening balance record a dated khata entry, never a\nsilent balance on the record."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This file has not passed validation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This file has already been imported.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Discard a staged import.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contact-imports\/:contactImport_uuid",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contactImport_uuid",
                                    "key": "contactImport_uuid",
                                    "value": "6ff8f7f6-1eb3-3525-be4a-3932c805afed",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Removes the stored file and its checked rows. An import that has already created parties\ncannot be discarded, because it is the record of what was loaded."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"An imported file cannot be discarded.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Khata ledger",
            "description": "",
            "item": [
                {
                    "name": "GET api\/v1\/businesses\/{business}\/ledger-entries",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/ledger-entries",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/ledger-entries",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_id\":16,\"kind\":\"n\",\"from\":\"2026-01-15\",\"to\":\"2026-01-15\",\"per_page\":22}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a manual khata adjustment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/ledger-entries",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/ledger-entries",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_id\":16,\"kind\":\"customer_credit\",\"amount\":22,\"occurred_on\":\"2026-01-15\",\"reference\":\"g\",\"note\":\"z\"}"
                        },
                        "description": "The receivable or payable adjustment is offset to Owner equity. Use invoice, purchase, expense, and payment endpoints for operational transactions."
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/ledger-entries\/{ledgerEntry_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/ledger-entries\/:ledgerEntry_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/ledger-entries\/:ledgerEntry_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "ledgerEntry_id",
                                    "key": "ledgerEntry_id",
                                    "value": 1,
                                    "description": "The ID of the ledgerEntry."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Reverse a manual khata adjustment and its journal.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/ledger-entries\/:ledgerEntry_id\/reverse",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/ledger-entries\/:ledgerEntry_id\/reverse",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "ledgerEntry_id",
                                    "key": "ledgerEntry_id",
                                    "value": 1,
                                    "description": "The ID of the ledgerEntry."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"b\"}"
                        },
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Inventory",
            "description": "\nSuppliers of an item: the terms agreed with each (rate, lead time, minimum order, their own\nitem code, preferred flag) beside what purchase invoices show was actually billed.",
            "item": [
                {
                    "name": "List item transactions, newest first.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/transactions",
                            "query": [
                                {
                                    "key": "limit",
                                    "value": "10",
                                    "description": "Number of transactions to return, 1-100. Defaults to 25.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/transactions?limit=10",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"limit\":1}"
                        },
                        "description": "Includes stock movements and invoices, purchase invoices, and returns with no\nrecorded movement for this item, including untracked goods and services.\nDocuments are restricted by tenant, workspace role, and plan. A document with\na stock movement is represented only by its movements.\nFully cancelled manual adjustments and their exact same-date, same-warehouse\nreversal are omitted; their audit records remain stored."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Item stock ledger.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/ledger",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-09-01",
                                    "description": "date Movements on or after this date.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-09-30",
                                    "description": "date Movements on or before this date.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "purchase",
                                    "description": "Narrow to one document type: sale, purchase, sales_return, purchase_return, delivery_challan, adjustment, opening, or transfer.",
                                    "disabled": false
                                },
                                {
                                    "key": "warehouse",
                                    "value": "1",
                                    "description": "Only movements in this warehouse. Closing stock then becomes that warehouse's balance.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "date",
                                    "description": "date (default), unit_cost, or total_cost.",
                                    "disabled": false
                                },
                                {
                                    "key": "direction",
                                    "value": "desc",
                                    "description": "desc (default) or asc.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Rows per page, 1-100. Defaults to 25.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/ledger?from=2026-09-01&to=2026-09-30&type=purchase&warehouse=1&sort=date&direction=desc&per_page=25&page=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": "Effective stock movements of the item with their source documents, party, quantity in and out,\nthe stock held straight after it, and its cost. Closing stock is anchored to the item's\ncurrent stock, so the newest row always matches `stock_quantity`. `meta.summary` totals\nthe filtered movements. Document links respect workspace role and plan: `web_url` is null\nwhen the caller may not open that document.\nFully cancelled manual adjustments and their exact same-date, same-warehouse reversal\nare omitted from rows, totals and closing balances. The original audit records remain.\nReal opening stock, active adjustments, sales voids and invoice revisions remain visible."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"occurred_on\":\"2026-10-02\",\"movement_type\":\"opening\",\"label\":\"Opening stock\",\"documents\":[],\"party\":null,\"stock_in\":12.5,\"stock_out\":0,\"closing_stock\":12.5,\"unit\":\"pcs\",\"unit_cost_paise\":8000,\"total_cost_paise\":100000,\"batch_number\":null,\"warehouse\":{\"id\":1,\"name\":\"Main warehouse\",\"location\":null},\"reason\":\"Opening stock\",\"can_edit_opening_stock\":true}],\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1,\"summary\":{\"in_quantity\":12.5,\"in_value_paise\":100000,\"out_quantity\":0,\"out_value_paise\":0,\"net_quantity\":12.5,\"net_value_paise\":100000,\"count\":1},\"stock_quantity\":12.5,\"track_inventory\":true}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Correct opening stock.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/opening-stock\/:movement_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/opening-stock\/:movement_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "movement_id",
                                    "key": "movement_id",
                                    "value": 1,
                                    "description": "Opening stock movement ID from the item's ledger."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"quantity\":12.5,\"unit_cost\":80,\"reason\":\"Corrected the initial stock count\"}"
                        },
                        "description": "Replaces this opening entry's quantity and cost, retaining its date, warehouse, and batch.\nStock and balanced Inventory \/ Owner equity journals are corrected atomically. Original\njournals and before\/after values remain in the audit trail. No current-stock adjustment\nis created. Zero quantity removes the entry from ledger rows and totals. Corrections that\nwould make subsequent item, warehouse, or batch stock negative return 422. Only item-sourced,\nunreversed opening entries are supported; serialised items and stock placed into batches\nafter opening must use their unit\/batch workflows. Requires inventory feature and permission."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"quantity\":12.5,\"unit_cost_paise\":8000,\"total_cost_paise\":100000,\"stock_quantity\":12.5}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This opening quantity is needed by later stock movements.\",\"errors\":{\"quantity\":[\"This opening quantity is needed by later stock movements.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Remove opening stock.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/opening-stock\/:movement_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/opening-stock\/:movement_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "movement_id",
                                    "key": "movement_id",
                                    "value": 1,
                                    "description": "Opening stock movement ID."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Opening stock was entered twice\"}"
                        },
                        "description": "Sets this opening entry's quantity and value to zero and omits it from ledger rows,\ntransaction history, and totals. Adjusts current stock in its original warehouse and batch,\nreverses its opening journal on the original date, and retains the audit trail. Does not\ndelete purchases or sales. The same eligibility and nonnegative-stock rules as correction\napply. Repeating removal is safe. Requires inventory feature and permission."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List an item's suppliers.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/suppliers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/suppliers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Linked suppliers and every supplier a purchase invoice shows the item was bought from,\npreferred first, then linked, then most recently bought from. A supplier seen only in\npurchase history has `linked` false and a null `id`; link it with the create endpoint."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Link a supplier to an item.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/suppliers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/suppliers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_id\":17,\"supplier_sku\":\"MC-TAP-01\",\"purchase_price\":110.5,\"minimum_order_quantity\":12,\"lead_time_days\":7,\"is_preferred\":true,\"notes\":\"Delivers on Tuesdays.\"}"
                        },
                        "description": "Marking a supplier preferred clears the flag on the item's other suppliers."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This supplier is already linked to the item.\",\"errors\":{\"contact_id\":[\"This supplier is already linked to the item.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update the terms agreed with a supplier.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/suppliers\/:itemSupplier_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/suppliers\/:itemSupplier_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemSupplier_id",
                                    "key": "itemSupplier_id",
                                    "value": 1,
                                    "description": "The ID of the itemSupplier."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_id\":16,\"supplier_sku\":\"n\",\"purchase_price\":108,\"minimum_order_quantity\":16,\"lead_time_days\":5,\"is_preferred\":true,\"notes\":\"i\"}"
                        },
                        "description": "Only the fields sent change. Send a field as null to clear it."
                    },
                    "response": []
                },
                {
                    "name": "Unlink a supplier from an item.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/suppliers\/:itemSupplier_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/suppliers\/:itemSupplier_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemSupplier_id",
                                    "key": "itemSupplier_id",
                                    "value": 1,
                                    "description": "The ID of the itemSupplier."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Purchase history is kept, so the supplier still appears in the list with `linked` false\nif a purchase invoice shows the item was bought from them."
                    },
                    "response": []
                },
                {
                    "name": "List warehouses.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/warehouses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/warehouses",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Default first, then by name, including inactive ones."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a warehouse.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/warehouses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/warehouses",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Sanitary godown\",\"location\":\"Gomaty Nagar\",\"address\":\"12 Station Road, Lucknow\",\"is_default\":false,\"is_active\":false}"
                        },
                        "description": "Marking it default takes the flag off the current default."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Another warehouse already has this name.\",\"errors\":{\"name\":[\"Another warehouse already has this name.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update a warehouse.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/warehouses\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/warehouses\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the warehouse."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"location\":\"n\",\"address\":\"g\",\"is_default\":false,\"is_active\":false}"
                        },
                        "description": "Only the fields sent change. The default warehouse cannot be deactivated or un-defaulted\ndirectly: make another warehouse the default instead. A warehouse holding stock cannot be\ndeactivated until its stock is transferred out."
                    },
                    "response": []
                },
                {
                    "name": "Delete a warehouse.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/warehouses\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/warehouses\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the warehouse."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Only a warehouse that is not the default and never held stock can be deleted; otherwise\ndeactivate it."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This warehouse has stock history. Deactivate it instead.\",\"errors\":{\"warehouse\":[\"This warehouse has stock history. Deactivate it instead.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Transfer stock between warehouses.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/stock-transfers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/stock-transfers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"from_warehouse_id\":1,\"to_warehouse_id\":2,\"quantity\":5,\"transferred_on\":\"2026-09-29\",\"note\":\"Moved for the weekend sale\",\"item_batch_id\":3,\"serial_numbers\":[\"IMEI-001\"]}"
                        },
                        "description": "Moves stock of one item from one warehouse to another. It records a `transfer_out` and a\n`transfer_in` movement in the item ledger; the item's total stock, cost, and accounts are\nunchanged. The source warehouse must hold the quantity."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Main warehouse holds only 2 PCS of Tap.\",\"errors\":{\"quantity\":[\"Main warehouse holds only 2 PCS of Tap.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List an item's batches.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/batches",
                            "query": [
                                {
                                    "key": "in_stock",
                                    "value": "1",
                                    "description": "Only batches still holding stock.",
                                    "disabled": false
                                },
                                {
                                    "key": "sellable",
                                    "value": "1",
                                    "description": "Only batches that can be billed today: in stock, not expired, not on hold or recalled, and \u2014 when the business blocks short expiry \u2014 clear of the minimum shelf life.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/batches?in_stock=1&sellable=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"in_stock\":false,\"sellable\":false}"
                        },
                        "description": "Ordered first-expiry-first-out, so the first sellable row is the lot the counter should\npre-select. Expired lots are listed \u2014 the shop still has to see and clear them \u2014 but\ncarry `is_expired`, and they can never be billed."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Open a batch, optionally with the stock already on the shelf.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/batches",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/batches",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"warehouse_id\":16,\"batch_number\":\"n\",\"expiry_date\":\"2026-01-15\",\"manufactured_on\":\"2026-01-15\",\"mrp\":7,\"purchase_price\":16,\"quantity\":17}"
                        },
                        "description": "Batches are usually created implicitly by a purchase invoice. This is for opening stock\nand for a lot the shop is recording by hand. A positive `quantity` records an opening stock\nmovement and its inventory journal, exactly as opening stock on the item master does."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Turn on batch tracking for this item first.\",\"errors\":{\"item_id\":[\"Turn on batch tracking for this item first.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Correct a batch, and adjust the stock it holds.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemBatch_id",
                                    "key": "itemBatch_id",
                                    "value": 1,
                                    "description": "The ID of the itemBatch."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"warehouse_id\":16,\"batch_number\":\"n\",\"expiry_date\":\"2026-01-15\",\"manufactured_on\":\"2026-01-15\",\"mrp\":7,\"purchase_price\":16,\"quantity\":17,\"status\":\"on_hold\",\"status_reason\":\"Customer complaint, checking the carton\"}"
                        },
                        "description": "A changed `quantity` records an inventory adjustment for the difference, the same journal an\nitem-master stock correction records, so the books follow the shelf.\n\n`status` pulls the lot from sale or puts it back. `on_hold` and `recalled` both stop it being\nbilled \u2014 on invoices, POS, and delivery challans \u2014 while the stock stays on the shelf and in\nthe books; a `status_reason` is required for either and is shown to whoever tries to sell\nthe lot. `available` releases it. Sales returns into the lot and purchase returns out of it\nstill work, so recalled stock can go back to the supplier."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Say why this batch is being held, so the counter knows.\",\"errors\":{\"status_reason\":[\"Say why this batch is being held, so the counter knows.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Remove an empty batch.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemBatch_id",
                                    "key": "itemBatch_id",
                                    "value": 1,
                                    "description": "The ID of the itemBatch."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "A lot that ever held stock is part of the audit trail, so only an empty batch with no\nmovements against it can be deleted. Everything else stays and simply reads as zero."
                    },
                    "response": []
                },
                {
                    "name": "Write off stock from a batch.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id\/write-offs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/batches\/:itemBatch_id\/write-offs",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemBatch_id",
                                    "key": "itemBatch_id",
                                    "value": 1,
                                    "description": "The ID of the itemBatch."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"quantity\":4,\"reason\":\"expired\",\"note\":\"Destroyed with the chemists' association\"}"
                        },
                        "description": "For goods leaving without a sale \u2014 expired, damaged, or recalled stock being destroyed. The\nquantity leaves the lot and the item, a `write_off` stock movement is recorded, and the cost\nat the item's weighted average moves from Inventory to the Stock written off expense\naccount. Any lot may be written off, including an expired, held, or recalled one. It cannot\nbe undone; stock found again is added back with a batch quantity correction."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"batch\":{\"id\":18,\"batch_number\":\"AMX-2291\",\"quantity\":0,\"status\":\"available\",\"sale_state\":\"empty\",\"is_sellable\":false},\"write_off\":{\"quantity\":4,\"value_paise\":32000,\"reason\":\"expired\",\"note\":null,\"stock_movement_id\":311,\"occurred_on\":\"2026-09-28\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Batch AMX-2291 holds only 4 \u2014 you cannot write off more than that.\",\"errors\":{\"quantity\":[\"Batch AMX-2291 holds only 4 \u2014 you cannot write off more than that.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List an item's units.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/serials",
                            "query": [
                                {
                                    "key": "on_shelf",
                                    "value": "1",
                                    "description": "Only units that can be billed: in stock or returned.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "sold",
                                    "description": "One exact status: in_stock, sold, returned, or void.",
                                    "disabled": false
                                },
                                {
                                    "key": "q",
                                    "value": "3567",
                                    "description": "Match part of a serial number.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/serials?on_shelf=1&status=sold&q=3567",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"on_shelf\":false,\"q\":\"b\"}"
                        },
                        "description": "Ordered oldest first, so the shelf clears in the order it filled and the first row is a\nsensible default pick. Sold and written-off units are listed too \u2014 the shop still has to\nsee them \u2014 but carry `on_shelf: false` and can never be billed."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Search every unit in the catalogue.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-serials",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "356938",
                                    "description": "Part or all of a serial number.",
                                    "disabled": false
                                },
                                {
                                    "key": "item_id",
                                    "value": "12",
                                    "description": "Narrow to one item.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "sold",
                                    "description": "One exact status: in_stock, sold, returned, or void.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-serials?q=356938&item_id=12&status=sold",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"q\":\"b\",\"item_id\":16}"
                        },
                        "description": "This is the lookup the counter actually uses: a customer walks in with a handset and the\nshop needs to know whether it sold it, to whom, when, and whether cover still runs.\nSerial history and item names remain available after the item is soft deleted."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "One unit by its exact serial number.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-serials\/:serial",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-serials\/:serial",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "serial",
                                    "key": "serial",
                                    "value": "356938035643809",
                                    "description": "The serial number as scanned."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Exact match only, ignoring case and surrounding space \u2014 a scanner that silently picks the\nnearest handset is worse than one that says it does not know this unit. A miss answers\n`404` carrying the code back, so the app can offer to record it.\nSerial history and item names remain available after the item is soft deleted."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"No unit is recorded with this serial number.\",\"serial_number\":\"356938035643809\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record units the shop is already holding.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/serials",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/serials",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"warehouse_id\":16,\"serial_numbers\":[\"356938035643809\",\"356938035643810\"],\"warranty_until\":\"2027-09-13\",\"received_on\":\"2026-01-15\"}"
                        },
                        "description": "Units normally arrive on a purchase invoice, which captures the serial off each box. This\nis for opening stock and for a unit being recorded by hand. Every serial listed records an\nopening stock movement and its inventory journal, exactly as opening stock does."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Turn on serial tracking for this item first.\",\"errors\":{\"item_id\":[\"Turn on serial tracking for this item first.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Correct one unit.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/serials\/:itemSerial_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/serials\/:itemSerial_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemSerial_id",
                                    "key": "itemSerial_id",
                                    "value": 1,
                                    "description": "The ID of the itemSerial."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"serial_number\":\"b\",\"warranty_until\":\"2026-01-15\",\"received_on\":\"2026-01-15\"}"
                        },
                        "description": "The serial number and its warranty date can be corrected \u2014 a mistyped IMEI is a real and\ncommon problem. Where the unit *is* cannot: that follows the documents it moved on, and a\nstatus typed by hand would put the shelf and the books out of step."
                    },
                    "response": []
                },
                {
                    "name": "Remove a unit that was never sold.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/serials\/:itemSerial_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/serials\/:itemSerial_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                },
                                {
                                    "id": "itemSerial_id",
                                    "key": "itemSerial_id",
                                    "value": 1,
                                    "description": "The ID of the itemSerial."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "A unit that has been billed is part of the audit trail and stays, however it was later\nreturned. A unit on the shelf can be removed \u2014 a serial typed twice, or a box that turned\nout to be empty \u2014 and doing so takes it out of stock with an adjustment, not silently."
                    },
                    "response": []
                },
                {
                    "name": "One item by its exact barcode.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/by-barcode\/:code",
                            "query": [
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Customer id. Adds `party_price`, the rate that party pays under its rate card.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/by-barcode\/:code?contact=42",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "8901234567890",
                                    "description": "The barcode as scanned."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact\":16}"
                        },
                        "description": "The catalogue search is a guess machine: it matches part of a name, part of an SKU, and\nhands back a list. That is right for a person typing \"parle\" and wrong for a scanner. An\napp that silently bills the first of three near-matches costs the shop a wrong bill and a\nstock count that stops tallying, and nobody notices for a month \u2014 so this answers with one\nitem or with nothing, and never guesses.\n\nMatching ignores surrounding space and reads a GS1 code the way GS1 does, so the 12-digit\nUPC-A a camera reports and the 13-digit EAN-13 printed on the same pack find the same\nitem. A miss answers 404 carrying the code back, so the app can offer to create an item\nwith it rather than make the shopkeeper retype thirteen digits off a crumpled packet.\n\nLots and units ride along exactly as they do in the POS feed, because a batched or\nserialised item cannot be billed without naming which one leaves, and the counter has to\nwork without signal."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"No item is recorded with this barcode.\",\"barcode\":\"8901234567890\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "One item by the QR sticker the shop printed for it.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/by-qr",
                            "query": [
                                {
                                    "key": "code",
                                    "value": "https:\/\/dukanam.com\/q\/7Fq2bXm9KdLp3RtVw8ZaCe",
                                    "description": "The QR payload as scanned \u2014 the whole URL, or just the token.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Customer id. Adds `party_price`, the rate that party pays under its rate card.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/by-qr?code=https%3A%2F%2Fdukanam.com%2Fq%2F7Fq2bXm9KdLp3RtVw8ZaCe&contact=42",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"code\":\"b\",\"contact\":22}"
                        },
                        "description": "The companion to scanning a barcode, for the half of the shelf a barcode can never cover.\nA barcode belongs to whoever made the pack, so loose rice, re-packed dal and the shop's\nown mixture have no code to scan and never will; a QR is the shop's own label for its own\ngoods, so Dukanam mints it and the counter can scan it like anything else.\n\nSend the payload exactly as the scanner read it. A Dukanam sticker encodes a URL, so that\nis usually what arrives, but the bare token is accepted too \u2014 a client should never have\nto take a URL apart to scan a label. A payload that is not one of ours is a miss, not an\nerror, and is never guessed at: like the barcode endpoint, this answers with one item or\nwith nothing.\n\nThe code travels as a query parameter, not in the path, and that is the whole reason this\nendpoint is shaped differently from `items\/by-barcode\/{code}`. A barcode is usually digits\nand only rarely holds a slash; a QR payload is a URL and holds slashes every time, and an\nencoded slash in a path segment is refused or quietly collapsed by a fair number of\nproxies. Percent-encode the value as you would any query parameter.\n\nA token is minted per item and never reissued, because once a sticker is on a shelf it is\nout of our hands and a rotated token would strand every label already stuck down. Tokens\nare unique platform-wide but resolved within the workspace in the URL, so one shop's\nsticker cannot read an item out of another shop.\n\nLots and units ride along exactly as they do for a barcode scan, because a batched or\nserialised item cannot be billed without naming which one leaves."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"No item is recorded with this QR code.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Barcode labels for one item or for many.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/barcode-labels",
                            "query": [
                                {
                                    "key": "items[0]",
                                    "value": "12",
                                    "description": "Item ids to label. Required on the collection route, ignored when the URL already names an item. Maximum 200.",
                                    "disabled": false
                                },
                                {
                                    "key": "items[1]",
                                    "value": "19",
                                    "description": "Item ids to label. Required on the collection route, ignored when the URL already names an item. Maximum 200.",
                                    "disabled": false
                                },
                                {
                                    "key": "copies",
                                    "value": "10",
                                    "description": "Copies of every label, 1-100. Send `copies[]` instead to set a count per item.",
                                    "disabled": false
                                },
                                {
                                    "key": "layout",
                                    "value": "a4-65",
                                    "description": "Stationery to lay the sheet out on: a4-65, a4-40, a4-24, roll-50x25, roll-38x25 or custom (one sticker per page). Defaults to a4-65.",
                                    "disabled": false
                                },
                                {
                                    "key": "width_mm",
                                    "value": "50",
                                    "description": "Required for layout=custom. Sticker and page width in millimetres, 25-200. Ignored for presets.",
                                    "disabled": false
                                },
                                {
                                    "key": "height_mm",
                                    "value": "30",
                                    "description": "Required for layout=custom. Sticker and page height in millimetres, 20-200. Must fit selected text plus a QR of at least 14mm or bars of at least 5mm; otherwise returns 422. Ignored for presets.",
                                    "disabled": false
                                },
                                {
                                    "key": "code_kind",
                                    "value": "qr",
                                    "description": "`barcode` to reprint the code the item already carries, or `qr` to print a Dukanam QR sticker. Defaults to barcode. A barcode run skips items holding no code; a QR run skips nothing, because the token is minted for the item.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_name",
                                    "value": "1",
                                    "description": "Print the item name. Defaults to true.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_price",
                                    "value": "1",
                                    "description": "Print the selling price. Defaults to true.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_mrp",
                                    "value": "",
                                    "description": "Print the MRP when the item carries one. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "show_sku",
                                    "value": "",
                                    "description": "Print the SKU. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "show_business",
                                    "value": "",
                                    "description": "Print the shop name. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "format",
                                    "value": "json",
                                    "description": "`json` for per-item SVG, or `pdf` for the laid-out sheet. Defaults to json.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/barcode-labels?items%5B0%5D=12&items%5B1%5D=19&copies=10&layout=a4-65&width_mm=50&height_mm=30&code_kind=qr&show_name=1&show_price=1&show_mrp=&show_sku=&show_business=&format=json",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"items\":[16],\"copies\":[22],\"layout\":\"a4-65\",\"width_mm\":25,\"height_mm\":21,\"code_kind\":\"barcode\",\"show_business\":false,\"show_name\":false,\"show_sku\":false,\"show_price\":false,\"show_mrp\":false,\"format\":\"json\",\"search\":\"m\"}"
                        },
                        "description": "Two shapes of the same job. `GET items\/{item}\/barcode-labels` prints one item's sticker \u2014\nwhat an app offers from an item screen after assigning a barcode. `GET items\/barcode-labels?items[]=`\nprints a run of them, which is what a shop actually does: a delivery arrives and forty\nlines need shelf labels before opening. Both are this one endpoint, so a client that\nlearns the options once can print either.\n\n`format=json`, the default, returns the code as an inline SVG per item together with the\nchosen stationery's measurements, so an app can lay the sheet out itself or send one\nlabel to a Bluetooth label printer. `format=pdf` returns the whole sheet already laid out\non the chosen stationery, for handing to the platform print service.\n\n`code_kind` chooses what the sticker carries, and the two are not interchangeable. A\nbarcode reprints a number somebody else issued for a pack they made, so an item that\nholds no barcode cannot have one invented for it and is skipped. A QR carries a token\nDukanam mints for the item, so it labels the loose rice, the re-packed dal and everything\nelse no manufacturer ever numbered \u2014 a QR run skips nothing. Scan them back with\n`items\/by-barcode\/{code}` and `items\/by-qr?code=` respectively.\n\nCopies are per item, because a delivery is never uniform: `copies[12]=6&copies[19]=2`\nprints six of one line and two of another. A single `copies=10` prints ten of everything.\nItems not named in the map print once.\n\nAn item that cannot be labelled is never silently dropped from the run. It comes back in\n`meta.skipped` with a reason, so a shopkeeper counting stickers against a delivery note is\ntold which two are missing and why, rather than finding out at the shelf."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"That would print 720 labels. Print at most 500 at a time.\",\"errors\":{\"copies\":[\"That would print 720 labels. Print at most 500 at a time.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Barcode labels for one item or for many.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/barcode-labels",
                            "query": [
                                {
                                    "key": "items[0]",
                                    "value": "12",
                                    "description": "Item ids to label. Required on the collection route, ignored when the URL already names an item. Maximum 200.",
                                    "disabled": false
                                },
                                {
                                    "key": "items[1]",
                                    "value": "19",
                                    "description": "Item ids to label. Required on the collection route, ignored when the URL already names an item. Maximum 200.",
                                    "disabled": false
                                },
                                {
                                    "key": "copies",
                                    "value": "10",
                                    "description": "Copies of every label, 1-100. Send `copies[]` instead to set a count per item.",
                                    "disabled": false
                                },
                                {
                                    "key": "layout",
                                    "value": "a4-65",
                                    "description": "Stationery to lay the sheet out on: a4-65, a4-40, a4-24, roll-50x25, roll-38x25 or custom (one sticker per page). Defaults to a4-65.",
                                    "disabled": false
                                },
                                {
                                    "key": "width_mm",
                                    "value": "50",
                                    "description": "Required for layout=custom. Sticker and page width in millimetres, 25-200. Ignored for presets.",
                                    "disabled": false
                                },
                                {
                                    "key": "height_mm",
                                    "value": "30",
                                    "description": "Required for layout=custom. Sticker and page height in millimetres, 20-200. Must fit selected text plus a QR of at least 14mm or bars of at least 5mm; otherwise returns 422. Ignored for presets.",
                                    "disabled": false
                                },
                                {
                                    "key": "code_kind",
                                    "value": "qr",
                                    "description": "`barcode` to reprint the code the item already carries, or `qr` to print a Dukanam QR sticker. Defaults to barcode. A barcode run skips items holding no code; a QR run skips nothing, because the token is minted for the item.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_name",
                                    "value": "1",
                                    "description": "Print the item name. Defaults to true.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_price",
                                    "value": "1",
                                    "description": "Print the selling price. Defaults to true.",
                                    "disabled": false
                                },
                                {
                                    "key": "show_mrp",
                                    "value": "",
                                    "description": "Print the MRP when the item carries one. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "show_sku",
                                    "value": "",
                                    "description": "Print the SKU. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "show_business",
                                    "value": "",
                                    "description": "Print the shop name. Defaults to false.",
                                    "disabled": true
                                },
                                {
                                    "key": "format",
                                    "value": "json",
                                    "description": "`json` for per-item SVG, or `pdf` for the laid-out sheet. Defaults to json.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/barcode-labels?items%5B0%5D=12&items%5B1%5D=19&copies=10&layout=a4-65&width_mm=50&height_mm=30&code_kind=qr&show_name=1&show_price=1&show_mrp=&show_sku=&show_business=&format=json",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"items\":[16],\"copies\":[22],\"layout\":\"a4-65\",\"width_mm\":25,\"height_mm\":21,\"code_kind\":\"barcode\",\"show_business\":false,\"show_name\":false,\"show_sku\":false,\"show_price\":false,\"show_mrp\":false,\"format\":\"json\",\"search\":\"m\"}"
                        },
                        "description": "Two shapes of the same job. `GET items\/{item}\/barcode-labels` prints one item's sticker \u2014\nwhat an app offers from an item screen after assigning a barcode. `GET items\/barcode-labels?items[]=`\nprints a run of them, which is what a shop actually does: a delivery arrives and forty\nlines need shelf labels before opening. Both are this one endpoint, so a client that\nlearns the options once can print either.\n\n`format=json`, the default, returns the code as an inline SVG per item together with the\nchosen stationery's measurements, so an app can lay the sheet out itself or send one\nlabel to a Bluetooth label printer. `format=pdf` returns the whole sheet already laid out\non the chosen stationery, for handing to the platform print service.\n\n`code_kind` chooses what the sticker carries, and the two are not interchangeable. A\nbarcode reprints a number somebody else issued for a pack they made, so an item that\nholds no barcode cannot have one invented for it and is skipped. A QR carries a token\nDukanam mints for the item, so it labels the loose rice, the re-packed dal and everything\nelse no manufacturer ever numbered \u2014 a QR run skips nothing. Scan them back with\n`items\/by-barcode\/{code}` and `items\/by-qr?code=` respectively.\n\nCopies are per item, because a delivery is never uniform: `copies[12]=6&copies[19]=2`\nprints six of one line and two of another. A single `copies=10` prints ten of everything.\nItems not named in the map print once.\n\nAn item that cannot be labelled is never silently dropped from the run. It comes back in\n`meta.skipped` with a reason, so a shopkeeper counting stickers against a delivery note is\ntold which two are missing and why, rather than finding out at the shelf."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"That would print 720 labels. Print at most 500 at a time.\",\"errors\":{\"copies\":[\"That would print 720 labels. Print at most 500 at a time.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Take an item out of circulation, or put it back.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:item_id\/active",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:item_id\/active",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "item_id",
                                    "key": "item_id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_active\":false}"
                        },
                        "description": "Its own endpoint rather than a field on update, which reconciles the submitted quantity\nagainst the shelf and can record a stock adjustment and a journal with it. Retiring a line is\na one-word decision and must not be able to move stock. An inactive item keeps its stock and\nevery document it already sits on; it is simply no longer offered at the counter or when\nraising a new document."
                    },
                    "response": []
                },
                {
                    "name": "Assign classifications to multiple items atomically.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/organisation",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/organisation",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"item_ids\":[1,2],\"category_id\":1,\"subcategory_id\":2,\"brand_id\":3,\"manufacturer_id\":4}"
                        },
                        "description": "Inventory permission required. Omitted fields stay unchanged; null clears that field.\nChanging category clears the old subcategory unless a matching new subcategory is supplied."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"updated\":2}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List items.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items",
                            "query": [
                                {
                                    "key": "category_id",
                                    "value": "1",
                                    "description": "Filter by a tenant-owned category.",
                                    "disabled": false
                                },
                                {
                                    "key": "subcategory_id",
                                    "value": "2",
                                    "description": "Filter by a tenant-owned subcategory.",
                                    "disabled": false
                                },
                                {
                                    "key": "brand_id",
                                    "value": "3",
                                    "description": "Filter by a tenant-owned brand.",
                                    "disabled": false
                                },
                                {
                                    "key": "manufacturer_id",
                                    "value": "4",
                                    "description": "Filter by a tenant-owned manufacturer.",
                                    "disabled": false
                                },
                                {
                                    "key": "gst_rate_id",
                                    "value": "1",
                                    "description": "Filter by a tenant-owned GST percentage master.",
                                    "disabled": false
                                },
                                {
                                    "key": "attention",
                                    "value": "warranty",
                                    "description": "low_stock, expiring (next 30 days), expired, uncategorised or warranty.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Customer id. Adds `party_price` to every item, showing what that party pays under its rate card.",
                                    "disabled": false
                                },
                                {
                                    "key": "supplier",
                                    "value": "17",
                                    "description": "Supplier contact id, or `preferred`. Adds `supplier_price` to every item that supplier has an agreed or last-billed rate for, to open a purchase line at.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Which items to list by state: `all` (the default) lists both, with inactive items last, `active` lists only items the shop still offers, and `inactive` lists only inactive ones. Use `active` when building a picker.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items?category_id=1&subcategory_id=2&brand_id=3&manufacturer_id=4&gst_rate_id=1&attention=warranty&contact=42&supplier=17&status=active",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"search\":\"b\",\"low_stock\":false,\"status\":\"all\",\"contact\":22,\"per_page\":7}"
                        },
                        "description": "Item resources include `sale_tax` (enabled, tax_rate_basis_points, cess_rate_basis_points, price_includes_tax). Use this for new sale previews. Raw catalogue tax metadata is retained for history and future registration; it never authorizes GST collection. Unregistered businesses have sale_tax.enabled=false, zero sale rates and price_includes_tax=false."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create an item and record opening inventory.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "category_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "category_name",
                                    "value": "Electrical",
                                    "type": "text",
                                    "description": "Optional category to create or reuse."
                                },
                                {
                                    "key": "subcategory_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "subcategory_name",
                                    "value": "LED lighting",
                                    "type": "text",
                                    "description": "Optional subcategory under the selected category."
                                },
                                {
                                    "key": "brand_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "brand_name",
                                    "value": "Sample Brand",
                                    "type": "text",
                                    "description": "Optional brand to create or reuse."
                                },
                                {
                                    "key": "manufacturer_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "manufacturer_name",
                                    "value": "Sample Manufacturer",
                                    "type": "text",
                                    "description": "Optional manufacturer to create or reuse."
                                },
                                {
                                    "key": "gst_rate_id",
                                    "value": "1",
                                    "type": "text",
                                    "description": "Optional business GST percentage master. Product tax metadata does not authorize collecting GST; unregistered\/composition sales apply zero. Numeric inputs only create percentage masters for Regular GST businesses. Overrides tax_rate for taxable items; cross-business IDs return 422."
                                },
                                {
                                    "key": "warranty_duration",
                                    "value": "6",
                                    "type": "text",
                                    "description": "Optional whole-number duration."
                                },
                                {
                                    "key": "warranty_unit",
                                    "value": "months",
                                    "type": "text",
                                    "description": "days, months or years; required with warranty_duration."
                                },
                                {
                                    "key": "warranty_provider",
                                    "value": "shop",
                                    "type": "text",
                                    "description": "brand, manufacturer, shop or both; required with warranty_duration."
                                },
                                {
                                    "key": "warranty_terms",
                                    "value": "Replacement for manufacturing defects.",
                                    "type": "text",
                                    "description": "Coverage conditions, at most 4000 characters."
                                },
                                {
                                    "key": "warranty_provider_name",
                                    "value": "Sample Brand Support",
                                    "type": "text",
                                    "description": "Support name, required for new\/changed external warranties."
                                },
                                {
                                    "key": "warranty_provider_phone",
                                    "value": "+91 1800 123 4567",
                                    "type": "text",
                                    "description": "Support phone; at least one phone\/email\/website is required for external cover."
                                },
                                {
                                    "key": "warranty_provider_email",
                                    "value": "support@example.test",
                                    "type": "text",
                                    "description": "Support email, at most 254 characters."
                                },
                                {
                                    "key": "warranty_provider_website",
                                    "value": "https:\/\/example.test\/support",
                                    "type": "text",
                                    "description": "HTTP(S) support URL, at most 2048 characters."
                                },
                                {
                                    "key": "warranty_provider_address",
                                    "value": "Example Service Centre, Hyderabad",
                                    "type": "text",
                                    "description": "Optional service address, at most 1000 characters."
                                },
                                {
                                    "key": "warranty_provider_notes",
                                    "value": "Keep your invoice and product serial number ready.",
                                    "type": "text",
                                    "description": "Optional claim instructions, at most 2000 characters."
                                },
                                {
                                    "key": "requires_expiry",
                                    "value": "",
                                    "type": "text",
                                    "description": "Require expiry on received stock lots."
                                },
                                {
                                    "key": "name",
                                    "value": "k",
                                    "type": "text",
                                    "description": "Must not be greater than 128 characters."
                                },
                                {
                                    "key": "sku",
                                    "value": "h",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "barcode",
                                    "value": "w",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "item_type",
                                    "value": "goods",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "hsn_sac",
                                    "value": "aykcmyuw",
                                    "type": "text",
                                    "description": "Must not be greater than 8 characters."
                                },
                                {
                                    "key": "unit",
                                    "value": "pwlvqwrsitcpscql",
                                    "type": "text",
                                    "description": "Must not be greater than 24 characters."
                                },
                                {
                                    "key": "uqc",
                                    "value": "dzsnrwtujwvlxjkl",
                                    "type": "text",
                                    "description": "Must not be greater than 16 characters."
                                },
                                {
                                    "key": "gst_taxability",
                                    "value": "taxable",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "sale_price",
                                    "value": "8",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "purchase_price",
                                    "value": "10",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "mrp",
                                    "value": "3",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "tax_rate",
                                    "value": "14",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 100."
                                },
                                {
                                    "key": "cess_rate",
                                    "value": "0",
                                    "type": "text",
                                    "description": "Optional product cess percentage, from 0 to 100; omitted updates preserve the current item value. Unregistered\/composition sales apply zero cess."
                                },
                                {
                                    "key": "stock_quantity",
                                    "value": "4",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "warehouse_id",
                                    "value": "35",
                                    "type": "text",
                                    "description": "Must be at least 1."
                                },
                                {
                                    "key": "reorder_level",
                                    "value": "9",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "is_active",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "track_inventory",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "track_batches",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "min_shelf_life_days",
                                    "value": "6",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 730."
                                },
                                {
                                    "key": "track_serials",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_batch_number",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "opening_batch_expiry_date",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "opening_serial_numbers[0]",
                                    "value": "n",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_warranty_until",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "price_includes_tax",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "remove_photos[0]",
                                    "value": "16",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "photos[]",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Tracked opening stock creates a balanced Inventory \/ Owner equity journal at purchase cost.\nStock and reorder quantities accept up to three decimal places.\nOptional category_id\/subcategory_id\/brand_id\/manufacturer_id must belong to this tenant\nand have the matching kind. Alternatively use their *_name fields to create or reuse names.\nWarranty duration requires warranty_unit and warranty_provider and is capped at 10 years.\nNew\/changed brand, manufacturer or both policies require a support name and at least one\nphone, email or HTTP(S) website. Omitted fields are retained on update; null clears optional fields.\nShop\/no-warranty policies clear external contact fields. Issued warranties retain contact snapshots.\nGST master selection is authoritative for taxable items. Numeric tax_rate inputs create\/reuse a\nbusiness percentage master for compatibility. Omitted rate inputs preserve the item rate on update.\nrequires_expiry needs enabled batch tracking; expiry is stored per physical batch."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\",\"errors\":{\"plan\":[\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/items\/{id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:id",
                            "query": [
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Customer id. Adds `party_price` to the item, showing what that party pays under its rate card.",
                                    "disabled": false
                                },
                                {
                                    "key": "supplier",
                                    "value": "17",
                                    "description": "Supplier contact id, or `preferred`. Adds `supplier_price`, the rate to open a purchase line at.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:id?contact=42&supplier=17",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update an item and account for stock corrections.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "category_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "category_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 100 characters."
                                },
                                {
                                    "key": "subcategory_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "subcategory_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 100 characters."
                                },
                                {
                                    "key": "brand_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "brand_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 100 characters."
                                },
                                {
                                    "key": "manufacturer_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "manufacturer_name",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 100 characters."
                                },
                                {
                                    "key": "gst_rate_id",
                                    "value": "16",
                                    "type": "text",
                                    "description": "Must match an existing stored value."
                                },
                                {
                                    "key": "warranty_duration",
                                    "value": "22",
                                    "type": "text",
                                    "description": "Must be at least 1. Must not be greater than 3650."
                                },
                                {
                                    "key": "warranty_unit",
                                    "value": "days",
                                    "type": "text",
                                    "description": "This field is required when <code>warranty_duration<\/code> is present."
                                },
                                {
                                    "key": "warranty_provider",
                                    "value": "brand",
                                    "type": "text",
                                    "description": "This field is required when <code>warranty_duration<\/code> is present."
                                },
                                {
                                    "key": "warranty_terms",
                                    "value": "g",
                                    "type": "text",
                                    "description": "Must not be greater than 4000 characters."
                                },
                                {
                                    "key": "warranty_provider_name",
                                    "value": "z",
                                    "type": "text",
                                    "description": "Must not be greater than 160 characters."
                                },
                                {
                                    "key": "warranty_provider_phone",
                                    "value": "m",
                                    "type": "text",
                                    "description": "Must match the regex \/^[+0-9][0-9\\s().\\-xX#]{4,49}$\/. Must not be greater than 50 characters."
                                },
                                {
                                    "key": "warranty_provider_email",
                                    "value": "gulgowski.asia@example.com",
                                    "type": "text",
                                    "description": "Must be a valid email address. Must not be greater than 254 characters."
                                },
                                {
                                    "key": "warranty_provider_website",
                                    "value": "j",
                                    "type": "text",
                                    "description": "Must be a valid URL. Must not be greater than 2048 characters."
                                },
                                {
                                    "key": "warranty_provider_address",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "warranty_provider_notes",
                                    "value": "i",
                                    "type": "text",
                                    "description": "Must not be greater than 2000 characters."
                                },
                                {
                                    "key": "requires_expiry",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "name",
                                    "value": "k",
                                    "type": "text",
                                    "description": "Must not be greater than 128 characters."
                                },
                                {
                                    "key": "sku",
                                    "value": "h",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "barcode",
                                    "value": "w",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "item_type",
                                    "value": "goods",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "hsn_sac",
                                    "value": "aykcmyuw",
                                    "type": "text",
                                    "description": "Must not be greater than 8 characters."
                                },
                                {
                                    "key": "unit",
                                    "value": "pwlvqwrsitcpscql",
                                    "type": "text",
                                    "description": "Must not be greater than 24 characters."
                                },
                                {
                                    "key": "uqc",
                                    "value": "dzsnrwtujwvlxjkl",
                                    "type": "text",
                                    "description": "Must not be greater than 16 characters."
                                },
                                {
                                    "key": "gst_taxability",
                                    "value": "taxable",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "sale_price",
                                    "value": "8",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "purchase_price",
                                    "value": "10",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "mrp",
                                    "value": "3",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "tax_rate",
                                    "value": "14",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 100."
                                },
                                {
                                    "key": "cess_rate",
                                    "value": "7",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 100."
                                },
                                {
                                    "key": "stock_quantity",
                                    "value": "4",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "warehouse_id",
                                    "value": "35",
                                    "type": "text",
                                    "description": "Must be at least 1."
                                },
                                {
                                    "key": "reorder_level",
                                    "value": "9",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 999999999."
                                },
                                {
                                    "key": "is_active",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "track_inventory",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "track_batches",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "min_shelf_life_days",
                                    "value": "6",
                                    "type": "text",
                                    "description": "Must be at least 0. Must not be greater than 730."
                                },
                                {
                                    "key": "track_serials",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_batch_number",
                                    "value": "n",
                                    "type": "text",
                                    "description": "Must not be greater than 64 characters."
                                },
                                {
                                    "key": "opening_batch_expiry_date",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "opening_serial_numbers[0]",
                                    "value": "n",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "opening_warranty_until",
                                    "value": "2026-01-15",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "price_includes_tax",
                                    "value": "",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "remove_photos[0]",
                                    "value": "16",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "photos[]",
                                    "src": [],
                                    "type": "file"
                                },
                                {
                                    "key": "_method",
                                    "value": "PUT",
                                    "type": "text"
                                }
                            ]
                        },
                        "description": "Quantity increases record inventory-adjustment income; decreases record an operating expense.\nStock and reorder quantities accept up to three decimal places."
                    },
                    "response": []
                },
                {
                    "name": "Soft delete an item.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/items\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/items\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the item."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Items used on documents can be deleted. The item is removed from the catalogue and new\nitem selections; existing document lines, stock history, quantities, and accounting\nentries are retained. Existing documents can keep their deleted items when edited,\nand returns still use the original item. Requires inventory permission.\nSubsequent item reads, updates, or deletions return 404, as do foreign-tenant items."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Your role does not allow this action.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List business GST percentage masters for item lookups.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst-rates",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst-rates",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns an empty list for unregistered and composition businesses; historical masters remain stored.\nThese are configured percentages, not a tax-advice or statutory-rate catalogue."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"percentage\":18,\"basis_points\":1800,\"label\":\"18%\"}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create or reuse a business GST percentage.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst-rates",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst-rates",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"percentage\":18}"
                        },
                        "description": "Regular GST registration is required. Unregistered and composition businesses return 422."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"percentage\":18,\"basis_points\":1800,\"label\":\"18%\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":1,\"percentage\":18,\"basis_points\":1800,\"label\":\"18%\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only a business with Regular GST registration can add or edit GST percentages.\",\"errors\":{\"percentage\":[\"Only a business with Regular GST registration can add or edit GST percentages.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Change an unused GST percentage.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst-rates\/:gstRate_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst-rates\/:gstRate_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "gstRate_id",
                                    "key": "gstRate_id",
                                    "value": 1,
                                    "description": "The ID of the gstRate."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"percentage\":12}"
                        },
                        "description": "Requires Regular GST registration; unregistered and composition businesses return 422.\nA rate referenced by any item (including deleted items) cannot change. Create a new master instead."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This rate is used by an item. Add a new percentage instead.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only a business with Regular GST registration can add or edit GST percentages.\",\"errors\":{\"percentage\":[\"Only a business with Regular GST registration can add or edit GST percentages.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Delete an unused GST percentage. Used rates return 409.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst-rates\/:gstRate_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst-rates\/:gstRate_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "gstRate_id",
                                    "key": "gstRate_id",
                                    "value": 1,
                                    "description": "The ID of the gstRate."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires Regular GST registration; unregistered and composition businesses return 422."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This rate is still used by an item.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only a business with Regular GST registration can add or edit GST percentages.\",\"errors\":{\"percentage\":[\"Only a business with Regular GST registration can add or edit GST percentages.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List categories, subcategories, brands and manufacturers.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-classifications",
                            "query": [
                                {
                                    "key": "kind",
                                    "value": "category",
                                    "description": "Optional classification kind.",
                                    "disabled": false
                                },
                                {
                                    "key": "parent_id",
                                    "value": "1",
                                    "description": "Optional parent category for subcategory lookups; must belong to this business.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-classifications?kind=category&parent_id=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"parent_id\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create or reuse a classification.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-classifications",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-classifications",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"kind\":\"category\",\"name\":\"Lighting\",\"parent_id\":1}"
                        },
                        "description": "Names ignore case and repeated spaces. Subcategories require a tenant-owned category parent."
                    },
                    "response": []
                },
                {
                    "name": "Rename a classification without changing its hierarchy.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-classifications\/:itemClassification_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-classifications\/:itemClassification_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemClassification_id",
                                    "key": "itemClassification_id",
                                    "value": 1,
                                    "description": "The ID of the itemClassification."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Electrical lighting\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Delete an unused classification. Used classifications and categories with children return 409.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-classifications\/:itemClassification_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-classifications\/:itemClassification_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemClassification_id",
                                    "key": "itemClassification_id",
                                    "value": 1,
                                    "description": "The ID of the itemClassification."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List warranty records for this workspace.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-warranties",
                            "query": [
                                {
                                    "key": "search",
                                    "value": "LED",
                                    "description": "Search item, buyer, invoice or serial number.",
                                    "disabled": false
                                },
                                {
                                    "key": "item_id",
                                    "value": "1",
                                    "description": "Filter one item.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact_id",
                                    "value": "1",
                                    "description": "Filter one customer.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Page size, 1-100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-warranties?search=LED&item_id=1&contact_id=1&per_page=25",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"search\":\"b\",\"item_id\":22,\"contact_id\":67,\"per_page\":16}"
                        },
                        "description": "Contact details are frozen when coverage is issued, including after invoice corrections."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Read a warranty, including coverage, its private buyer link and issued support contacts.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-warranties\/:itemWarranty_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-warranties\/:itemWarranty_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemWarranty_id",
                                    "key": "itemWarranty_id",
                                    "value": 1,
                                    "description": "The ID of the itemWarranty."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download the product import template.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-imports\/template",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-imports\/template",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "The workbook carries the `Products` sheet and header row the upload expects. Row 1 must\nsurvive unedited \u2014 a renamed or reordered header is reported as a file-level error.\nOptional product columns include category, subcategory, brand, manufacturer, warranty\nduration\/unit\/provider\/terms and batch\/serial\/expiry flags. The original 16-column template\nremains supported. Stock batches and Serial units sheets link by SKU; quantities\/counts\nmust equal Opening Stock. Each optional stock sheet allows up to 2,000 rows. Required\nexpiry, normalised serial uniqueness, tracked-goods constraints and plan features apply.\nCreate category, subcategory, brand and manufacturer masters first. This business-specific\nworkbook includes a Masters reference sheet and per-item dropdowns for existing records.\nSubcategory uses a plain saved-master list, without dependent INDIRECT formulas.\nThe Masters sheet shows each subcategory's parent; upload validates that it matches the category.\nSpreadsheet apps that do not preserve dropdowns can copy the saved names from Masters.\nRegular GST businesses also receive\nGST treatment choices and existing GST percentage masters; other businesses have tax columns hidden.\nDownload again after changing masters. Organisation columns may be left blank and assigned later."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The product import template workbook.",
                            "name": "The product import template workbook."
                        }
                    ]
                },
                {
                    "name": "Upload a product file and stage it for review.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-imports",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-imports",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Creates no items. The file is stored, checksummed, and validated row by row.\nImports never create masters. Nonblank classification names must match existing records\nin this business (case and repeated spaces are ignored); a subcategory must match its category.\nTaxable GST percentages supplied by a Regular GST business must match existing GST masters.\nBlank organisation\/rate cells remain unassigned. Unknown records produce row validation errors.\nOptional warranty units are days\/months\/years and providers brand\/manufacturer\/shop\/both.\nExternal policies need Warranty provider name and at least one Warranty provider phone\/email\/website.\nOptional Warranty provider address and Warranty provider notes appear on issued slips.\nThe response reports how many rows passed, which rows failed and why, and a sample of the normalized\nrows that would be created. Call the confirm endpoint once `error_count` is zero.\n\nRe-uploading a file this workspace has already uploaded does not stage it a second time:\nthe existing record is returned with `duplicate` set to `true` and HTTP `200`. Unconfirmed\nfiles are revalidated against current masters; imported files remain unchanged."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The file must be a file of type: xlsx.\",\"errors\":{\"file\":[\"The file must be a file of type: xlsx.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Read a staged import.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-imports\/:itemImport_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-imports\/:itemImport_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemImport_id",
                                    "key": "itemImport_id",
                                    "value": 1,
                                    "description": "The ID of the itemImport."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the current status, the row counts, every validation error, and the preview sample."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create every validated row.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-imports\/:itemImport_id\/confirm",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-imports\/:itemImport_id\/confirm",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemImport_id",
                                    "key": "itemImport_id",
                                    "value": 1,
                                    "description": "The ID of the itemImport."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "All rows are created inside one transaction, so the catalogue is either wholly imported or\nuntouched. Rows carrying opening stock also record an opening stock movement and its\ninventory journal, exactly as the setup wizard does.\n\nThe workbook is checked again before writing. Conflicts introduced since preview (including\nSKUs or barcodes reserved by deleted items) return `422` under `file` and create nothing.\nMalformed numeric and boolean values are rejected instead of being converted to zero or false.\n\nExisting classification and GST masters are revalidated at confirmation; renamed\/deleted\nmasters return 422 under file. No masters are created during preview or confirmation.\nUnregistered\/composition imports retain product tax metadata without creating new masters;\nthat metadata never authorizes collecting GST on new sales."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This file has already been imported.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This file has not passed validation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\",\"errors\":{\"plan\":[\"Your current plan includes up to 5 items. Upgrade to Smart Books to add more.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Discard a staged import.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/item-imports\/:itemImport_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/item-imports\/:itemImport_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "itemImport_id",
                                    "key": "itemImport_id",
                                    "value": 1,
                                    "description": "The ID of the itemImport."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Deletes the stored file and its staged rows. An import that has already created items\ncannot be discarded \u2014 its checksum is what stops the same file being imported twice."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"An imported file cannot be discarded.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download the warranty slip PDF for an invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/warranty.pdf",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/warranty.pdf",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires sales permission. Includes current warranty records, their terms and buyer tracking links."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "binary application\/pdf",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Send or resend the invoice and warranty slip to the buyer's primary email.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/warranty\/send",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/warranty\/send",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires sales permission, configured mail and a valid customer email. Queued or sending\ndeliveries are reused. Explicit resends may duplicate a message already accepted by mail."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"data\":{\"status\":\"queued\",\"sent_at\":null}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Sales invoices",
            "description": "\nSuccessful sales create purchase-date warranties from each covered item's policy, including\nnon-serialised goods. Invoice responses expose warranties and warranty_delivery. Automatic\nprimary-customer email includes invoice and warranty PDFs when mail and the recipient are available.\nIssued policies are snapshots; item edits do not change existing coverage. Returns reduce\ncovered quantities, voiding cancels cover, and coverage corrections supersede old slips.",
            "item": [
                {
                    "name": "List saved sales invoices.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "saved",
                                    "description": "Filter by status. saved aliases saved.",
                                    "disabled": false
                                },
                                {
                                    "key": "outstanding",
                                    "value": "1",
                                    "description": "Only non-void invoices with a positive balance after payments and returns. Filtered before pagination.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices?status=saved&outstanding=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"saved\",\"outstanding\":false,\"contact_id\":16,\"from\":\"2026-01-15\",\"to\":\"2026-01-15\",\"search\":\"n\",\"per_page\":7}"
                        },
                        "description": "Resources include `show_gst_details`, based on the registration frozen at issue. When false, hide GSTINs, HSN\/tax columns, place of supply, reverse charge, GST amounts and tax summaries in invoice and document UI. New unregistered documents force GST\/cess to zero and tax-inclusive\/reverse-charge flags false. Previously issued registered documents keep their original tax treatment."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Save one or many sales invoices.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"line_layout\":[{\"type\":\"header\",\"title\":\"Kitchen essentials\"},{\"type\":\"item\",\"line_index\":0},{\"type\":\"subtotal\"}],\"show_section_totals\":true,\"contact_id\":16,\"issue_date\":\"2026-01-15\",\"due_date\":\"2026-01-15\",\"notes\":\"n\",\"place_of_supply_state_code\":\"29\",\"reverse_charge\":false,\"prices_include_tax\":false,\"channel\":\"backoffice\",\"idempotency_key\":\"6b72fe4a-5b40-307c-bc24-f79acf9a1bb9\",\"lines\":[{\"details\":\"Deliver in sealed packs.\",\"item_id\":16,\"warehouse_id\":22,\"item_batch_id\":16,\"serial_numbers\":[\"n\"],\"description\":\"Animi quos velit et fugiat.\",\"hsn_sac\":\"100630\",\"quantity\":18,\"unit_price\":22,\"tax_rate\":24,\"cess_rate\":18,\"discount\":8,\"price_includes_tax\":false}],\"workers\":[{\"worker_id\":66,\"commission_kind\":\"percentage\",\"rate_basis_points\":0,\"fixed_amount_paise\":0,\"attribution_basis_points\":1}]}"
                        },
                        "description": "Send a single invoice payload, or wrap up to 25 of them in an `invoices` array to save a batch in one atomic request. A batch either saves completely or not at all, and returns its invoices in request order under `data` with `meta.count`.\n\nMonthly invoice allowances count all invoices created in the application-calendar month, including trial\nand voided invoices. A downgrade does not reset usage. At the limit, new invoices return HTTP 422\nagainst `plan` with an upgrade\/reset message. Existing idempotency keys can still be retried at the limit.\nA batch that exceeds the remaining allowance is rolled back completely. Existing invoices remain accessible.\n\nA customer carrying a credit limit is refused with HTTP 422 against `contact_id` when the invoice would take what it owes past that limit. A batch is weighed cumulatively: each entry sees the exposure the earlier entries created.\n\nGST heads follow the place of supply: CGST and SGST (UTGST in Chandigarh, Dadra and Nagar Haveli and Daman and Diu, Lakshadweep, Andaman and Nicobar Islands and Ladakh) when it is the business's own state, otherwise IGST. A customer with `gst_treatment` `sez` is always charged IGST, and an overseas customer defaults to place of supply `96`."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected record was not found for this business.\",\"errors\":{\"invoices.1.contact_id\":[\"The selected record was not found for this business.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record one or many customer payments.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/payments",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"payments\":[{\"invoice_id\":16,\"amount\":22,\"method\":\"cash\",\"payment_account_id\":16,\"paid_on\":\"2026-01-15\",\"reference\":\"n\",\"notes\":\"g\"}]}"
                        },
                        "description": "Post a single payment to `invoices\/{invoice}\/payments`, or send up to 25 payments \u2014 each naming its own `invoice_id` \u2014 as a `payments` array to `invoices\/payments` to settle several invoices in one atomic request."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Enter an amount up to the current outstanding balance.\",\"errors\":{\"payments.1.amount\":[\"Enter an amount up to the current outstanding balance.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Void one or many unpaid invoices that have no returns.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"invoices\":[{\"invoice_id\":16,\"reason\":\"n\"}],\"reason\":\"b\"}"
                        },
                        "description": "Invoices with a payment or a sales return must be settled through the corresponding payment or return workflow and cannot be voided.\n\nVoid a single invoice at `invoices\/{invoice}\/void`, or send up to 25 entries \u2014 each naming its own `invoice_id` \u2014 as an `invoices` array to `invoices\/void`. A batch may carry one shared request-level `reason` instead of repeating it per entry, and either voids completely or not at all."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only unpaid, active invoices without returns can be voided.\",\"errors\":{\"invoice\":[\"Only unpaid, active invoices without returns can be voided.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Read an invoice and its change history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"customer_pdf_url\":\"https:\/\/dukanam.com\/invoices\/1\/shared?expires=1790000000&signature=example\",\"send\":{\"share_url\":\"https:\/\/dukanam.com\/shared\/invoices\/1?expires=1790000000&signature=example\",\"message\":\"Hi Ravi Kumar, please find invoice INV-1001 for \u20b92,500.00 from Sri Lakshmi Traders. Thank you.\\n\\nView invoice PDF: https:\/\/dukanam.com\/shared\/invoices\/1?expires=1790000000&signature=example\",\"email_subject\":\"Invoice INV-1001 from Sri Lakshmi Traders\",\"email_available\":true,\"payment_reminder\":{\"message\":\"Hi Ravi Kumar, a payment of \u20b92,500.00 is pending on invoice INV-1001. Pay to Sri Lakshmi Traders: Account number: 001234567890, IFSC: HDFC0000123. View invoice PDF: https:\/\/dukanam.com\/shared\/invoices\/1?expires=1790000000&signature=example\",\"email_subject\":\"Sri Lakshmi Traders | Payment reminder: INV-1001\"},\"recipients\":[{\"key\":\"primary\",\"name\":\"Ravi Kumar\",\"designation\":\"Primary contact\",\"phone\":\"98765 43210\",\"whatsapp_phone\":\"919876543210\",\"email\":\"ravi@example.test\"},{\"key\":\"person-12\",\"name\":\"Priya\",\"designation\":\"Accounts\",\"phone\":null,\"whatsapp_phone\":null,\"email\":\"priya@example.test\"}]}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Save edits to an invoice at any time.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"line_layout\":[{\"type\":\"header\",\"title\":\"Kitchen essentials\"},{\"type\":\"item\",\"line_index\":0},{\"type\":\"subtotal\"}],\"show_section_totals\":true,\"worker_attribution_basis_points\":10000,\"worker_id\":16,\"worker_rate_basis_points\":1,\"contact_id\":16,\"issue_date\":\"2026-01-15\",\"due_date\":\"2026-01-15\",\"notes\":\"n\",\"place_of_supply_state_code\":1,\"reverse_charge\":false,\"prices_include_tax\":false,\"lines\":[{\"details\":\"Deliver in sealed packs.\",\"item_id\":16,\"warehouse_id\":22,\"item_batch_id\":16,\"serial_numbers\":[\"n\"],\"description\":\"Animi quos velit et fugiat.\",\"hsn_sac\":\"100630\",\"quantity\":18,\"unit_price\":22,\"tax_rate\":24,\"cess_rate\":18,\"discount\":8,\"price_includes_tax\":false,\"id\":1}],\"revision\":1,\"workers\":[{\"worker_id\":27,\"commission_kind\":\"percentage\",\"rate_basis_points\":0,\"fixed_amount_paise\":0,\"attribution_basis_points\":2}]}"
                        },
                        "description": "PUT and PATCH both replace the editable invoice fields and lines in full. Send the latest revision from GET and include each existing line's id to retain it; omit id for a new line. Missing existing lines are removed. A stale revision returns 422 on revision. The invoice keeps its identifier, number, payment records, and return records. All statuses, including paid, returned, and void, remain editable with no time limit; a void invoice remains void.\n\nThe customer cannot change when payments or returns exist. Returned lines cannot be removed, assigned another item, or reduced below their returned quantity or recorded amounts. Reducing the total below payments retains customer credit. Totals, stock and accounting reconcile atomically, and each save records complete before\/after snapshots with the actor and timestamp. Accounting corrections retain original entries and dated reversals\/replacements; report date ranges honor each entry's date. Original business tax registration and stored line metadata are preserved.\n\nInvoice edits keep the original invoice date unless the owner explicitly changes issue_date. Revision reversals use the previous transaction dates; replacements use the submitted invoice date, restating that period rather than moving the correction to today. The edit timestamp remains in audit history. There is no invoice-age limit on changing the date."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"number\":\"INV-001\",\"status\":\"posted\",\"status_label\":\"Saved\",\"revision\":2,\"total_paise\":20000,\"history\":[{\"id\":2,\"action\":\"invoice.updated\",\"user\":{\"id\":1,\"name\":\"Shop owner\"},\"old_values\":{\"revision\":1,\"total_paise\":10000,\"lines\":[{\"id\":1,\"quantity\":\"1.000\"}]},\"new_values\":{\"revision\":2,\"total_paise\":20000,\"lines\":[{\"id\":1,\"quantity\":\"2.000\"}]},\"reason\":null,\"created_at\":\"2026-09-13T10:00:00.000000Z\"}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This invoice was changed by someone else. Reload it before saving your changes.\",\"errors\":{\"revision\":[\"This invoice was changed by someone else. Reload it before saving your changes.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download a sales invoice PDF.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/pdf",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/pdf",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the same tenant-scoped invoice document used by the web sharing flow."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The generated invoice PDF.",
                            "name": "The generated invoice PDF."
                        }
                    ]
                },
                {
                    "name": "Get a sales invoice as a thermal printer receipt.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/receipt",
                            "query": [
                                {
                                    "key": "cash_register_id",
                                    "value": "1",
                                    "description": "Counter the receipt prints at. Its saved printer settings (paper, cut, cash drawer) apply. Omit to use the defaults: 80mm, cut, drawer opens for cash sales. Must match an existing stored value.",
                                    "disabled": false
                                },
                                {
                                    "key": "paper",
                                    "value": "58mm",
                                    "description": "Overrides the counter's paper width: `58mm` (32 characters a line) or `80mm` (48 characters a line).",
                                    "disabled": false
                                },
                                {
                                    "key": "cut",
                                    "value": "",
                                    "description": "Overrides whether the paper is cut at the end: `1` or `0`.",
                                    "disabled": true
                                },
                                {
                                    "key": "open_drawer",
                                    "value": "",
                                    "description": "Overrides whether the cash drawer opens: `1` always opens it, `0` never does. When omitted, the drawer opens only if the counter allows it and the sale has a cash payment.",
                                    "disabled": true
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/receipt?cash_register_id=1&paper=58mm&cut=&open_drawer=",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the receipt as ESC\/POS printer commands for a 58mm or 80mm thermal printer, so the app can print over Bluetooth, USB or the network with no print dialog. Decode `content_base64` and write the bytes to the printer unchanged. The same bytes are served to the web counter. The supermarket layout includes bill\/date\/cashier, aligned description\/quantity\/rate\/amount columns, per-line discounts, item\/quantity counts, payment methods, savings and a GST-rate summary using stored invoice values. Long descriptions wrap and large amounts retain all digits.\n\nPass `cash_register_id` to use that counter's saved printer settings. The cash drawer opens only when the counter allows it and the sale has a cash payment. A UPI QR prints only while a balance is due, for that balance. Text prints in the printer's built-in ASCII font; the rupee sign prints as `Rs.` and other characters are transliterated.\n\nAvailable to members who can make sales or use the POS."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"format\":\"escpos\",\"invoice_id\":1,\"invoice_number\":\"INV-0001\",\"cash_register_id\":1,\"paper\":\"80mm\",\"characters_per_line\":48,\"cut\":true,\"opens_drawer\":true,\"auto_print\":false,\"content_base64\":\"G0AbcAAZ+htHYQE...\",\"byte_length\":812,\"text\":\"Sri Lakshmi Traders\\nTAX INVOICE\\nBill: INV-0001                         28 Sep 2026\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose 58mm or 80mm paper.\",\"errors\":{\"paper\":[\"Choose 58mm or 80mm paper.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Email an invoice to people at the customer.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/email",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/email",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"recipients\":[\"primary\",\"person-12\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"subject\":\"Sri Lakshmi Traders | Purchase order: PO-0007\",\"message\":\"Hi Ravi, please find purchase order PO-0007 for \u20b912,500.00. Please confirm the order and the delivery date.\",\"from\":\"2026-04-01\",\"to\":\"2027-03-31\"}"
                        },
                        "description": "Sends one email to each chosen person with the invoice PDF attached and a button to the signed public invoice page. Choose people by the `key` values in `send.recipients` from GET `invoices\/{invoice}`; each must have an email address. To send on WhatsApp or SMS instead, open the chat on the device with `send.message` and a recipient's `whatsapp_phone` or `phone`. Every email send is recorded in the audit log."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Emailed to Ravi Kumar and Priya.\",\"data\":{\"sent_to\":[{\"key\":\"primary\",\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.test\"},{\"key\":\"person-12\",\"name\":\"Priya\",\"email\":\"priya@example.test\"}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Priya has no email address.\",\"errors\":{\"recipients.1\":[\"Priya has no email address.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record one or many customer payments.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/payments",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"payments\":[{\"invoice_id\":16,\"amount\":22,\"method\":\"cash\",\"payment_account_id\":16,\"paid_on\":\"2026-01-15\",\"reference\":\"n\",\"notes\":\"g\"}]}"
                        },
                        "description": "Post a single payment to `invoices\/{invoice}\/payments`, or send up to 25 payments \u2014 each naming its own `invoice_id` \u2014 as a `payments` array to `invoices\/payments` to settle several invoices in one atomic request."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Enter an amount up to the current outstanding balance.\",\"errors\":{\"payments.1.amount\":[\"Enter an amount up to the current outstanding balance.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Void one or many unpaid invoices that have no returns.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice_id\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 1,
                                    "description": "The ID of the invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"invoices\":[{\"invoice_id\":16,\"reason\":\"n\"}],\"reason\":\"b\"}"
                        },
                        "description": "Invoices with a payment or a sales return must be settled through the corresponding payment or return workflow and cannot be voided.\n\nVoid a single invoice at `invoices\/{invoice}\/void`, or send up to 25 entries \u2014 each naming its own `invoice_id` \u2014 as an `invoices` array to `invoices\/void`. A batch may carry one shared request-level `reason` instead of repeating it per entry, and either voids completely or not at all."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only unpaid, active invoices without returns can be voided.\",\"errors\":{\"invoice\":[\"Only unpaid, active invoices without returns can be voided.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Business documents",
            "description": "",
            "item": [
                {
                    "name": "Get recurring schedule settings and generation history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document\/recurring-settings",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document\/recurring-settings",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "architecto",
                                    "description": "The document."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires sales permission and recurring-invoice entitlement. Returns the schedule,\ncustomer recipients (including contacts missing an email) and the latest 25 occurrences.\nOwner notification preference defaults on; a missing owner email is not configured."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update a recurring schedule and automatic email preferences.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document\/recurring-settings",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document\/recurring-settings",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "architecto",
                                    "description": "The document."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"frequency\":\"monthly\",\"next_issue_date\":\"2026-10-31\",\"end_date\":\"2027-10-31\",\"repeat_every\":1,\"due_after_days\":7,\"auto_email\":true,\"email_recipients\":[\"primary\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"notify_owner\":true,\"owner_email\":\"owner@example.com\",\"schedule_status\":\"active\"}"
                        },
                        "description": "Changes affect future invoices only. Start\/next date must follow the last generated date.\nMonthly dates stay anchored to their original day, clamped to shorter months. Creation\nuses the business timezone. Customer auto-email requires selected valid emails; missing\naddresses can be saved with recipient_emails. Existing emails cannot be overwritten.\nOwner notifications default on but missing email never blocks invoice creation. Pause\nwith schedule_status=paused, resume with active; set a future next date to skip backlog.\nRequires sales permission and recurring-invoice entitlement; foreign schedules return 404."
                    },
                    "response": []
                },
                {
                    "name": "Retry failed emails for an existing recurring invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document\/recurring-runs\/:run\/retry",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document\/recurring-runs\/:run\/retry",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "architecto",
                                    "description": "The document."
                                },
                                {
                                    "id": "run",
                                    "key": "run",
                                    "value": "architecto",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Never creates another invoice or resends recipients already marked sent. Missing-address\nskips require updating the contact and sending that invoice manually. Queue retries are\nautomatic (three attempts); this endpoint restarts exhausted pending\/failed delivery.\nRequires sales permission and recurring-invoice entitlement; foreign runs return 404."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Unsent emails queued for retry.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List business documents.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"type\":\"quote\",\"status\":\"b\",\"contact_id\":16,\"per_page\":22}"
                        },
                        "description": "Saving a bill updates stock and account balances automatically. There is no extra confirmation step.\nDisplay status_label in screens; raw status values are retained for existing integrations."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a business document.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_type",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_type",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_type",
                                    "key": "document_type",
                                    "value": "quote|purchase_order|purchase_invoice|recurring_invoice|sales_return|purchase_return|delivery_challan",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"line_layout\":[{\"type\":\"header\",\"title\":\"Kitchen essentials\"},{\"type\":\"item\",\"line_index\":0},{\"type\":\"subtotal\"}],\"show_section_totals\":true,\"contact_id\":16,\"source_invoice_id\":16,\"source_document_id\":16,\"issue_date\":\"2026-01-15\",\"due_date\":\"2026-01-15\",\"frequency\":\"weekly\",\"next_issue_date\":\"2026-01-15\",\"end_date\":\"2026-01-15\",\"notes\":\"n\",\"external_reference\":\"g\",\"challan_reason\":\"job_work\",\"destination_warehouse_id\":66,\"expected_return_on\":\"2026-01-15\",\"place_of_supply_state_code\":\"29\",\"reverse_charge\":false,\"prices_include_tax\":false,\"lines\":[{\"details\":\"Deliver in sealed packs.\",\"item_id\":16,\"warehouse_id\":22,\"item_batch_id\":16,\"batch_number\":\"n\",\"batch_expiry_date\":\"2026-01-15\",\"batch_manufactured_on\":\"2026-01-15\",\"batch_mrp\":7,\"serial_numbers\":[\"z\"],\"warranty_until\":\"2026-01-15\",\"source_invoice_line_id\":16,\"source_document_line_id\":16,\"description\":\"Et animi quos velit et fugiat.\",\"hsn_sac\":\"998719\\n\\nRecurring schedules support the options below, with the same validation as the\\nrecurring-settings endpoint. Owner notification defaults on; without an owner email,\\nhistory remains available and invoice creation continues. Customer auto-email defaults off.\",\"quantity\":18,\"unit_price\":22,\"tax_rate\":24,\"cess_rate\":18,\"discount\":8,\"price_includes_tax\":false}],\"repeat_every\":1,\"due_after_days\":7,\"auto_email\":false,\"email_recipients\":[\"primary\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"notify_owner\":true,\"owner_email\":\"owner@example.com\",\"schedule_status\":\"active\"}"
                        },
                        "description": "Document resources include `show_gst_details`, based on the registration frozen at issue. When false, hide GST identifiers, HSN\/tax columns, supply and reverse-charge details, GST amounts and tax summaries. Previously issued registered documents keep their original tax treatment.\n\nCreate a business document or recurring invoice schedule.\n\nTax is split by place of supply as on sales invoices: CGST and SGST (or UTGST) within the business's state, IGST across states and for SEZ parties. Responses carry `place_of_supply_state_code`, `supply_type`, `state_tax_label`, the `cgst_total_paise`, `sgst_total_paise`, `igst_total_paise` and `cess_total_paise` totals, and per-line `hsn_sac` and tax heads.\nSales and purchase returns retain the source line's item even after it has been soft deleted,\nincluding its inventory, batch, and serial handling. Deleted items cannot be selected on new documents."
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/documents\/{document_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update a quotation, purchase order, purchase invoice, or delivery challan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"line_layout\":[{\"type\":\"header\",\"title\":\"Kitchen essentials\"},{\"type\":\"item\",\"line_index\":0},{\"type\":\"subtotal\"}],\"show_section_totals\":true,\"contact_id\":16,\"issue_date\":\"2026-01-15\",\"due_date\":\"2026-01-15\",\"notes\":\"n\",\"external_reference\":\"g\",\"challan_reason\":\"job_work\",\"destination_warehouse_id\":66,\"expected_return_on\":\"2026-01-15\",\"place_of_supply_state_code\":1,\"reverse_charge\":false,\"prices_include_tax\":false,\"lines\":[{\"details\":\"Deliver in sealed packs.\",\"item_id\":16,\"warehouse_id\":22,\"item_batch_id\":16,\"serial_numbers\":[\"n\"],\"description\":\"Animi quos velit et fugiat.\",\"hsn_sac\":\"5593:14):23)\",\"quantity\":18,\"unit_price\":22,\"tax_rate\":24,\"cess_rate\":18,\"discount\":8,\"price_includes_tax\":false}]}"
                        },
                        "description": "Replaces the party, dates, note, and every line of a quotation, purchase order, or delivery challan that\nhas not been converted yet. A quotation that the customer already answered returns to `open` and its\nrecorded decision is cleared, so the same approval link asks for a fresh decision on the updated figures.\nA delivery challan that had already taken goods off the shelf returns them before the replacement lines\ntake out their own, so stock is never held out twice for one challan.\nPurchase invoices replace stock, supplier ledger, and accounting entries atomically, retaining their number.\nInvoice edits keep the original invoice date unless the owner explicitly changes issue_date. Purchase revision reversals use the previous transaction dates and replacements use the submitted invoice date, restating that period. The audit timestamp records when the edit occurred. There is no invoice-age limit on changing the date; existing stock, return, and payment safeguards still apply.\nReturns, batch or serial tracked goods, and later stock activity prevent purchase invoice edits (422).\nPaid invoices retain payments: the supplier cannot change and the total cannot fall below applied payments.\nThe complete contact_id, issue_date, and lines payload is required; omitted optional fields are cleared.\nItems already on this document can be retained after soft deletion. Other deleted items\nand foreign-tenant items return 404; deletion never bypasses the existing edit restrictions."
                    },
                    "response": []
                },
                {
                    "name": "Delete a purchase invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires purchases permission. Reverses stock, supplier ledger and accounting atomically,\nretaining the document with status `void` for audit. Outstanding becomes zero.\nPayments, applied advances, purchase returns, batch or serial tracked goods, later stock\nactivity, and already voided invoices prevent deletion (422). Other document types return 404.\nAny failed deletion leaves the invoice and all balances unchanged."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\":\"Purchase invoice deleted. Audit record retained.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This invoice has payments or applied advances and cannot be deleted.\",\"errors\":{\"status\":[\"This invoice has payments or applied advances and cannot be deleted.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Convert a document into the bill it becomes.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id\/convert",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id\/convert",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "A quotation and a delivery challan both become a tax invoice; a purchase order becomes a purchase\ninvoice. A delivery challan may be converted exactly once: a second attempt answers `422`, leaving the\nfirst invoice as the only bill for those goods. GST on a converted challan is computed at the conversion\ndate, because the price is frequently not settled when the goods leave the shop."
                    },
                    "response": []
                },
                {
                    "name": "Download a document PDF.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id\/pdf",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id\/pdf",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "The same A4 paper the party receives, for quotations, purchase orders, delivery challans, sales returns and purchase returns. Other document types answer `404`."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The generated document PDF.",
                            "name": "The generated document PDF."
                        }
                    ]
                },
                {
                    "name": "Email a document to people at the party.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document_id\/email",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document_id\/email",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"recipients\":[\"primary\",\"person-12\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"subject\":\"Sri Lakshmi Traders | Purchase order: PO-0007\",\"message\":\"Hi Ravi, please find purchase order PO-0007 for \u20b912,500.00. Please confirm the order and the delivery date.\",\"from\":\"2026-04-01\",\"to\":\"2027-03-31\"}"
                        },
                        "description": "Sends one email to each chosen person with the document PDF attached and a button to its signed public page. Works for quotations, purchase orders, purchase invoices, recurring invoice schedules, delivery challans, sales returns and purchase returns that are not voided. Delivery is queued through platform Cloudflare email with the shop\u2019s branding. Choose people by the `key` values in `send.recipients` from GET `documents\/{document}`; each must have an email address. To send on WhatsApp or SMS instead, open the chat on the device with `send.message` and a recipient's `whatsapp_phone` or `phone`. Every email send is recorded in the audit log."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Emailed to Ravi Kumar.\",\"data\":{\"sent_to\":[{\"key\":\"primary\",\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.test\"}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose people listed on this party.\",\"errors\":{\"recipients.0\":[\"Choose people listed on this party.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Attach a supplier invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "file",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Upload one PDF, JPEG or PNG using multipart\/form-data. Maximum 10 MB per file and\n10 attachments per purchase invoice. Requires purchases permission. Files are private\nto this business. Voided invoices are read-only (422); other document types return 404.\nAttachments do not change stock, balances or the invoice's accounting entries."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":1,\"name\":\"supplier-invoice.pdf\",\"mime_type\":\"application\/pdf\",\"size_bytes\":2048,\"created_at\":\"2026-09-28T05:00:00.000000Z\",\"download_url\":\"https:\/\/dukanam.com\/api\/v1\/businesses\/1\/documents\/1\/attachments\/1\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"A purchase invoice can have up to 10 attachments.\",\"errors\":{\"file\":[\"A purchase invoice can have up to 10 attachments.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download an attached supplier invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments\/:attachment_id",
                            "query": [
                                {
                                    "key": "preview",
                                    "value": "1",
                                    "description": "Use 1 to display the PDF or image inline instead of downloading it. Authentication and tenant checks still apply.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments\/:attachment_id?preview=1",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                },
                                {
                                    "id": "attachment_id",
                                    "key": "attachment_id",
                                    "value": 1,
                                    "description": "The ID of the attachment."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"preview\":false}"
                        },
                        "description": "Requires authentication and purchases permission in the owning business, including when\nfollowing download_url. Available on voided invoices for audit. Missing files, foreign-tenant\ninvoices and attachments belonging to a different invoice return 404. No public storage URL is exposed."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The original supplier invoice file, inline when preview=1 or downloaded otherwise.",
                            "name": "The original supplier invoice file, inline when preview=1 or downloaded otherwise."
                        }
                    ]
                },
                {
                    "name": "Remove an attached supplier invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments\/:attachment_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/documents\/:document_id\/attachments\/:attachment_id",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "document_id",
                                    "key": "document_id",
                                    "value": 1,
                                    "description": "The ID of the document."
                                },
                                {
                                    "id": "attachment_id",
                                    "key": "attachment_id",
                                    "value": 1,
                                    "description": "The ID of the attachment."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires purchases permission. Removes the attachment without changing the invoice or\nits balances. Voided invoices are read-only (422). Tenant and invoice mismatches return 404."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Payments",
            "description": "",
            "item": [
                {
                    "name": "List payments.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments",
                            "query": [
                                {
                                    "key": "direction",
                                    "value": "received",
                                    "description": "`received` for customer payments, `made` for supplier payments.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-09-01",
                                    "description": "Earliest payment date.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-09-30",
                                    "description": "Latest payment date.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact_id",
                                    "value": "42",
                                    "description": "Only this customer's or supplier's payments.",
                                    "disabled": false
                                },
                                {
                                    "key": "is_advance",
                                    "value": "1",
                                    "description": "`1` for advances only, `0` to leave advances out.",
                                    "disabled": false
                                },
                                {
                                    "key": "unapplied",
                                    "value": "1",
                                    "description": "`1` for advances that still have money left to apply.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Page size, up to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments?direction=received&from=2026-09-01&to=2026-09-30&contact_id=42&is_advance=1&unapplied=1&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"direction\":\"received\",\"from\":\"2026-01-15\",\"to\":\"2026-01-15\",\"contact_id\":16,\"is_advance\":false,\"unapplied\":false,\"per_page\":22}"
                        },
                        "description": "Payments received from customers or made to suppliers, newest first. Advances \u2014 money taken\nor paid before there was a bill \u2014 appear here too, with `is_advance` set and the part not\nyet put towards a bill in `unapplied_paise`."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a payment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_advance\":false,\"contact_id\":42,\"invoice_id\":16,\"business_document_id\":16,\"amount\":22,\"paid_on\":\"2026-01-15\",\"method\":\"cash\",\"payment_account_id\":16,\"reference\":\"n\",\"notes\":\"g\",\"direction\":\"received\"}"
                        },
                        "description": "Settles a bill, or \u2014 with `is_advance` \u2014 records money taken from a customer or paid to a\nsupplier before any bill exists. An advance moves the account balance, the cash register,\nthe party's khata and the books the day it is recorded, so the party carries a credit\nbalance until a bill takes it up through `POST \/payments\/{payment}\/apply`."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":9,\"direction\":\"received\",\"is_advance\":true,\"amount_paise\":500000,\"applied_paise\":0,\"unapplied_paise\":500000,\"paid_on\":\"2026-09-25\",\"method\":\"upi\",\"invoice_id\":null,\"business_document_id\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose the customer who paid this advance.\",\"errors\":{\"contact_id\":[\"Choose the customer who paid this advance.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get a payment and its email\/share options.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments\/:payment_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments\/:payment_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "payment_id",
                                    "key": "payment_id",
                                    "value": 1,
                                    "description": "The ID of the payment."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires sales permission for received payments and purchases permission for made\npayments. Includes advances. Foreign business payments return 404."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Edit an allocated payment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments\/:payment_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments\/:payment_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "payment_id",
                                    "key": "payment_id",
                                    "value": 1,
                                    "description": "The ID of the payment."
                                },
                                {
                                    "id": "payment",
                                    "key": "payment",
                                    "value": 9,
                                    "description": "The allocated payment ID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_advance\":false,\"amount\":1000,\"paid_on\":\"2026-09-30\",\"method\":\"upi\",\"payment_account_id\":3,\"reference\":\"UTR-123\",\"notes\":\"Corrected receipt\"}"
                        },
                        "description": "Correct a payment allocated directly to a sales or purchase invoice, including a POS\nreceipt. Requires sales permission for received payments or purchases for made payments.\nThe party, direction, advance designation and invoice allocation cannot change. Advances\nand voided invoices return 422. Amount is capped at the current payment plus the bill's\noutstanding balance (an existing overpayment may be retained or reduced).\nUpdates bill balances\/status, khata, account journals and cash movements atomically;\noriginal financial entries are reversed and replacements saved, with payment.updated\naudit values. Reconciled payments cannot change amount, date, method or account. Payments\nin closed cash sessions cannot change amount, method or account; reference and notes can\nstill be corrected. Moving to cash requires an open register. Foreign records return 404.\nOmitted fields retain their values; null reference\/notes clear them."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":9,\"direction\":\"received\",\"is_advance\":false,\"amount_paise\":100000,\"paid_on\":\"2026-09-30\",\"method\":\"upi\",\"payment_account_id\":3,\"reference\":\"UTR-123\",\"notes\":\"Corrected receipt\",\"invoice_id\":16}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This payment is reconciled. Its amount, date, method and account cannot be changed.\",\"errors\":{\"payment\":[\"This payment is reconciled. Its amount, date, method and account cannot be changed.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Email a payment receipt or advice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments\/:payment_id\/email",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments\/:payment_id\/email",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "payment_id",
                                    "key": "payment_id",
                                    "value": 1,
                                    "description": "The ID of the payment."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"recipients\":[\"primary\",\"person-12\"],\"recipient_emails\":{\"primary\":\"accounts@example.com\"},\"subject\":\"Sri Lakshmi Traders | Purchase order: PO-0007\",\"message\":\"Hi Ravi, please find purchase order PO-0007 for \u20b912,500.00. Please confirm the order and the delivery date.\",\"from\":\"2026-04-01\",\"to\":\"2027-03-31\"}"
                        },
                        "description": "Queues a separate branded Dukanam email for each selected contact through the platform's\nCloudflare SMTP transport, with the shop's branding and receipt PDF attached.\nRequires sales permission for received payments or purchases for made payments.\nIncludes advances. Foreign tenant payments return 404, invalid or foreign recipient keys\nand disabled platform email return 422. No payment or ledger values are changed."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Emailed to Ravi.\",\"data\":{\"sent_to\":[{\"key\":\"primary\",\"name\":\"Ravi\",\"email\":\"ravi@example.com\"}]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Apply an advance to a bill.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payments\/:payment_id\/apply",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payments\/:payment_id\/apply",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "payment_id",
                                    "key": "payment_id",
                                    "value": 1,
                                    "description": "The ID of the payment."
                                },
                                {
                                    "id": "payment",
                                    "key": "payment",
                                    "value": 9,
                                    "description": "The advance payment."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"invoice_id\":16,\"business_document_id\":16,\"amount\":1500,\"applied_on\":\"2026-09-25\"}"
                        },
                        "description": "Puts part or all of an advance towards one unpaid bill of the same party: a sales invoice\nfor an advance received, a purchase invoice for an advance made. The bill's `paid_paise`\nrises and the advance's `unapplied_paise` falls; the account, cash register, khata and\nbooks do not move again, because they already did when the advance was recorded. Leave\n`amount` out to apply as much as both the advance and the bill balance allow."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":9,\"direction\":\"received\",\"is_advance\":true,\"amount_paise\":500000,\"applied_paise\":150000,\"unapplied_paise\":350000,\"applications\":[{\"id\":1,\"payment_id\":9,\"amount_paise\":150000,\"applied_on\":\"2026-09-25\",\"invoice_id\":16,\"invoice_number\":\"INV-016\",\"business_document_id\":null}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Enter an amount up to \u20b93,500.00, the smaller of the unused advance and the bill balance.\",\"errors\":{\"amount\":[\"Enter an amount up to \u20b93,500.00, the smaller of the unused advance and the bill balance.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Expenses",
            "description": "\nExpense records are a core Purchases capability on every plan. Workspace purchase permissions still apply.",
            "item": [
                {
                    "name": "List expenses.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "internet",
                                    "description": "Case-insensitive search across category, payee, or description.",
                                    "disabled": false
                                },
                                {
                                    "key": "category",
                                    "value": "Utilities",
                                    "description": "Filter by an exact category.",
                                    "disabled": false
                                },
                                {
                                    "key": "payment_account_id",
                                    "value": "9",
                                    "description": "Filter by the payment account used.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-08-01",
                                    "description": "Include expenses on or after this date (`YYYY-MM-DD`).",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-08-31",
                                    "description": "Include expenses on or before this date (`YYYY-MM-DD`).",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Filter by record status.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page, from 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses?q=internet&category=Utilities&payment_account_id=9&from=2026-08-01&to=2026-08-31&status=active&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Search and filter business expenses. The response includes totals for the current\nresult, the current month, and the retained voided audit trail."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 41,\n            \"category\": \"Utilities\",\n            \"payee\": \"City Internet Services\",\n            \"amount_paise\": 249900,\n            \"occurred_on\": \"2026-08-12\",\n            \"payment_method\": \"bank\",\n            \"payment_account_id\": 9,\n            \"payment_account_name\": \"HDFC Current Account\",\n            \"note\": \"August internet bill for the main shop\",\n            \"voided_at\": null,\n            \"void_reason\": null,\n            \"created_at\": \"2026-08-12T10:30:00.000000Z\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"https:\/\/example.com\/api\/v1\/businesses\/1\/expenses?page=1\",\n        \"last\": \"https:\/\/example.com\/api\/v1\/businesses\/1\/expenses?page=1\",\n        \"prev\": null,\n        \"next\": null\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"path\": \"https:\/\/example.com\/api\/v1\/businesses\/1\/expenses\",\n        \"per_page\": 20,\n        \"to\": 1,\n        \"total\": 1\n    },\n    \"summary\": {\n        \"filtered_total_paise\": 249900,\n        \"month_total_paise\": 384900,\n        \"month_count\": 3,\n        \"voided_count\": 1\n    }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Save an expense.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"category\":\"b\",\"payee\":\"n\",\"amount\":7,\"occurred_on\":\"2026-01-15\",\"payment_method\":\"cash\",\"payment_account_id\":16,\"note\":\"n\",\"idempotency_key\":\"6d61f406-f07d-482d-a284-3e06edfd7f55\"}"
                        },
                        "description": "The expense, general-ledger journal, cash-drawer movement, and audit record either all commit or all roll back."
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/expenses\/{expense_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses\/:expense_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses\/:expense_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "expense_id",
                                    "key": "expense_id",
                                    "value": 1,
                                    "description": "The ID of the expense."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Void an expense atomically.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses\/:expense_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses\/:expense_id\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "expense_id",
                                    "key": "expense_id",
                                    "value": 1,
                                    "description": "The ID of the expense."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"b\"}"
                        },
                        "description": "The void marker, journal reversal, cash-drawer reversal, and audit record either all commit or all roll back."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "POS",
            "description": "\nPOS and cash-register endpoints remain available while onboarding is on the `first_work` step so a shop can complete its first sale. Other business endpoints continue to return `onboarding_incomplete` until setup finishes.",
            "item": [
                {
                    "name": "A barcode is matched whole, and read as GS1 reads it, so a wedge scanner emitting the\n12-digit UPC-A of a pack stored by its 13-digit EAN-13 still finds it. A name is matched\non any part of it. For a camera scan use `items\/by-barcode\/{code}`, which answers with one\nitem or a 404 rather than a list.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/pos\/items",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "atta",
                                    "description": "Barcode, SKU, or item name to search for.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Customer id. Adds `party_price` to every item, so the counter shows what this party pays before the sale is rung up.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/pos\/items?q=atta&contact=42",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"q\":\"b\",\"contact\":22}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/pos\/upi",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/pos\/upi",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/pos\/upi",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"amount\":1,\"payment_account_id\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List held POS carts for the business.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/pos\/carts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/pos\/carts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Hold a POS cart for later checkout.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/pos\/carts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/pos\/carts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"contact_id\":16,\"lines\":[{\"item_id\":16,\"item_batch_id\":16,\"serial_numbers\":[\"n\"],\"quantity\":4326.41688}]}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/pos\/checkout",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/pos\/checkout",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/pos\/checkout",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"contact_id\":16,\"idempotency_key\":\"a4855dc5-0acb-33c3-b921-f4291f719ca0\",\"warehouse_id\":66,\"cart_id\":16,\"lines\":[{\"item_id\":16,\"item_batch_id\":16,\"serial_numbers\":[\"n\"],\"quantity\":4326.41688,\"discount\":77}],\"payments\":[{\"method\":\"cash\",\"payment_account_id\":16,\"amount\":4326.41688}]}"
                        },
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Cash register",
            "description": "\nCash-register and POS endpoints remain available while onboarding is on the `first_work` step so a shop can complete its first POS sale. Other business endpoints continue to return `onboarding_incomplete` until setup finishes.",
            "item": [
                {
                    "name": "GET api\/v1\/businesses\/{business}\/cash-register",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"cash_register_id\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/cash-register\/open",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register\/open",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register\/open",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"cash_register_id\":16,\"opening_float\":22}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/cash-register\/movements",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register\/movements",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register\/movements",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"type\":\"cash_in\",\"cash_register_id\":16,\"amount\":22,\"notes\":\"g\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/cash-register\/close",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register\/close",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register\/close",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"counted_cash\":1,\"cash_register_id\":16,\"closing_notes\":\"n\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Save a counter's receipt printer settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register\/printer",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register\/printer",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"cash_register_id\":1,\"paper\":\"80mm\",\"auto_print\":true,\"cut\":true,\"open_drawer\":true}"
                        },
                        "description": "Every device billing at the counter reads these from `printer` on GET `cash-register` and from `cash_register.printer` on payment accounts, and GET `invoices\/{invoice}\/receipt` applies them. Send only the settings that change. The printer itself is paired on each device and is not stored."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"cash_register_id\":1,\"cash_register_name\":\"Main counter\",\"paper\":\"58mm\",\"auto_print\":true,\"cut\":false,\"open_drawer\":true}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose 58mm or 80mm paper.\",\"errors\":{\"paper\":[\"Choose 58mm or 80mm paper.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get a printer test slip.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/cash-register\/printer\/test",
                            "query": [
                                {
                                    "key": "cash_register_id",
                                    "value": "1",
                                    "description": "Counter the receipt prints at. Its saved printer settings (paper, cut, cash drawer) apply. Omit to use the defaults: 80mm, cut, drawer opens for cash sales. Must match an existing stored value.",
                                    "disabled": false
                                },
                                {
                                    "key": "paper",
                                    "value": "58mm",
                                    "description": "Overrides the counter's paper width: `58mm` (32 characters a line) or `80mm` (48 characters a line).",
                                    "disabled": false
                                },
                                {
                                    "key": "cut",
                                    "value": "",
                                    "description": "Overrides whether the paper is cut at the end: `1` or `0`.",
                                    "disabled": true
                                },
                                {
                                    "key": "open_drawer",
                                    "value": "",
                                    "description": "Overrides whether the cash drawer opens: `1` always opens it, `0` never does. When omitted, the drawer opens only if the counter allows it and the sale has a cash payment.",
                                    "disabled": true
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/cash-register\/printer\/test?cash_register_id=1&paper=58mm&cut=&open_drawer=",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "ESC\/POS bytes for a short slip showing the counter, paper width, cutter and drawer settings, with a numbered line that fills exactly one row when the paper width is right. Use it to check a newly paired printer before the first sale. The drawer opens only when `open_drawer=1` is sent. The response has the same shape as GET `invoices\/{invoice}\/receipt`, with `invoice_id` and `invoice_number` null."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"format\":\"escpos\",\"invoice_id\":null,\"invoice_number\":null,\"cash_register_id\":1,\"paper\":\"80mm\",\"characters_per_line\":48,\"cut\":true,\"opens_drawer\":false,\"auto_print\":false,\"content_base64\":\"G0AbYQEbRQEd...\",\"byte_length\":402,\"text\":\"API Shop\\nPrinter test\"}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Reports",
            "description": "",
            "item": [
                {
                    "name": "View a business report.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/reports",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/reports",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"from\":\"2026-01-15\",\"to\":\"2026-01-15\",\"warehouse\":22}"
                        },
                        "description": "Reports update automatically when bills, returns, expenses and other transactions are saved.\nNo extra confirmation step is required. The P&L description is \"Income and expenses for the selected period\".\nReport descriptions use plain billing language. General ledger labels its entry-number column Reference.\n\nUnregistered businesses have no Taxes category in catalog; tax-summary returns 403.\n\n`warehouse` narrows stock summary, stock valuation, and low stock to one warehouse (low stock then compares that warehouse's quantity with each item's reorder level). The `stock-by-warehouse` report lists every item's stock in every warehouse.\nInventory values use recorded carrying costs independently of editable catalogue prices;\nincomplete legacy movement history retains catalogue estimates. Warehouse allocations\nuse cumulative rounding so their values sum to the whole inventory value.\nCash flow includes actual expense settlements and worker payouts with dated payment\nreversals; unpaid invoice expenses and earned-but-unpaid commissions are not outflows.\n\nFinancial reports include original journal entries and their dated reversals, so invoice edits and cancellations retain history while producing the correct net balance. Each entry is included according to its own accounting date.\nInvoice edits restate the invoice period: reversals use the previous invoice date and replacements use the submitted invoice date. Saving an edit does not move the invoice to today's date. Owners may explicitly change issue_date; cancellation reversals retain their cancellation date."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download a report as PDF or Excel.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/reports\/export",
                            "query": [
                                {
                                    "key": "report",
                                    "value": "profit-loss",
                                    "description": "A report slug from the catalog.",
                                    "disabled": false
                                },
                                {
                                    "key": "format",
                                    "value": "pdf",
                                    "description": "pdf or xlsx.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-04-01",
                                    "description": "Start date, YYYY-MM-DD.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-10-03",
                                    "description": "End date, YYYY-MM-DD, on or after from.",
                                    "disabled": false
                                },
                                {
                                    "key": "warehouse",
                                    "value": "1",
                                    "description": "Optional warehouse of this business; narrows stock-summary, stock-valuation and low-stock.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/reports\/export?report=profit-loss&format=pdf&from=2026-04-01&to=2026-10-03&warehouse=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Supports every report in the report catalog, including profit-loss, balance-sheet,\ntrial-balance, general-ledger, cash-flow and tax-summary. Uses the same rows and totals\nas the web and JSON report, excluding the separate summary cards. Money in Excel is\nnumeric rupees, with signed amounts and two decimal places; dates are native Excel dates.\nProfit is green, loss is red, and zero is neutral in both formats.\nBoth formats include the current shop\/legal name, address, contact details and GSTIN\nwhere registered, plus the saved invoice logo (when enabled), accent and header style.\nHeaders include the report dates and generation timestamp in the business timezone.\nMissing or unreadable logos are omitted without preventing download.\n\nRequires reports and exports permissions, reports.basic and data_export features.\nAdvanced reports also require reports.advanced. Unregistered businesses cannot export\ntax-summary. Tenant and warehouse isolation are enforced.\n\nDates are inclusive. Balance-sheet and trial-balance use to as their as-at date.\nCurrent-stock, payment-account and party-balance reports remain current snapshots,\nmatching the JSON report, and are labelled accordingly. Aging reports use the requested\ndocument period with aging as at today. Downloads are synchronous and online-only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The report file, with attachment filename dukanam-{report}-{from}-{to}.{pdf|xlsx}.",
                            "name": "The report file, with attachment filename dukanam-{report}-{from}-{to}.{pdf|xlsx}."
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Your role does not allow this action.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected format is invalid.\",\"errors\":{\"format\":[\"The selected format is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Stock that is about to go out of date.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/reports\/expiring",
                            "query": [
                                {
                                    "key": "within_days",
                                    "value": "60",
                                    "description": "How far ahead to look, 1-365. Defaults to 30.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/reports\/expiring?within_days=60",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"within_days\":1}"
                        },
                        "description": "Batches still holding stock whose expiry falls within `within_days`, soonest first.\nAlready-expired lots are included and flagged \u2014 the shop has to see and clear them \u2014 and\ncan never be billed. Requires a plan with advanced reports, like every other stock report."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Business compliance guidance",
            "description": "",
            "item": [
                {
                    "name": "Get the compliance profile, registrations, evidence metadata and assessed obligations.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"business_id\": 16,\n    \"state_code\": \"29\",\n    \"profile\": {\n      \"constitution\": \"proprietorship\",\n      \"masked_pan\": \"ABC****34F\",\n      \"district\": \"Bengaluru Urban\",\n      \"local_body\": \"BBMP\",\n      \"premises_type\": \"rented\",\n      \"supply_type\": \"both\",\n      \"gst_registration_status\": \"not_registered\",\n      \"previous_year_turnover_paise\": 180000000,\n      \"other_pan_turnover_paise\": 25000000,\n      \"employee_count\": 4,\n      \"contract_worker_count\": 0,\n      \"female_employee_count\": 2,\n      \"interstate_sales\": false,\n      \"ecommerce_sales\": true,\n      \"imports\": false,\n      \"exports\": false,\n      \"manufactures\": false,\n      \"food_business\": true,\n      \"uses_weighing_scale\": true,\n      \"packs_or_imports_goods\": false,\n      \"pharmacy\": false,\n      \"serves_alcohol\": false,\n      \"fire_risk\": false,\n      \"pollution_activity\": false,\n      \"reminder_days\": [90, 60, 30, 7, 0],\n      \"assessment_completed_at\": \"2026-08-20T12:00:00+05:30\",\n      \"next_review_at\": \"2026-11-20T12:00:00+05:30\"\n    },\n    \"categories\": [{\"id\": 13, \"slug\": \"food-service\", \"name\": \"Restaurant, caf\u00e9 and food service\", \"nic_section\": \"I\"}],\n    \"gst_registrations\": [],\n    \"obligations\": [{\n      \"id\": 81,\n      \"rule_code\": \"fssai-registration-licence\",\n      \"rule_version\": 1,\n      \"title\": \"FSSAI registration or food licence\",\n      \"applicability_reason\": \"Every food business operator must hold the matching registration or licence. Matched using Guidance Shop facts.\",\n      \"applicability_level\": \"required\",\n      \"obligation_type\": \"licence\",\n      \"authority_name\": \"Food Safety and Standards Authority of India\",\n      \"source_url\": \"https:\/\/fssai.gov.in\/business\/registration\",\n      \"application_url\": \"https:\/\/foscos.fssai.gov.in\/\",\n      \"status\": \"action_required\",\n      \"reference_number\": null,\n      \"issued_on\": null,\n      \"due_on\": null,\n      \"expires_on\": null,\n      \"notes\": null,\n      \"manual_override\": false,\n      \"last_assessed_at\": \"2026-08-20T12:00:00+05:30\",\n      \"documents\": []\n    }],\n    \"guidance_notice\": \"Guidance is generated from configurable rules and recorded business facts. Review items marked professional review and verify official sources before relying on them.\",\n    \"options\": {\n      \"constitutions\": {\n        \"proprietorship\": \"Proprietorship\",\n        \"partnership\": \"Partnership firm\",\n        \"llp\": \"Limited Liability Partnership\",\n        \"private_limited\": \"Private limited company\",\n        \"public_limited\": \"Public limited company\",\n        \"opc\": \"One Person Company\",\n        \"huf\": \"Hindu Undivided Family\",\n        \"trust_society\": \"Trust \/ society\",\n        \"cooperative\": \"Co-operative society\",\n        \"government\": \"Government entity\",\n        \"other\": \"Other\"\n      },\n      \"supply_types\": {\"goods\": \"Goods only\", \"services\": \"Services only\", \"both\": \"Goods and services\"},\n      \"gst_statuses\": {\n        \"not_assessed\": \"Not assessed\",\n        \"not_registered\": \"Not registered\",\n        \"pending\": \"Application pending\",\n        \"active\": \"Registered \/ active\",\n        \"suspended\": \"Suspended\",\n        \"cancelled\": \"Cancelled \/ surrendered\"\n      },\n      \"gst_registration_types\": {\n        \"normal\": \"Normal taxpayer\",\n        \"composition\": \"Composition taxpayer\",\n        \"casual\": \"Casual taxable person\",\n        \"non_resident\": \"Non-resident taxable person\",\n        \"isd\": \"Input Service Distributor (ISD)\",\n        \"tds\": \"Tax Deductor (TDS)\",\n        \"tcs\": \"Tax Collector \/ e-commerce operator (TCS)\",\n        \"sez_unit\": \"SEZ unit\",\n        \"sez_developer\": \"SEZ developer\",\n        \"oidar\": \"OIDAR \/ online money gaming supplier\",\n        \"uin\": \"Unique Identity Number holder\",\n        \"temporary\": \"Temporary registration\"\n      }\n    }\n  },\n  \"meta\": {\n    \"available_categories\": [{\"id\": 13, \"slug\": \"food-service\", \"name\": \"Restaurant, caf\u00e9 and food service\", \"nic_section\": \"I\", \"description\": \"Restaurants, caf\u00e9s, caterers, cloud kitchens and mobile food service.\"}]\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update business facts and immediately run the deterministic compliance assessment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/profile",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/profile",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"state_code\":\"29\",\"category_ids\":[13],\"constitution\":\"proprietorship\",\"pan\":\"ABCDE1234F\",\"district\":\"Bengaluru Urban\",\"local_body\":\"BBMP\",\"premises_type\":\"rented\",\"supply_type\":\"both\",\"gst_registration_status\":\"not_registered\",\"previous_year_turnover\":1800000,\"other_pan_turnover\":250000,\"employee_count\":4,\"contract_worker_count\":0,\"female_employee_count\":2,\"interstate_sales\":false,\"ecommerce_sales\":true,\"imports\":false,\"exports\":false,\"manufactures\":false,\"food_business\":true,\"uses_weighing_scale\":true,\"packs_or_imports_goods\":false,\"pharmacy\":false,\"serves_alcohol\":false,\"fire_risk\":false,\"pollution_activity\":false,\"reminder_days\":[90,60,30,7,0]}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"business_id\": 16,\n    \"state_code\": \"29\",\n    \"profile\": {\n      \"constitution\": \"proprietorship\",\n      \"masked_pan\": \"ABC****34F\",\n      \"district\": \"Bengaluru Urban\",\n      \"local_body\": \"BBMP\",\n      \"premises_type\": \"rented\",\n      \"supply_type\": \"both\",\n      \"gst_registration_status\": \"not_registered\",\n      \"previous_year_turnover_paise\": 180000000,\n      \"other_pan_turnover_paise\": 25000000,\n      \"employee_count\": 4,\n      \"contract_worker_count\": 0,\n      \"female_employee_count\": 2,\n      \"interstate_sales\": false,\n      \"ecommerce_sales\": true,\n      \"imports\": false,\n      \"exports\": false,\n      \"manufactures\": false,\n      \"food_business\": true,\n      \"uses_weighing_scale\": true,\n      \"packs_or_imports_goods\": false,\n      \"pharmacy\": false,\n      \"serves_alcohol\": false,\n      \"fire_risk\": false,\n      \"pollution_activity\": false,\n      \"reminder_days\": [90, 60, 30, 7, 0],\n      \"assessment_completed_at\": \"2026-08-20T12:00:00+05:30\",\n      \"next_review_at\": \"2026-11-20T12:00:00+05:30\"\n    },\n    \"categories\": [{\"id\": 13, \"slug\": \"food-service\", \"name\": \"Restaurant, caf\u00e9 and food service\", \"nic_section\": \"I\"}],\n    \"gst_registrations\": [],\n    \"obligations\": [{\n      \"id\": 81,\n      \"rule_code\": \"fssai-registration-licence\",\n      \"rule_version\": 1,\n      \"title\": \"FSSAI registration or food licence\",\n      \"applicability_reason\": \"Every food business operator must hold the matching registration or licence. Matched using Guidance Shop facts.\",\n      \"applicability_level\": \"required\",\n      \"obligation_type\": \"licence\",\n      \"authority_name\": \"Food Safety and Standards Authority of India\",\n      \"source_url\": \"https:\/\/fssai.gov.in\/business\/registration\",\n      \"application_url\": \"https:\/\/foscos.fssai.gov.in\/\",\n      \"status\": \"action_required\",\n      \"reference_number\": null,\n      \"issued_on\": null,\n      \"due_on\": null,\n      \"expires_on\": null,\n      \"notes\": null,\n      \"manual_override\": false,\n      \"last_assessed_at\": \"2026-08-20T12:00:00+05:30\",\n      \"documents\": []\n    }],\n    \"guidance_notice\": \"Guidance is generated from configurable rules and recorded business facts. Review items marked professional review and verify official sources before relying on them.\",\n    \"options\": {\n      \"constitutions\": {\n        \"proprietorship\": \"Proprietorship\",\n        \"partnership\": \"Partnership firm\",\n        \"llp\": \"Limited Liability Partnership\",\n        \"private_limited\": \"Private limited company\",\n        \"public_limited\": \"Public limited company\",\n        \"opc\": \"One Person Company\",\n        \"huf\": \"Hindu Undivided Family\",\n        \"trust_society\": \"Trust \/ society\",\n        \"cooperative\": \"Co-operative society\",\n        \"government\": \"Government entity\",\n        \"other\": \"Other\"\n      },\n      \"supply_types\": {\"goods\": \"Goods only\", \"services\": \"Services only\", \"both\": \"Goods and services\"},\n      \"gst_statuses\": {\n        \"not_assessed\": \"Not assessed\",\n        \"not_registered\": \"Not registered\",\n        \"pending\": \"Application pending\",\n        \"active\": \"Registered \/ active\",\n        \"suspended\": \"Suspended\",\n        \"cancelled\": \"Cancelled \/ surrendered\"\n      },\n      \"gst_registration_types\": {\n        \"normal\": \"Normal taxpayer\",\n        \"composition\": \"Composition taxpayer\",\n        \"casual\": \"Casual taxable person\",\n        \"non_resident\": \"Non-resident taxable person\",\n        \"isd\": \"Input Service Distributor (ISD)\",\n        \"tds\": \"Tax Deductor (TDS)\",\n        \"tcs\": \"Tax Collector \/ e-commerce operator (TCS)\",\n        \"sez_unit\": \"SEZ unit\",\n        \"sez_developer\": \"SEZ developer\",\n        \"oidar\": \"OIDAR \/ online money gaming supplier\",\n        \"uin\": \"Unique Identity Number holder\",\n        \"temporary\": \"Temporary registration\"\n      }\n    }\n  },\n  \"meta\": {\n    \"available_categories\": [{\"id\": 13, \"slug\": \"food-service\", \"name\": \"Restaurant, caf\u00e9 and food service\", \"nic_section\": \"I\", \"description\": \"Restaurants, caf\u00e9s, caterers, cloud kitchens and mobile food service.\"}]\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Re-run assessment against the latest published rule revisions.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/assess",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/assess",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"matched\":8,\"closed\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "POST api\/v1\/businesses\/{business_id}\/compliance\/gst-registrations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/gst-registrations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/gst-registrations",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"registration_type\":\"composition\",\"registration_status\":\"active\",\"gstin\":\"29ABCDE1234F1Z5\",\"uin\":null,\"state_code\":\"29\",\"is_primary\":true,\"valid_from\":\"2026-04-01\",\"valid_until\":null}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 32,\n    \"business_id\": 16,\n    \"registration_type\": \"composition\",\n    \"registration_status\": \"active\",\n    \"gstin\": \"29ABCDE1234F1Z5\",\n    \"uin\": null,\n    \"state_code\": \"29\",\n    \"is_primary\": true,\n    \"valid_from\": \"2026-04-01T00:00:00.000000Z\",\n    \"valid_until\": null,\n    \"created_at\": \"2026-08-20T06:30:00.000000Z\",\n    \"updated_at\": \"2026-08-20T06:30:00.000000Z\"\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "DELETE api\/v1\/businesses\/{business_id}\/compliance\/gst-registrations\/{gstRegistration_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/gst-registrations\/:gstRegistration_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/gst-registrations\/:gstRegistration_id",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "gstRegistration_id",
                                    "key": "gstRegistration_id",
                                    "value": 1,
                                    "description": "The ID of the gstRegistration."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business_id}\/compliance\/obligations\/{complianceObligation_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "complianceObligation_id",
                                    "key": "complianceObligation_id",
                                    "value": 1,
                                    "description": "The ID of the complianceObligation."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 81,\n    \"rule_code\": \"fssai-registration-licence\",\n    \"rule_version\": 1,\n    \"title\": \"FSSAI registration or food licence\",\n    \"applicability_reason\": \"Every food business operator must hold the matching registration or licence. Matched using Guidance Shop facts.\",\n    \"applicability_level\": \"required\",\n    \"obligation_type\": \"licence\",\n    \"authority_name\": \"Food Safety and Standards Authority of India\",\n    \"source_url\": \"https:\/\/fssai.gov.in\/business\/registration\",\n    \"application_url\": \"https:\/\/foscos.fssai.gov.in\/\",\n    \"status\": \"obtained\",\n    \"reference_number\": \"FSSAI-10010022000123\",\n    \"issued_on\": \"2026-04-01\",\n    \"due_on\": null,\n    \"expires_on\": \"2027-03-31\",\n    \"notes\": \"Certificate verified.\",\n    \"manual_override\": false,\n    \"last_assessed_at\": \"2026-08-20T12:00:00+05:30\",\n    \"documents\": [{\n      \"id\": 44,\n      \"original_name\": \"fssai-certificate.pdf\",\n      \"mime_type\": \"application\/pdf\",\n      \"size\": 102400,\n      \"document_number\": \"FSSAI-10010022000123\",\n      \"issued_on\": \"2026-04-01\",\n      \"expires_on\": \"2027-03-31\",\n      \"is_current\": true,\n      \"download_url\": \"https:\/\/billing.example.com\/api\/v1\/businesses\/16\/compliance\/documents\/44\/download\"\n    }]\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "PATCH api\/v1\/businesses\/{business_id}\/compliance\/obligations\/{complianceObligation_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "complianceObligation_id",
                                    "key": "complianceObligation_id",
                                    "value": 1,
                                    "description": "The ID of the complianceObligation."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"obtained\",\"reference_number\":\"LIC-2026-1001\",\"issued_on\":\"2026-04-01\",\"due_on\":null,\"expires_on\":\"2027-03-31\",\"notes\":\"Renewal filed by the accountant.\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 81,\n    \"rule_code\": \"fssai-registration-licence\",\n    \"rule_version\": 1,\n    \"title\": \"FSSAI registration or food licence\",\n    \"applicability_reason\": \"Every food business operator must hold the matching registration or licence. Matched using Guidance Shop facts.\",\n    \"applicability_level\": \"required\",\n    \"obligation_type\": \"licence\",\n    \"authority_name\": \"Food Safety and Standards Authority of India\",\n    \"source_url\": \"https:\/\/fssai.gov.in\/business\/registration\",\n    \"application_url\": \"https:\/\/foscos.fssai.gov.in\/\",\n    \"status\": \"obtained\",\n    \"reference_number\": \"FSSAI-10010022000123\",\n    \"issued_on\": \"2026-04-01\",\n    \"due_on\": null,\n    \"expires_on\": \"2027-03-31\",\n    \"notes\": \"Certificate verified.\",\n    \"manual_override\": false,\n    \"last_assessed_at\": \"2026-08-20T12:00:00+05:30\",\n    \"documents\": [{\n      \"id\": 44,\n      \"original_name\": \"fssai-certificate.pdf\",\n      \"mime_type\": \"application\/pdf\",\n      \"size\": 102400,\n      \"document_number\": \"FSSAI-10010022000123\",\n      \"issued_on\": \"2026-04-01\",\n      \"expires_on\": \"2027-03-31\",\n      \"is_current\": true,\n      \"download_url\": \"https:\/\/billing.example.com\/api\/v1\/businesses\/16\/compliance\/documents\/44\/download\"\n    }]\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "POST api\/v1\/businesses\/{business_id}\/compliance\/obligations\/{complianceObligation_id}\/documents",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id\/documents",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/obligations\/:complianceObligation_id\/documents",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "complianceObligation_id",
                                    "key": "complianceObligation_id",
                                    "value": 1,
                                    "description": "The ID of the complianceObligation."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "document_number",
                                    "value": "FSSAI-10010022000123",
                                    "type": "text",
                                    "description": "Certificate or licence number. Must not be greater than 128 characters."
                                },
                                {
                                    "key": "issued_on",
                                    "value": "2026-04-01",
                                    "type": "text",
                                    "description": "Must be a valid date."
                                },
                                {
                                    "key": "expires_on",
                                    "value": "2027-03-31",
                                    "type": "text",
                                    "description": "Must be a valid date. Must be a date after or equal to <code>issued_on<\/code>."
                                },
                                {
                                    "key": "document",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 81,\n    \"rule_code\": \"fssai-registration-licence\",\n    \"rule_version\": 1,\n    \"title\": \"FSSAI registration or food licence\",\n    \"applicability_reason\": \"Every food business operator must hold the matching registration or licence. Matched using Guidance Shop facts.\",\n    \"applicability_level\": \"required\",\n    \"obligation_type\": \"licence\",\n    \"authority_name\": \"Food Safety and Standards Authority of India\",\n    \"source_url\": \"https:\/\/fssai.gov.in\/business\/registration\",\n    \"application_url\": \"https:\/\/foscos.fssai.gov.in\/\",\n    \"status\": \"obtained\",\n    \"reference_number\": \"FSSAI-10010022000123\",\n    \"issued_on\": \"2026-04-01\",\n    \"due_on\": null,\n    \"expires_on\": \"2027-03-31\",\n    \"notes\": \"Certificate verified.\",\n    \"manual_override\": false,\n    \"last_assessed_at\": \"2026-08-20T12:00:00+05:30\",\n    \"documents\": [{\n      \"id\": 44,\n      \"original_name\": \"fssai-certificate.pdf\",\n      \"mime_type\": \"application\/pdf\",\n      \"size\": 102400,\n      \"document_number\": \"FSSAI-10010022000123\",\n      \"issued_on\": \"2026-04-01\",\n      \"expires_on\": \"2027-03-31\",\n      \"is_current\": true,\n      \"download_url\": \"https:\/\/billing.example.com\/api\/v1\/businesses\/16\/compliance\/documents\/44\/download\"\n    }]\n  }\n}\n",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business_id}\/compliance\/documents\/{complianceDocument_id}\/download",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/compliance\/documents\/:complianceDocument_id\/download",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/compliance\/documents\/:complianceDocument_id\/download",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "The ID of the business."
                                },
                                {
                                    "id": "complianceDocument_id",
                                    "key": "complianceDocument_id",
                                    "value": 1,
                                    "description": "The ID of the complianceDocument."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "GST compliance",
            "description": "",
            "item": [
                {
                    "name": "View GST workspace.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Unregistered businesses cannot access this endpoint, regardless of plan."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Export GSTR-1.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr1",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Unregistered businesses cannot access this endpoint, regardless of plan."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Import GSTR-2B.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr2b",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr2b",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Unregistered businesses cannot access this endpoint, regardless of plan."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr3b",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "2026-08",
                                    "description": "The month, as YYYY-MM.",
                                    "disabled": false
                                },
                                {
                                    "key": "revision",
                                    "value": "1",
                                    "description": "A specific revision. Defaults to the latest.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr3b?period=2026-08&revision=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nPrepare GSTR-3B for a month.\n\nSections 3.1, 3.2, 4, 5 and 6.1 computed from saved documents \u2014 never from current\nmasters, so re-reading an old period reproduces it exactly. A locked revision answers with\nthe figures that were locked rather than recomputing; a draft recomputes on every read.\n\n`itc_basis` says where section 4's other ITC came from: `gstr2b_reconciled` when a GSTR-2B\nhas been imported for the period, `books` when it has not. `not_derived` lists the rows of\nthe form Dukanam cannot compute, which the filer enters on the portal.\n\nThis is preparation data. Dukanam does not file returns.\n\n**Offline:** online-only. It reads a month of recorded transactions, so it belongs in neither the\noffline cache nor the write queue.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "xlsx",
                                    "description": "`json` or `xlsx`. Defaults to `json`.",
                                    "disabled": false
                                },
                                {
                                    "key": "revision",
                                    "value": "1",
                                    "description": "A specific revision. Defaults to the latest.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/export?format=xlsx&revision=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "period",
                                    "key": "period",
                                    "value": "2026-08",
                                    "description": "The month, as YYYY-MM."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"format\":\"json\",\"revision\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"period\":\"2026-08\",\"status\":\"locked\",\"sections\":{}}",
                            "name": "JSON export"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nDownload a prepared GSTR-3B.\n\n`format=json` returns the same payload as the summary endpoint as a file; `format=xlsx`\nreturns a workbook with one sheet per section, money as a number in rupees and a frozen\nheader row, for handing to the shop's accountant.\n\n**Offline:** online-only. The file is built on the server from recorded transactions.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/lock",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/lock",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "period",
                                    "key": "period",
                                    "value": "2026-08",
                                    "description": "The month, as YYYY-MM."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nLock a GSTR-3B period after filing.\n\nComputes the figures once more, stores them and hashes them. The period then answers from\nthat snapshot however the books move afterwards. Locking twice answers `422`; so does\nlocking a period that has not ended, because it cannot have been filed yet.\n\n**Offline:** online-only. Nothing here may be replayed from the write queue \u2014 a lock\nrecords a filing that has already happened, and a stale replay would freeze stale figures.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/amend",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr3b\/:period\/amend",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "period",
                                    "key": "period",
                                    "value": "2026-08",
                                    "description": "The month, as YYYY-MM."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Missed a purchase invoice\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nOpen the next revision of a locked period.\n\nThe locked revision stays readable exactly as it was filed and the new revision starts as\na draft that recomputes from the corrected books. Amending a period that is not locked\nanswers `422` \u2014 an unlocked period is simply edited by correcting the documents.\n\n**Offline:** online-only, for the same reason a lock is.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr9",
                            "query": [
                                {
                                    "key": "financial_year",
                                    "value": "2026-27",
                                    "description": "The year, as YYYY-YY, starting in April.",
                                    "disabled": false
                                },
                                {
                                    "key": "revision",
                                    "value": "1",
                                    "description": "A specific revision. Defaults to the latest.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr9?financial_year=2026-27&revision=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"financial_year\":\"bngzmiy\",\"revision\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nPrepare the GSTR-9 annual working for a financial year.\n\nThis is the **working data**, not the return: the year's outward supplies by nature\n(tables 4 and 5), ITC availed and reversed (6 and 7), tax paid as it was declared (9), the\nHSN summaries (17 and 18), an outward and inward summary by rate, and the month-by-month\nreconciliation of the sales register against GSTR-3B against the journals. The filer reads\nthese onto the portal; Dukanam submits nothing.\n\nTables 4, 5, 6, 7, 17 and 18 are computed from the year's saved documents. Table 9 and the\nreconciliation are rolled up from the twelve monthly GSTR-3B returns, using a month's\n**locked** revision where it has one \u2014 that table reports what was declared, not what the\nbooks say today. `sections.9.filed_months` says how many of the twelve were locked, and\nevery reconciliation row carries `gstr3b_source` of `filed` or `computed`.\n\n`applicability` measures this workspace's turnover against the configured threshold. It is\nnever a gate: aggregate turnover is a PAN-wide figure Dukanam cannot see, and the threshold\nitself moves. A locked revision answers with the figures that were locked; a draft\nrecomputes on every read.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "xlsx",
                                    "description": "`json` or `xlsx`. Defaults to `json`.",
                                    "disabled": false
                                },
                                {
                                    "key": "revision",
                                    "value": "1",
                                    "description": "A specific revision. Defaults to the latest.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/export?format=xlsx&revision=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "financialYear",
                                    "key": "financialYear",
                                    "value": "2026-27",
                                    "description": "The year, as YYYY-YY."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"format\":\"json\",\"revision\":16}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"financial_year\":\"2026-27\",\"status\":\"locked\",\"sections\":{}}",
                            "name": "JSON export"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nDownload a prepared GSTR-9 working.\n\n`format=json` returns the same payload as the summary endpoint as a file; `format=xlsx`\nreturns the workbook to hand to the shop's accountant \u2014 one sheet per table plus the\nreconciliation, money as a number in rupees and a frozen header row.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/lock",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/lock",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "financialYear",
                                    "key": "financialYear",
                                    "value": "2026-27",
                                    "description": "The year, as YYYY-YY."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nLock a GSTR-9 year after filing.\n\nComputes the working once more, stores it and hashes it. The year then answers from that\nsnapshot however the books move afterwards. Locking twice answers `422`; so does locking a\nyear that has not ended, because its annual return cannot have been filed yet.",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Unregistered businesses cannot access this endpoint, regardless of plan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/amend",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/gst\/gstr9\/:financialYear\/amend",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "financialYear",
                                    "key": "financialYear",
                                    "value": "2026-27",
                                    "description": "The year, as YYYY-YY."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Credit note saved after filing\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"GST features are unavailable for an unregistered business.\"}\n\nOpen the next revision of a locked year.\n\nThe locked revision stays readable exactly as it was filed and the new revision starts as a\ndraft that recomputes from the corrected books. Amending a year that is not locked answers\n`422` \u2014 an unlocked year is simply corrected by correcting the documents.",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Billing",
            "description": "",
            "item": [
                {
                    "name": "List plans and activation availability",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Use `razorpay_checkout_enabled` for paid checkout. `paid_plan_activation_enabled` refers only to the\nsupport-only manual activation fallback, while each plan's `activation_available` covers either path.\nEnded paid subscriptions automatically fall back to Free Essentials, preserving paid history and trial ineligibility."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"business\":{\"id\":1,\"free_transition\":{\"subscription_id\":3,\"reason\":\"trial_ended\",\"requires_acknowledgement\":true},\"invoice_allowance\":{\"limit\":50,\"used\":70,\"remaining\":0,\"can_create\":false,\"resets_at\":\"2026-09-30T18:30:00.000000Z\"}},\"paid_plan_activation_enabled\":false,\"razorpay_checkout_enabled\":true,\"plans\":[]}}",
                            "name": "Free fallback (excerpt)"
                        }
                    ]
                },
                {
                    "name": "List subscription payments",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/payments",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/payments?per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns successful subscription charges and mandate authorisations for the business owner.\nOnly captured recurring charges expose an invoice download URL."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download a subscription invoice",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/payments\/:subscriptionPayment_id\/invoice",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/payments\/:subscriptionPayment_id\/invoice",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "subscriptionPayment_id",
                                    "key": "subscriptionPayment_id",
                                    "value": 1,
                                    "description": "The ID of the subscriptionPayment."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Downloads the immutable PDF invoice for a captured recurring subscription charge."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Continue on Free after a subscription ends",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/continue-free",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/continue-free",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"subscription_id\":3}"
                        },
                        "description": "Owner only. Acknowledges the current automatic Free fallback without changing plans,\nresetting invoice usage, or granting another trial. Repeating the same request is safe.\nA stale or unrelated subscription ID returns HTTP 422; another tenant returns HTTP 404.\nExisting invoices remain accessible before and after acknowledgement."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"free_transition\":{\"subscription_id\":3,\"reason\":\"trial_ended\",\"requires_acknowledgement\":false},\"invoice_allowance\":{\"limit\":50,\"used\":70,\"remaining\":0,\"can_create\":false,\"resets_at\":\"2026-09-30T18:30:00.000000Z\"}}}",
                            "name": "Acknowledged Free fallback (excerpt)"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Your plan has changed. Refresh billing before continuing.\",\"errors\":{\"subscription_id\":[\"Your plan has changed. Refresh billing before continuing.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Change the current plan",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/change",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/change",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Idempotency-Key",
                                "value": "upgrade-2026-08-25-01"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"plan_id\":3,\"billing_interval\":\"monthly\",\"idempotency_key\":\"upgrade-2026-08-25-01\"}"
                        },
                        "description": "Paid plans return HTTP 422 while online paid-plan activation is disabled, except for an upgrade from an\nactive Razorpay paid plan. Smart Books to Business is updated in place immediately; Razorpay credits the\nunused current-plan value and charges the prorated difference without creating another trial.\nChanging away from a Razorpay-backed plan cancels that provider subscription immediately before the new\nplan is activated, so mobile clients must confirm an immediate loss of paid access before submitting. If\nRazorpay cannot confirm cancellation, the endpoint returns HTTP 422 and leaves the current plan unchanged.\nSend an `Idempotency-Key` when applying a prorated upgrade. Retrying with the same key returns the completed\noperation and never sends a second provider update; concurrent retries return HTTP 409 until it completes.\nA conflicting target or interval also returns HTTP 409 while another transition owns the subscription."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This plan change is already processing. Retry with the same idempotency key.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Online paid-plan activation is not configured. Contact support to change this plan.\",\"errors\":{\"plan_id\":[\"Online paid-plan activation is not configured. Contact support to change this plan.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Start Razorpay subscription checkout",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/checkout",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/checkout",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"plan_id\":3,\"billing_interval\":\"monthly\"}"
                        },
                        "description": "Creates a price-versioned Razorpay subscription. Mobile clients must pass the returned `subscription_id`\nto Razorpay Standard Checkout and then send the signed result to the confirm endpoint. The effective plan\nprice is calculated on the server and must be at least 100 paise; clients cannot submit an arbitrary amount."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"checkout_id\":1,\"key\":\"rzp_test_example\",\"subscription_id\":\"sub_example\",\"name\":\"Dukanam\",\"description\":\"Smart Books \u00b7 Monthly\",\"amount_paise\":99900,\"currency\":\"INR\",\"trial_days\":14,\"prefill\":{\"name\":\"Shop Owner\",\"email\":\"owner@example.com\",\"contact\":\"9876543210\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Razorpay rejected the configured API credentials.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Razorpay checkout requires a charge of at least 100 paise.\",\"errors\":{\"plan_id\":[\"Razorpay checkout requires a charge of at least 100 paise.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Confirm Razorpay subscription authorisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/checkouts\/:billingCheckout_id\/confirm",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/checkouts\/:billingCheckout_id\/confirm",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "billingCheckout_id",
                                    "key": "billingCheckout_id",
                                    "value": 1,
                                    "description": "The ID of the billingCheckout."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"razorpay_payment_id\":\"b\",\"razorpay_subscription_id\":\"n\",\"razorpay_signature\":\"gzmiyvdljnikhwaykcmyuwpwlvqwrsitcpscqldzsnrwtujwvlxjklqppwqbewtn\"}"
                        },
                        "description": "The server verifies the Razorpay HMAC signature and fetches provider state before granting access.\nTrial access starts only after successful payment-method authorisation; a plan without a trial waits\nfor Razorpay to report the subscription as active. When the checkout replaces another Razorpay plan,\nthe previous provider subscription is cancelled immediately before the replacement is activated."
                    },
                    "response": []
                },
                {
                    "name": "Cancel the paid plan at the end of the current period.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/cancel",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/cancel",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Owner only. Access continues until the provider's current cycle ends. Free referral\ntime (`subscription.provider` is `referral`) ends on its own date and cannot be cancelled."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Free referral time ends on its own date and does not need to be cancelled.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Buy or give up POS logins.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/billing\/pos-seats",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/billing\/pos-seats",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"pos_seats\":2}"
                        },
                        "description": "A POS login costs the seat price per month and is added to the running subscription:\nRazorpay charges the prorated difference for the rest of the cycle immediately and\nevery renewal after it bills the new total. Owner only. The workspace must be on an\nactive paid plan billed online, and seats cannot drop below the logins already in use."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"POS logins are billed on an active paid subscription. Choose a plan first, then add counter logins.\",\"errors\":{\"pos_seats\":[\"POS logins are billed on an active paid subscription. Choose a plan first, then add counter logins.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Referrals",
            "description": "\nRefer other shops and earn free subscription months. Referrals belong to the signed-in\naccount, not to one workspace, so these routes are not business-scoped. The server owns\neligibility, reward calculation and the free-period schedule; clients display what it returns.",
            "item": [
                {
                    "name": "Check a referral code.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/referrals\/codes\/:code",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/referrals\/codes\/:code",
                            "variable": [
                                {
                                    "id": "code",
                                    "key": "code",
                                    "value": "K7M2QX9A",
                                    "description": "The referral code."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "For a registration screen opened from a shared link: tells the app whether the code\nwill be accepted and whose it is (first name only). The code may be a customer's\nreferral code or an influencer partner's link code; `referrer_type` says which.\nSend the same code as `referral_code` on registration.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"code\":\"K7M2QX9A\",\"valid\":true,\"program_enabled\":true,\"referrer_type\":\"customer\",\"referrer_first_name\":\"Priya\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"code\":\"RAVI7K\",\"valid\":true,\"program_enabled\":true,\"referrer_type\":\"partner\",\"referrer_first_name\":\"Ravi\"}}",
                            "name": "Partner link code"
                        }
                    ]
                },
                {
                    "name": "Get the referral dashboard.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/referrals",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/referrals"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the account's referral code and link (created on first call), a ready-to-send\nWhatsApp message and `wa.me` URL, the counters for the Referral & Rewards screen, the\nrunning reward and the projected dates of every waiting one. Waiting rewards start\nonly after all paid time ends; when `paid_coverage.auto_renews` is true those dates\nmove forward each time the paid plan renews. POS counter logins cannot refer (403)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"program\":{\"enabled\":true,\"reward_months\":1,\"reward_plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"reward_plan_source\":\"program_default\"},\"referral_code\":\"K7M2QX9A\",\"referral_link\":\"https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"share\":{\"code\":\"K7M2QX9A\",\"link\":\"https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"message\":\"Hey! Check out Dukanam for billing, stock and khata. You can register using my referral link: https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"whatsapp_url\":\"https:\/\/wa.me\/?text=Hey%21%20Check%20out%20Dukanam\"},\"stats\":{\"total_referrals\":3,\"pending_referrals\":1,\"successful_referrals\":2,\"rewards_earned\":2,\"months_earned\":2,\"available_rewards\":1,\"available_months\":1,\"available_extra_days\":0,\"active_rewards\":1,\"used_rewards\":0},\"paid_coverage\":{\"ends_at\":null,\"auto_renews\":false},\"current_reward\":{\"id\":7,\"status\":\"active\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":{\"id\":17,\"name\":\"Aarogya Medical Store\"},\"referred_name\":\"Ravi Kumar\",\"earned_at\":\"2026-09-01T10:00:00.000000Z\",\"activated_at\":\"2026-09-01T10:00:00.000000Z\",\"starts_at\":\"2026-09-01T10:00:00.000000Z\",\"ends_at\":\"2026-10-01T10:00:00.000000Z\",\"consumed_at\":null},\"upcoming_rewards\":[{\"id\":8,\"status\":\"available\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":null,\"referred_name\":\"Meena S\",\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":null,\"starts_at\":null,\"ends_at\":null,\"consumed_at\":null,\"projected_starts_at\":\"2026-10-01T10:00:00.000000Z\",\"projected_ends_at\":\"2026-11-01T10:00:00.000000Z\",\"starts_after_paid_plan\":false}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List referral history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/referrals\/history",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "reward_earned",
                                    "description": "Filter by one status.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/referrals\/history?status=reward_earned&per_page=20"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"architecto\",\"per_page\":22}"
                        },
                        "description": "The people who registered with the account's code, newest first, with each one's\nstatus (`registered`, `subscription_pending`, `subscription_purchased`,\n`reward_earned`, `reward_applied`) and the reward it earned."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":12,\"status\":\"reward_earned\",\"status_label\":\"Reward earned\",\"steps\":[{\"status\":\"registered\",\"label\":\"Registered\",\"reached\":true},{\"status\":\"subscription_pending\",\"label\":\"Subscription pending\",\"reached\":true},{\"status\":\"subscription_purchased\",\"label\":\"Subscription purchased\",\"reached\":true},{\"status\":\"reward_earned\",\"label\":\"Reward earned\",\"reached\":true},{\"status\":\"reward_applied\",\"label\":\"Reward applied\",\"reached\":false}],\"referred\":{\"name\":\"Meena S\"},\"source\":\"api\",\"registered_at\":\"2026-09-10T08:00:00.000000Z\",\"subscription_pending_at\":\"2026-09-12T08:00:00.000000Z\",\"subscription_purchased_at\":\"2026-09-15T10:00:00.000000Z\",\"reward_earned_at\":\"2026-09-15T10:00:00.000000Z\",\"reward_applied_at\":null,\"reward_skipped_reason\":null,\"reward\":{\"id\":8,\"status\":\"available\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":null,\"referred_name\":null,\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":null,\"starts_at\":null,\"ends_at\":null,\"consumed_at\":null}}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":20,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List earned rewards.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/referrals\/rewards",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "available",
                                    "description": "Filter by available, active or consumed.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/referrals\/rewards?status=available"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"architecto\"}"
                        },
                        "description": "Every reward the account has earned. `available` rewards are earned and waiting,\n`active` is running now as free subscription time, and `consumed` ones are used up.\nA reward a paid plan interrupted is `available` again with `remaining_days` set."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":8,\"status\":\"available\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":null,\"referred_name\":\"Meena S\",\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":null,\"starts_at\":null,\"ends_at\":null,\"consumed_at\":null}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Apply waiting rewards.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/referrals\/rewards\/apply",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/referrals\/rewards\/apply"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"business_id\":17}"
                        },
                        "description": "Optionally chooses which owned workspace waiting rewards run on, then starts the next\none immediately when no paid plan is running. With a paid plan running, nothing\nstarts: rewards never interrupt paid time and begin on their own once it ends.\nIdempotent. Returns the refreshed referral dashboard."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"program\":{\"enabled\":true,\"reward_months\":1,\"reward_plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"reward_plan_source\":\"program_default\"},\"referral_code\":\"K7M2QX9A\",\"referral_link\":\"https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"share\":{\"code\":\"K7M2QX9A\",\"link\":\"https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"message\":\"Hey! You can register using my referral link: https:\/\/dukanam.com\/register?ref=K7M2QX9A\",\"whatsapp_url\":\"https:\/\/wa.me\/?text=Hey%21\"},\"stats\":{\"total_referrals\":1,\"pending_referrals\":0,\"successful_referrals\":1,\"rewards_earned\":1,\"months_earned\":1,\"available_rewards\":0,\"available_months\":0,\"available_extra_days\":0,\"active_rewards\":1,\"used_rewards\":0},\"paid_coverage\":{\"ends_at\":null,\"auto_renews\":false},\"current_reward\":{\"id\":8,\"status\":\"active\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":{\"id\":17,\"name\":\"Aarogya Medical Store\"},\"referred_name\":\"Meena S\",\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":\"2026-09-24T10:00:00.000000Z\",\"starts_at\":\"2026-09-24T10:00:00.000000Z\",\"ends_at\":\"2026-10-24T10:00:00.000000Z\",\"consumed_at\":null},\"upcoming_rewards\":[]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected business id is invalid.\",\"errors\":{\"business_id\":[\"The selected business id is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Referral program administration",
            "description": "",
            "item": [
                {
                    "name": "Get referral program settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/referral-settings",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/referral-settings"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Super admin only. `reward_plan_id` is the configured plan, or the entry paid plan\nwhen none is configured. It is the fallback: a referrer who has paid before is\nrewarded with the plan they last paid for, and only a referrer who never paid gets\nthis plan. Program totals are included for the admin overview."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"enabled\":true,\"reward_plan_id\":2,\"reward_months\":1,\"whatsapp_message\":\"Hey! Check out Dukanam. You can register using my referral link: {link}\",\"placeholders\":[\"{link}\",\"{code}\",\"{name}\"],\"totals\":{\"referrals\":42,\"successful\":9,\"rewards\":9,\"months_granted\":9,\"rewards_running\":3}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update referral program settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/referral-settings",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/referral-settings"
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"enabled\":true,\"reward_plan_id\":2,\"reward_months\":1,\"whatsapp_message\":\"Hey! Check out Dukanam. You can register using my referral link: {link}\"}"
                        },
                        "description": "Super admin only. Takes effect for the next reward earned; rewards already earned\nkeep the plan and months they were earned with. Turning the program off stops new\nsign-ups from being attributed and new rewards from being earned."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"enabled\":true,\"reward_plan_id\":3,\"reward_months\":2,\"whatsapp_message\":\"Join me on Dukanam: {link}\",\"placeholders\":[\"{link}\",\"{code}\",\"{name}\"],\"totals\":{\"referrals\":42,\"successful\":9,\"rewards\":9,\"months_granted\":9,\"rewards_running\":3}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose an active paid plan as the referral reward.\",\"errors\":{\"reward_plan_id\":[\"Choose an active paid plan as the referral reward.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List all referrals.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/referrals",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "reward_earned",
                                    "description": "Filter by registered, subscription_pending, subscription_purchased, reward_earned or reward_applied.",
                                    "disabled": false
                                },
                                {
                                    "key": "search",
                                    "value": "priya",
                                    "description": "Match the referrer's or referred person's name or email, or the code.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/referrals?status=reward_earned&search=priya&per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"architecto\",\"search\":\"n\",\"per_page\":7}"
                        },
                        "description": "Super admin only. Every referral with both accounts, its status and any reward."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":12,\"code\":\"K7M2QX9A\",\"status\":\"reward_earned\",\"status_label\":\"Reward earned\",\"source\":\"web\",\"referrer\":{\"id\":4,\"name\":\"Priya Rao\",\"email\":\"priya@example.com\"},\"referred\":{\"id\":31,\"name\":\"Meena S\",\"email\":\"meena@example.com\"},\"qualifying_business\":{\"id\":40,\"name\":\"Meena Stores\"},\"registered_at\":\"2026-09-10T08:00:00.000000Z\",\"subscription_pending_at\":\"2026-09-12T08:00:00.000000Z\",\"subscription_purchased_at\":\"2026-09-15T10:00:00.000000Z\",\"reward_earned_at\":\"2026-09-15T10:00:00.000000Z\",\"reward_applied_at\":null,\"reward_skipped_reason\":null,\"reward\":{\"id\":8,\"status\":\"available\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":null,\"referred_name\":null,\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":null,\"starts_at\":null,\"ends_at\":null,\"consumed_at\":null}}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List rewards granted.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/referral-rewards",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Filter by available, active or consumed.",
                                    "disabled": false
                                },
                                {
                                    "key": "search",
                                    "value": "priya",
                                    "description": "Match the receiving account's name or email.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/referral-rewards?status=active&search=priya&per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"architecto\",\"search\":\"n\",\"per_page\":7}"
                        },
                        "description": "Super admin only. Who received referral rewards, on which workspace and plan, and\nwhether each is waiting, running or used."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":8,\"status\":\"active\",\"months\":1,\"remaining_days\":null,\"plan\":{\"id\":2,\"name\":\"Smart Books\",\"slug\":\"smart\"},\"business\":{\"id\":17,\"name\":\"Aarogya Medical Store\"},\"referred_name\":\"Meena S\",\"earned_at\":\"2026-09-15T10:00:00.000000Z\",\"activated_at\":\"2026-09-24T10:00:00.000000Z\",\"starts_at\":\"2026-09-24T10:00:00.000000Z\",\"ends_at\":\"2026-10-24T10:00:00.000000Z\",\"consumed_at\":null,\"user\":{\"id\":4,\"name\":\"Priya Rao\",\"email\":\"priya@example.com\"},\"referral_id\":12,\"subscription_id\":95}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Data exports",
            "description": "\nAn export too large to finish inside a request is generated on the queue. The export endpoint\nanswers **202** with the record below; poll it until `status` is `completed`, then fetch\n`download_url`. Generated files are a convenience copy of data the workspace already owns and\nare deleted once they expire.",
            "item": [
                {
                    "name": "Export business data",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/exports",
                            "query": [
                                {
                                    "key": "type",
                                    "value": "invoices",
                                    "description": "Export type, or several comma-separated.",
                                    "disabled": false
                                },
                                {
                                    "key": "format",
                                    "value": "xlsx",
                                    "description": "Output format, `csv` or `xlsx`. Defaults to `csv`.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-04-01",
                                    "description": "date Start of the period, for exports that carry a date.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2027-03-31",
                                    "description": "date End of the period, for exports that carry a date.",
                                    "disabled": false
                                },
                                {
                                    "key": "async",
                                    "value": "1",
                                    "description": "Generate on the queue and return the export to poll, whatever its size.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/exports?type=invoices&format=xlsx&from=2026-04-01&to=2027-03-31&async=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"type\":[\"architecto\"],\"format\":\"csv\",\"from\":\"2026-01-15\",\"to\":\"2026-01-15\"}"
                        },
                        "description": "Reporting exports download as `dukanam-{type}-YYYY-MM-DD.{csv|xlsx}`. `format=csv` stays the default,\nso an existing caller sees no change. `format=xlsx` returns a workbook with one sheet per requested\nsection, a frozen header row, real dates and money as numbers a spreadsheet can sum.\n\n`type` accepts several sections at once \u2014 `type=invoices,expenses` or `type[]=invoices&type[]=expenses` \u2014\nwhich requires `format=xlsx`, since a CSV file holds one table. Several sections download as\n`dukanam-export-YYYY-MM-DD.xlsx`.\n\n`from` and `to` narrow ledger, invoice and expense exports to a period. Contact exports carry lifetime\nbalances and refuse a date range rather than quietly ignoring it.\n\nAn export larger than the queued-export threshold is generated on the queue: the response is **202**\ncarrying the export record, which is polled until `status` is `completed` and then fetched from\n`download_url`. Pass `async=1` to ask for that regardless of size. The web workspace keeps streaming\nits downloads inline, since a browser link has nowhere to poll.\n\nInvoice CSV and Excel exports use readable status labels, such as Saved, instead of internal status codes.\n\nExports are online-only: the file is generated on the server from the recorded transactions, and nothing here\nbelongs in the app's offline cache or its write queue.\n\nThe legacy `business-backup` type returns a `dukanam-business-export-v2` owner\/admin-only customer-data\nportability export named `dukanam-business-export-YYYY-MM-DD.json`. It includes item photos and compliance\nevidence content, item classifications, GST percentage masters, sale warranty snapshots and warranty delivery records,\nbut is not a restorable platform backup. Warranty tokens are private buyer access links;\nprotect the archive accordingly."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"data\":{\"uuid\":\"9b5f\u2026\",\"types\":[\"invoices\"],\"format\":\"xlsx\",\"status\":\"queued\",\"download_url\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Several sections can only be exported together as a workbook. Use format=xlsx or export one type at a time.\",\"errors\":{\"format\":[\"Several sections can only be exported together as a workbook. Use format=xlsx or export one type at a time.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Export the books for Tally Prime",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/exports\/tally",
                            "query": [
                                {
                                    "key": "mode",
                                    "value": "both",
                                    "description": "What to export: `masters`, `vouchers` or `both`. Defaults to `both`.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-04-01",
                                    "description": "date Start of the period. Required unless `mode=masters`.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2027-03-31",
                                    "description": "date End of the period. Required unless `mode=masters`.",
                                    "disabled": false
                                },
                                {
                                    "key": "async",
                                    "value": "1",
                                    "description": "Generate on the queue and return the export to poll, whatever its size.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/exports\/tally?mode=both&from=2026-04-01&to=2027-03-31&async=1",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"mode\":\"masters\",\"from\":\"2026-01-15\",\"to\":\"2026-01-15\"}"
                        },
                        "description": "Returns Tally-compatible XML: the shop's chart of accounts, parties, units and stock items as\nmasters, and its accounting entries as accounting vouchers. The CA imports the file into a Tally\ncompany with **Gateway of Tally \u2192 Import \u2192 Vouchers**, which is how a shop hands its year over\nwithout keeping a second set of books.\n\n`mode` chooses what the file carries \u2014 `masters`, `vouchers`, or `both` (the default). A voucher\nexport needs `from` and `to` and covers at most one financial year per call; a masters export is\nthe whole chart and refuses a date range.\n\nVouchers are built from the same accounting entries Dukanam's own trial balance is built from, so the\ntwo agree. A voucher export starting after the books did also carries one opening journal dated the\nday before `from`, holding every ledger and party balance as it stood \u2014 without it the CA would\nreceive a year of movement with no starting position.\n\nEach voucher carries a `REMOTEID` derived from Dukanam's own ids, so **re-importing an overlapping\ndate range updates the vouchers already there instead of writing a second copy of the same sales**.\n\nThe file is accounting-only: stock items arrive as masters with their units and HSN codes, but the\nvouchers carry ledger entries rather than inventory allocations, so Tally's stock summary is not\npopulated from this export. The mapping from Dukanam's chart of accounts onto Tally's groups is\nwritten into the top of the file as a comment, for the accountant to check.\n\nA large export is generated on the queue exactly as the workbook export is: the response is **202**\ncarrying the export record, polled until `status` is `completed` and then fetched from `download_url`.\nPass `async=1` to ask for that whatever the size. This is online-only \u2014 nothing here belongs in the\napp's offline cache or its write queue."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The generated Tally XML.",
                            "name": "The generated Tally XML."
                        },
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"data\":{\"uuid\":\"9b5f\u2026\",\"types\":[\"tally-both\"],\"format\":\"tally\",\"status\":\"queued\",\"filename\":\"dukanam-tally-2026-09-15.xml\",\"download_url\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"A Tally voucher export needs both a start and an end date.\",\"errors\":{\"from\":[\"A Tally voucher export needs both a start and an end date.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List queued exports.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/exports\/queued",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/exports\/queued",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Newest first, whatever their status, so a failed export is visible rather than silent."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Read one queued export.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/exports\/queued\/:dataExport_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/exports\/queued\/:dataExport_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "dataExport_id",
                                    "key": "dataExport_id",
                                    "value": 1,
                                    "description": "The ID of the dataExport."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download a generated export.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/exports\/queued\/:dataExport_id\/download",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/exports\/queued\/:dataExport_id\/download",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "dataExport_id",
                                    "key": "dataExport_id",
                                    "value": 1,
                                    "description": "The ID of the dataExport."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> The generated CSV or workbook.",
                            "name": "The generated CSV or workbook."
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"This export is not ready yet.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\"message\":\"This export has expired. Request it again.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Team access",
            "description": "\nOwners and administrators can manage workspace members. Smart Books supports one accountant seat in addition to the owner. Business supports all documented roles, with five total seats including the owner and pending invitations.",
            "item": [
                {
                    "name": "List team members, pending invitations, and the 25 most recent expired invitations.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"members\":[{\"id\":2,\"name\":\"Priya Rao\",\"email\":\"priya@example.com\",\"role\":\"cashier\",\"status\":\"active\",\"joined_at\":\"2026-08-21T12:00:00.000000Z\"}],\"invitations\":[],\"roles\":{\"cashier\":{\"label\":\"Cashier\",\"description\":\"POS, sales, and cash register access.\"},\"accountant\":{\"label\":\"Accountant\",\"description\":\"Sales, purchases, inventory, accounting, reports, compliance, and exports.\"}},\"seats\":{\"used\":2,\"limit\":5,\"active\":2,\"pending\":0}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Invite a team member.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/invitations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/invitations",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"email\":\"cashier@example.com\",\"role\":\"cashier\"}"
                        },
                        "description": "Pending invitations reserve a seat and expire after seven days."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":12,\"email\":\"cashier@example.com\",\"role\":\"cashier\",\"status\":\"pending\",\"expires_at\":\"2026-08-28T12:00:00.000000Z\",\"accepted_at\":null,\"invited_by\":{\"id\":1,\"name\":\"Workspace Owner\"}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Resend a pending or expired invitation with a new secure token.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/invitations\/:teamInvitation_id\/resend",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/invitations\/:teamInvitation_id\/resend",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "teamInvitation_id",
                                    "key": "teamInvitation_id",
                                    "value": 1,
                                    "description": "The ID of the teamInvitation."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":12,\"email\":\"cashier@example.com\",\"role\":\"cashier\",\"status\":\"pending\",\"expires_at\":\"2026-08-28T12:00:00.000000Z\",\"accepted_at\":null,\"invited_by\":{\"id\":1,\"name\":\"Workspace Owner\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"All 2 workspace seats are already assigned or reserved.\",\"errors\":{\"email\":[\"All 2 workspace seats are already assigned or reserved.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Cancel a pending invitation and release its reserved seat.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/invitations\/:teamInvitation_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/invitations\/:teamInvitation_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "teamInvitation_id",
                                    "key": "teamInvitation_id",
                                    "value": 1,
                                    "description": "The ID of the teamInvitation."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Only the owner can manage administrator invitations.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Change a member's role or suspend\/reactivate access.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/members\/:member_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/members\/:member_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"role\":\"manager\",\"status\":\"active\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":2,\"name\":\"Priya Rao\",\"email\":\"priya@example.com\",\"role\":\"manager\",\"status\":\"active\",\"joined_at\":\"2026-08-21T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"All 2 workspace seats are already assigned or reserved.\",\"errors\":{\"role\":[\"All 2 workspace seats are already assigned or reserved.\"],\"status\":[\"All 2 workspace seats are already assigned or reserved.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Remove a member's workspace access without deleting their user account.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/members\/:member_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/members\/:member_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a POS login against a paid counter seat.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/pos-logins",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/pos-logins",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Ravi Kumar\",\"email\":\"counter@example.com\",\"password\":\"counter-password\"}"
                        },
                        "description": "A POS login can open the billing counter and its cash drawer and nothing else. Seats\nare bought with `POST \/businesses\/{business}\/billing\/pos-seats`; creating a login\nwithout a free paid seat returns `422`. Unlike an invitation the password is set here\nand handed to the counter staff directly."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":7,\"name\":\"Ravi Kumar\",\"email\":\"counter@example.com\",\"role\":\"pos\",\"status\":\"active\",\"joined_at\":\"2026-09-02T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Buy a POS login before creating counter staff.\",\"errors\":{\"email\":[\"Buy a POS login before creating counter staff.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Replace a POS login's password and sign its devices out.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/team\/pos-logins\/:member_id\/password",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/team\/pos-logins\/:member_id\/password",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"password\":\"new-counter-password\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":7,\"name\":\"Ravi Kumar\",\"email\":\"counter@example.com\",\"role\":\"pos\",\"status\":\"active\",\"joined_at\":\"2026-09-02T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"That member is not a POS login.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Team invitations",
            "description": "",
            "item": [
                {
                    "name": "Accept a team invitation as an existing user.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/team-invitations\/:token\/accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/team-invitations\/:token\/accept",
                            "variable": [
                                {
                                    "id": "token",
                                    "key": "token",
                                    "value": "4WvBr4F8Dmcx3FJkL1nEz7PcQs2Yu9Aa",
                                    "description": "The opaque token from the invitation email."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Send a valid Sanctum bearer token belonging to the invited email. This endpoint does not create a new token."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":2,\"name\":\"Priya Rao\",\"email\":\"cashier@example.com\"},\"business\":{\"id\":1,\"name\":\"Anika Stores\",\"role\":\"cashier\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"email\":[\"Sign in with the email address that received this invitation.\"],\"invitation\":[\"This workspace is no longer available.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Inspect a team invitation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/team-invitations\/:token",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/team-invitations\/:token",
                            "variable": [
                                {
                                    "id": "token",
                                    "key": "token",
                                    "value": "4WvBr4F8Dmcx3FJkL1nEz7PcQs2Yu9Aa",
                                    "description": "The opaque token from the invitation email."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "This endpoint does not require authentication. The opaque token is supplied by the invitation email.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"business\":{\"id\":1,\"name\":\"Anika Stores\"},\"email\":\"cashier@example.com\",\"role\":\"cashier\",\"role_label\":\"Cashier\",\"status\":\"pending\",\"expires_at\":\"2026-08-28T12:00:00.000000Z\",\"existing_account\":false}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create an account and accept a team invitation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/team-invitations\/:token\/register-and-accept",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/team-invitations\/:token\/register-and-accept",
                            "variable": [
                                {
                                    "id": "token",
                                    "key": "token",
                                    "value": "4WvBr4F8Dmcx3FJkL1nEz7PcQs2Yu9Aa",
                                    "description": "The opaque token from the invitation email."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Priya Rao\",\"password\":\"secret-pass-123\",\"device_name\":\"Priya's phone\",\"password_confirmation\":\"secret-pass-123\"}"
                        },
                        "description": "Use this unauthenticated endpoint only when the invited email does not already belong to a Dukanam user. The response includes a new Sanctum device token.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":2,\"name\":\"Priya Rao\",\"email\":\"cashier@example.com\"},\"business\":{\"id\":1,\"name\":\"Anika Stores\",\"role\":\"cashier\"},\"token\":\"1|new-mobile-token\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Sign in as the invited user to accept this invitation.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This invitation has expired or is no longer available.\",\"errors\":{\"invitation\":[\"This invitation has expired or is no longer available.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Testimonials",
            "description": "",
            "item": [
                {
                    "name": "List my workspace testimonials.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/testimonials",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "12",
                                    "description": "Results per page, from 1 to 24.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/testimonials?per_page=12",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns only testimonials submitted by the signed-in user for this workspace.\nIncludes admin-authored drafts linked to this business owner; this grants\nno workspace access. photo_url may be null for a text-only draft."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"store_type\":\"pharmacy\",\"feedback\":\"Dukanam keeps our counter records together.\",\"photo_url\":\"https:\/\/dukanam.com\/testimonials\/53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\/photo\",\"status\":\"pending\",\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"published_at\":null}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":12,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Submit a testimonial from a subscribed workspace.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/testimonials",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/testimonials",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "store_type",
                                    "value": "pharmacy",
                                    "type": "text",
                                    "description": "Industry page that should receive the testimonial after approval. Accepts configured industry slugs, including electrical-store, paint-store, sanitaryware-store and pesticide-store."
                                },
                                {
                                    "key": "feedback",
                                    "value": "Dukanam made our daily medicine counter billing easier to review, and the purchase and stock records now stay together for closing.",
                                    "type": "text",
                                    "description": "First-hand feedback, 40 to 1,200 characters. Must be at least 40 characters. Must not be greater than 1200 characters."
                                },
                                {
                                    "key": "consent",
                                    "value": "1",
                                    "type": "text",
                                    "description": "Must be true to confirm content rights, consent from people shown, and permission to moderate and publish the submitted name, shop, photo and feedback. Must be accepted."
                                },
                                {
                                    "key": "website",
                                    "value": "",
                                    "type": "text",
                                    "description": "Spam-trap field. Omit it or leave it empty."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Requires a usable non-free subscription. Name, email and shop identity are\ntaken from the authenticated user and workspace, not request fields."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Thank you. Your testimonial is awaiting review.\",\"data\":{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"store_type\":\"pharmacy\",\"feedback\":\"Dukanam keeps our counter records together.\",\"photo_url\":\"https:\/\/dukanam.com\/testimonials\/53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\/photo\",\"status\":\"pending\",\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"published_at\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List approved public testimonials.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/testimonials",
                            "query": [
                                {
                                    "key": "store_type",
                                    "value": "electrical-store",
                                    "description": "Filter by one configured industry slug, including electrical-store, paint-store, sanitaryware-store and pesticide-store.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "12",
                                    "description": "Results per page, from 1 to 24.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/testimonials?store_type=electrical-store&per_page=12"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Includes only consented stories; internal uxcrafts.com owners and businesses\nare excluded. Admin-authored stories may be text-only.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"store_type\":\"pharmacy\",\"owner_name\":\"Dr. Kavitha Reddy\",\"shop_name\":\"Aarogya Medical & General Store\",\"feedback\":\"Dukanam made our daily medicine counter billing easier to review.\",\"photo_url\":\"https:\/\/dukanam.com\/testimonials\/53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\/photo\",\"published_at\":\"2026-08-31T10:30:00.000000Z\",\"location\":null}],\"links\":{\"first\":\"https:\/\/dukanam.com\/api\/v1\/testimonials?page=1\",\"last\":\"https:\/\/dukanam.com\/api\/v1\/testimonials?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[],\"path\":\"https:\/\/dukanam.com\/api\/v1\/testimonials\",\"per_page\":12,\"to\":1,\"total\":1}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Testimonial moderation",
            "description": "",
            "item": [
                {
                    "name": "List testimonial submissions for moderation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/testimonials",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "pending",
                                    "description": "Filter by pending, approved or rejected.",
                                    "disabled": false
                                },
                                {
                                    "key": "store_type",
                                    "value": "electrical-store",
                                    "description": "Filter by one configured industry slug, including electrical-store, paint-store, sanitaryware-store and pesticide-store.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "24",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/testimonials?status=pending&store_type=electrical-store&per_page=24"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"store_type\":\"pharmacy\",\"user_id\":42,\"business_id\":17,\"owner_name\":\"Dr. Kavitha Reddy\",\"shop_name\":\"Aarogya Medical & General Store\",\"contact_email\":\"kavitha@example.com\",\"feedback\":\"Dukanam made our daily medicine counter billing easier to review.\",\"photo_url\":\"https:\/\/dukanam.com\/testimonials\/53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\/photo\",\"photo_mime_type\":\"image\/webp\",\"photo_size\":98214,\"status\":\"pending\",\"consent_at\":\"2026-08-31T10:15:00.000000Z\",\"review_note\":null,\"reviewed_by\":null,\"reviewed_at\":null,\"published_at\":null,\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"location\":null,\"source\":\"customer\",\"consent_note\":null}],\"links\":{\"first\":\"https:\/\/dukanam.com\/api\/v1\/admin\/testimonials?page=1\",\"last\":\"https:\/\/dukanam.com\/api\/v1\/admin\/testimonials?page=1\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"from\":1,\"last_page\":1,\"links\":[],\"path\":\"https:\/\/dukanam.com\/api\/v1\/admin\/testimonials\",\"per_page\":24,\"to\":1,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a customer testimonial draft.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/testimonials",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/testimonials"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "business_id",
                                    "value": "17",
                                    "type": "text",
                                    "description": "Existing customer business ID. Required on creation; prohibited on editing. Owners or businesses with uxcrafts.com or subdomain emails are excluded. Must match an existing stored value."
                                },
                                {
                                    "key": "store_type",
                                    "value": "pharmacy",
                                    "type": "text",
                                    "description": "Optional configured industry page slug. An unassigned draft can be saved but requires a page before approval."
                                },
                                {
                                    "key": "owner_name",
                                    "value": "Kavitha Reddy",
                                    "type": "text",
                                    "description": "Optional display-name correction. Defaults to the business owner on creation and keeps the current name on editing. Must be at least 1 character. Must not be greater than 120 characters."
                                },
                                {
                                    "key": "shop_name",
                                    "value": "Aarogya Medical Store",
                                    "type": "text",
                                    "description": "Optional business display name; defaults to the registered business name. Must be at least 1 character. Must not be greater than 160 characters."
                                },
                                {
                                    "key": "location",
                                    "value": "Hyderabad, Telangana",
                                    "type": "text",
                                    "description": "Optional public city\/region, up to 160 characters. Defaults to the business city on creation. Must not be greater than 160 characters."
                                },
                                {
                                    "key": "feedback",
                                    "value": "We have had a positive experience using Dukanam for our pharmacy in Hyderabad.",
                                    "type": "text",
                                    "description": "Customer-supported wording, 40\u20131200 characters. Always saved pending; editing unpublishes the previous version. Must be at least 40 characters. Must not be greater than 1200 characters."
                                },
                                {
                                    "key": "remove_photo",
                                    "value": "",
                                    "type": "text",
                                    "description": "Remove the existing photo on editing; cannot be combined with a new photo."
                                },
                                {
                                    "key": "consent",
                                    "value": "1",
                                    "type": "text",
                                    "description": "Confirm permission for the exact wording, attribution, location and any photo. False or omitted clears consent; drafts without consent cannot be approved."
                                },
                                {
                                    "key": "consent_note",
                                    "value": "Owner approved this wording and public attribution in our customer conversation.",
                                    "type": "text",
                                    "description": "Private source\/evidence of permission, maximum 1000 characters. Required when consent is true; never public. This field is required when <code>consent<\/code> is <code>1<\/code> or <code>true<\/code>. Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Super admins may draft on behalf of a customer on any plan. Identity and\nprivate contact email come from the selected business and its owner;\ndisplay-name corrections are allowed. uxcrafts.com and its subdomains are\nexcluded for both the owner and business email. Drafts always start pending.\nPhotos are optional. Permission for the exact wording and attribution must\nbe recorded with consent=true and a private consent_note before approval."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"business_id\":17,\"user_id\":42,\"store_type\":\"pharmacy\",\"owner_name\":\"Kavitha Reddy\",\"shop_name\":\"Aarogya Medical Store\",\"location\":\"Hyderabad\",\"feedback\":\"We have had a positive experience using Dukanam for our pharmacy in Hyderabad.\",\"source\":\"admin\",\"status\":\"pending\",\"photo_url\":null,\"photo_mime_type\":null,\"photo_size\":null,\"consent_at\":null,\"consent_note\":null,\"published_at\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose a customer business with an owner outside uxcrafts.com and its subdomains.\",\"errors\":{\"business_id\":[\"Choose a customer business with an owner outside uxcrafts.com and its subdomains.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Edit a testimonial and return it to pending review.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/testimonials\/:public_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/testimonials\/:public_id",
                            "variable": [
                                {
                                    "id": "public_id",
                                    "key": "public_id",
                                    "value": "53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29",
                                    "description": "Public testimonial UUID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "store_type",
                                    "value": "pharmacy",
                                    "type": "text",
                                    "description": "Optional configured industry page slug. An unassigned draft can be saved but requires a page before approval."
                                },
                                {
                                    "key": "owner_name",
                                    "value": "Kavitha Reddy",
                                    "type": "text",
                                    "description": "Optional display-name correction. Defaults to the business owner on creation and keeps the current name on editing. Must be at least 1 character. Must not be greater than 120 characters."
                                },
                                {
                                    "key": "shop_name",
                                    "value": "Aarogya Medical Store",
                                    "type": "text",
                                    "description": "Optional business display name; defaults to the registered business name. Must be at least 1 character. Must not be greater than 160 characters."
                                },
                                {
                                    "key": "location",
                                    "value": "Hyderabad, Telangana",
                                    "type": "text",
                                    "description": "Optional public city\/region, up to 160 characters. Defaults to the business city on creation. Must not be greater than 160 characters."
                                },
                                {
                                    "key": "feedback",
                                    "value": "We have had a positive experience using Dukanam for our pharmacy in Hyderabad.",
                                    "type": "text",
                                    "description": "Customer-supported wording, 40\u20131200 characters. Always saved pending; editing unpublishes the previous version. Must be at least 40 characters. Must not be greater than 1200 characters."
                                },
                                {
                                    "key": "remove_photo",
                                    "value": "",
                                    "type": "text",
                                    "description": "Remove the existing photo on editing; cannot be combined with a new photo."
                                },
                                {
                                    "key": "consent",
                                    "value": "1",
                                    "type": "text",
                                    "description": "Confirm permission for the exact wording, attribution, location and any photo. False or omitted clears consent; drafts without consent cannot be approved."
                                },
                                {
                                    "key": "consent_note",
                                    "value": "Owner approved this wording and public attribution in our customer conversation.",
                                    "type": "text",
                                    "description": "Private source\/evidence of permission, maximum 1000 characters. Required when consent is true; never public. This field is required when <code>consent<\/code> is <code>1<\/code> or <code>true<\/code>. Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                },
                                {
                                    "key": "_method",
                                    "value": "PUT",
                                    "type": "text"
                                }
                            ]
                        },
                        "description": "The business reference cannot be changed. Every edit unpublishes the old\nversion from matching web pages and the public API. Omit photo to keep it,\nor set remove_photo=true to remove it. Confirm consent and supply its private\nnote again for the revised wording; omitted\/false consent clears permission.\nFor multipart edits, POST this URL with _method=PUT."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"business_id\":17,\"user_id\":42,\"store_type\":\"pharmacy\",\"owner_name\":\"Kavitha Reddy\",\"shop_name\":\"Aarogya Medical Store\",\"location\":\"Hyderabad\",\"feedback\":\"We have had a positive experience using Dukanam for our pharmacy in Hyderabad.\",\"source\":\"admin\",\"status\":\"pending\",\"photo_url\":null,\"photo_mime_type\":null,\"photo_size\":null,\"consent_at\":null,\"consent_note\":null,\"published_at\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Approve or reject a testimonial.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/testimonials\/:public_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/testimonials\/:public_id",
                            "variable": [
                                {
                                    "id": "public_id",
                                    "key": "public_id",
                                    "value": "53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29",
                                    "description": "Public testimonial UUID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"approved\",\"review_note\":\"Photo and first-hand statement verified.\"}"
                        },
                        "description": "Approval publishes the story on its matching industry page.\nRejection removes it from public API and web responses while preserving the\nprivate moderation record.\nApproval returns 422 without recorded permission or for internal uxcrafts.com\nbusinesses\/owners. Rejection is the reversible Unpublish action."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":\"53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\",\"store_type\":\"pharmacy\",\"user_id\":42,\"business_id\":17,\"owner_name\":\"Dr. Kavitha Reddy\",\"shop_name\":\"Aarogya Medical & General Store\",\"contact_email\":\"kavitha@example.com\",\"feedback\":\"Dukanam made our daily medicine counter billing easier to review.\",\"photo_url\":\"https:\/\/dukanam.com\/testimonials\/53d5597b-4a34-4cf0-9dd3-7a0ae9f64c29\/photo\",\"photo_mime_type\":\"image\/webp\",\"photo_size\":98214,\"status\":\"approved\",\"consent_at\":\"2026-08-31T10:15:00.000000Z\",\"review_note\":\"Verified\",\"reviewed_by\":{\"id\":1,\"name\":\"Platform Admin\"},\"reviewed_at\":\"2026-08-31T10:30:00.000000Z\",\"published_at\":\"2026-08-31T10:30:00.000000Z\",\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"location\":null,\"source\":\"customer\",\"consent_note\":null}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Feedback",
            "description": "",
            "item": [
                {
                    "name": "List my private feedback.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/feedback",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "12",
                                    "description": "Results per page, from 1 to 24.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/feedback?per_page=12",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":\"82fdb616-df56-4547-9e09-5f58f4740acd\",\"feedback_type\":\"suggestion\",\"message\":\"Please add a daily counter export to the mobile dashboard.\",\"photo_url\":null,\"status\":\"pending\",\"response\":null,\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"reviewed_at\":null}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":12,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Submit private feedback.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/feedback",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/feedback",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "feedback_type",
                                    "value": "suggestion",
                                    "type": "text",
                                    "description": "Improvement, complaint or suggestion."
                                },
                                {
                                    "key": "message",
                                    "value": "Please add an option to export the daily counter summary directly from the mobile dashboard.",
                                    "type": "text",
                                    "description": "Private product feedback, 20 to 2,000 characters. Must be at least 20 characters. Must not be greater than 2000 characters."
                                },
                                {
                                    "key": "website",
                                    "value": "",
                                    "type": "text",
                                    "description": "Spam-trap field. Omit it or leave it empty."
                                },
                                {
                                    "key": "photo",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Available to every authenticated workspace user, including free plans.\nFeedback is never added to public testimonial pages."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Thank you. Your feedback has been sent to the Dukanam team.\",\"data\":{\"id\":\"82fdb616-df56-4547-9e09-5f58f4740acd\",\"feedback_type\":\"suggestion\",\"message\":\"Please add a daily counter export to the mobile dashboard.\",\"photo_url\":null,\"status\":\"pending\",\"response\":null,\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"reviewed_at\":null}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Feedback moderation",
            "description": "",
            "item": [
                {
                    "name": "List private customer feedback.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/feedback",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "pending",
                                    "description": "Filter by pending, reviewed or resolved.",
                                    "disabled": false
                                },
                                {
                                    "key": "feedback_type",
                                    "value": "complaint",
                                    "description": "Filter by improvement, complaint or suggestion.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "24",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/feedback?status=pending&feedback_type=complaint&per_page=24"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":\"82fdb616-df56-4547-9e09-5f58f4740acd\",\"feedback_type\":\"complaint\",\"message\":\"The mobile report did not load after closing the counter.\",\"photo_url\":null,\"photo_mime_type\":null,\"photo_size\":null,\"status\":\"pending\",\"submitter\":{\"id\":42,\"name\":\"Kavitha Reddy\",\"email\":\"kavitha@example.com\"},\"business\":{\"id\":17,\"name\":\"Aarogya Medical Store\"},\"response\":null,\"reviewed_by\":null,\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"reviewed_at\":null}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":24,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Mark customer feedback reviewed or resolved.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/feedback\/:public_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/feedback\/:public_id",
                            "variable": [
                                {
                                    "id": "public_id",
                                    "key": "public_id",
                                    "value": "82fdb616-df56-4547-9e09-5f58f4740acd",
                                    "description": "Public feedback UUID."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"reviewed\",\"review_note\":\"Added to the mobile dashboard backlog.\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":\"82fdb616-df56-4547-9e09-5f58f4740acd\",\"feedback_type\":\"suggestion\",\"message\":\"Please add a mobile daily summary export.\",\"photo_url\":null,\"photo_mime_type\":null,\"photo_size\":null,\"status\":\"reviewed\",\"submitter\":{\"id\":42,\"name\":\"Kavitha Reddy\",\"email\":\"kavitha@example.com\"},\"business\":{\"id\":17,\"name\":\"Aarogya Medical Store\"},\"response\":\"Added to the mobile backlog.\",\"reviewed_by\":{\"id\":1,\"name\":\"Platform Admin\"},\"submitted_at\":\"2026-08-31T10:15:00.000000Z\",\"reviewed_at\":\"2026-08-31T11:00:00.000000Z\"}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Apple subscriptions",
            "description": "\nApple App Store subscription verification and authoritative Dukanam entitlement state.\nOwner endpoints require the business's `owner_user_id` to match the signed-in user,\nas with web billing and API onboarding. A pivot role alone does not confer ownership.",
            "item": [
                {
                    "name": "Verify an App Store subscription purchase",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/apple\/subscription\/verify",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/apple\/subscription\/verify"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"business_id\":1,\"signedTransactionInfo\":\"eyJhbGciOiJFUzI1NiIsIng1YyI6WyIuLi4iXX0.eyJ0cmFuc2FjdGlvbklkIjoiMjAwMDAwMTIzNDU2Nzg5MCJ9.signature\",\"transactionId\":\"2000001234567890\",\"environment\":\"sandbox\"}"
                        },
                        "description": "Send either StoreKit's signed transaction JWS or a transaction ID plus its environment. The business owner\nmust pass the `app_account_token` returned by the current-subscription endpoint to StoreKit when purchasing.\nThe plan, dates, and status always come from Apple's signed data."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\":true,\"business_id\":1,\"app_account_token\":\"2ee48be5-b23e-46e8-b84d-5e21850d42d2\",\"subscription\":{\"provider\":\"apple\",\"plan\":\"business\",\"billing_period\":\"yearly\",\"product_id\":\"com.dukanam.business.yearly\",\"status\":\"active\",\"is_active\":true,\"expires_at\":\"2027-09-04T10:30:00.000000Z\",\"auto_renew_status\":true,\"environment\":\"production\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Only the business owner can manage this subscription.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 409,
                            "body": "{\"message\":\"The Apple transaction is not linked to this Dukanam business.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This Apple product is not supported.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"Apple subscriptions are not enabled.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Synchronize an App Store subscription",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/apple\/subscription\/sync",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/apple\/subscription\/sync"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"business_id\":1}"
                        },
                        "description": "Reconciles the linked subscription with the App Store Server API. Use after Restore Purchases or to recover\nfrom a missed server notification."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Only the business owner can manage this subscription.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"No Apple subscription has been linked to this business yet.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"App Store Server API credentials are not configured.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get the current subscription entitlement",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/me\/subscription",
                            "query": [
                                {
                                    "key": "business_id",
                                    "value": "1",
                                    "description": "The current business.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/me\/subscription?business_id=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns the backend-authoritative plan and the stable `app_account_token` that Flutter must attach to every\nStoreKit purchase for this business. Free Essentials is returned when there is no usable paid entitlement."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\":true,\"business_id\":1,\"app_account_token\":\"2ee48be5-b23e-46e8-b84d-5e21850d42d2\",\"subscription\":{\"provider\":null,\"plan\":\"free_essentials\",\"billing_period\":null,\"product_id\":null,\"status\":\"active\",\"is_active\":true,\"expires_at\":null,\"auto_renew_status\":null,\"environment\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Only the business owner can manage this subscription.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Receive App Store Server Notifications V2",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/apple\/notifications",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/apple\/notifications"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"signedPayload\":\"eyJhbGciOiJFUzI1NiIsIng1YyI6WyIuLi4iXX0.eyJub3RpZmljYXRpb25UeXBlIjoiVEVTVCJ9.signature\"}"
                        },
                        "description": "Public Apple webhook. Every payload and nested transaction is cryptographically verified and processed\nidempotently by notification UUID. This endpoint does not use Dukanam bearer authentication.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"success\":true}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 400,
                            "body": "{\"message\":\"Apple could not verify the signed notification.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Account deletion",
            "description": "\nRequest, inspect and cancel deletion of the signed-in account and its data, as\nrequired by the Google Play user data policy. The public web equivalent of these\nendpoints is published at \/delete-account.",
            "item": [
                {
                    "name": "Show the deletion status and what a deletion would destroy.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/account\/deletion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/account\/deletion"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "`owned_workspaces` are erased entirely, including every team member's access.\n`joined_workspaces` survive; only this user's membership in them is removed.\nApple billing is not cancelled by deletion. Display the warning and management URL\nwhen present; active, trialing and billing-retry Apple records trigger the warning."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"pending\":false,\"grace_days\":7,\"scheduled_for\":null,\"owned_workspaces\":[{\"name\":\"Sri Balaji Stores\",\"team_members\":2,\"has_billing_records\":true,\"has_apple_subscription\":true}],\"joined_workspaces\":[\"Anand Traders\"],\"apple_subscription_warning\":\"Deleting your Dukanam account does not cancel your Apple subscription. Apple may continue billing you until you cancel it in your Apple subscription settings.\",\"apple_subscription_management_url\":\"https:\/\/apps.apple.com\/account\/subscriptions\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Request deletion of the account and its data.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/account\/deletion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/account\/deletion"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"current_password\":\"correct-horse-battery\",\"confirmation\":\"DELETE\",\"reason\":\"Closing the shop\"}"
                        },
                        "description": "The account stays usable during the grace period so the request can be\ncancelled. Push notifications stop immediately.\nThe confirmation email warns owners of outstanding Apple subscriptions and links\nto Apple's subscription settings. Deletion never cancels Apple billing."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\"message\":\"Your account is scheduled for deletion.\",\"data\":{\"scheduled_for\":\"2026-09-06T10:15:00+00:00\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Administrator accounts cannot be deleted from the app. Contact support.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The given data was invalid.\",\"errors\":{\"confirmation\":[\"Type DELETE to confirm that you want the account erased.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Cancel a pending deletion request.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/account\/deletion",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/account\/deletion"
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"message\":\"Account deletion cancelled.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "App link analytics",
            "description": "\nOpens of the promoted pages: the https:\/\/dukanam.com\/app download link and the store-type\npages (the \/billing-software-for-retail-stores index and one page per store type, in every\nlanguage). \/app redirects phones to their store, so its opens are read from the request;\nstore pages may be served from the CDN cache and report their own opens with a beacon,\nadding reading time, scroll depth, screen size and the first call to action used.\nLocation is Cloudflare's IP-based estimate (city level, approximate). An open is one human\nvisit; link previews and crawlers are counted separately.\nDates are calendar days in Asia\/Kolkata. Requires a super-admin token.",
            "item": [
                {
                    "name": "Summarise app link opens.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/app-link\/analytics",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-01-15",
                                    "description": "First calendar day, YYYY-MM-DD. Defaults to 29 days before `to`. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-01-15",
                                    "description": "Last calendar day, YYYY-MM-DD. Defaults to today. The range may cover at most 366 days. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                },
                                {
                                    "key": "source",
                                    "value": "whatsapp",
                                    "description": "Only opens from this source key, such as whatsapp, instagram, qr, sms, facebook, meta, google, referral or direct. Must not be greater than 50 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "campaign",
                                    "value": "diwali_2026",
                                    "description": "Only opens tagged with this campaign, as normalised (lower case, underscores). Must not be greater than 120 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "android",
                                    "description": "Only opens from android, ios, desktop or other.",
                                    "disabled": false
                                },
                                {
                                    "key": "tracked_page",
                                    "value": "app",
                                    "description": "Only opens of this page: app (the \/app download link), stores (the store-type index), or a store-type key such as pharmacy or kirana-store.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Visits per page, 1 to 100. Visit lists only. Defaults to 25. Must be at least 1. Must not be greater than 100.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number. Visit lists only. Must be at least 1.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/app-link\/analytics?from=2026-01-15&to=2026-01-15&source=whatsapp&campaign=diwali_2026&platform=android&tracked_page=app&per_page=25&page=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Totals, store-page engagement, per-page rows, a zero-filled daily series, a weekday \u00d7 hour\ngrid (ISO weekday 1 = Monday, hours 0\u201323), top-15 breakdowns by source, medium, campaign, platform, device, operating\nsystem, browser, in-app browser, referrer, country, region, language, page language,\ncall to action and screen size, the top 50\ncities with approximate coordinates, and link-preview fetches. `previous_period` covers\nthe same number of days immediately before `from`, for comparison.\n\nSource keys: whatsapp, instagram, facebook, meta (a Meta ad click whose app is unknown),\nqr, sms, google, youtube, x, linkedin, telegram, email, referral (another website),\ninternal (a link on dukanam.com) and direct (untagged with no referrer). Any other `utm_source` value is kept as sent, normalised.\nOutcomes: play_store and app_store are store redirects; landing_page means the page was shown."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"range\": {\n            \"from\": \"2026-09-20\",\n            \"to\": \"2026-09-26\",\n            \"days\": 7\n        },\n        \"filters\": {\n            \"source\": null,\n            \"campaign\": null,\n            \"platform\": null,\n            \"tracked_page\": null\n        },\n        \"totals\": {\n            \"opens\": 5,\n            \"unique_visitors\": 5,\n            \"new_visitors\": 4,\n            \"returning_visitors\": 1,\n            \"store_redirects\": 3,\n            \"play_store\": 2,\n            \"app_store\": 1,\n            \"landing_page\": 2,\n            \"link_previews\": 1\n        },\n        \"engagement\": {\n            \"page_views\": 2,\n            \"average_seconds\": 100,\n            \"average_scroll_depth\": 80,\n            \"call_to_action_opens\": 2,\n            \"call_to_action_rate\": 100,\n            \"signup_or_app_opens\": 1\n        },\n        \"previous_period\": {\n            \"from\": \"2026-09-13\",\n            \"to\": \"2026-09-19\",\n            \"opens\": 0,\n            \"unique_visitors\": 0,\n            \"store_redirects\": 0\n        },\n        \"daily\": [\n            {\n                \"date\": \"2026-09-20\",\n                \"opens\": 0,\n                \"unique_visitors\": 0,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 0\n            },\n            {\n                \"date\": \"2026-09-21\",\n                \"opens\": 0,\n                \"unique_visitors\": 0,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 0\n            },\n            {\n                \"date\": \"2026-09-22\",\n                \"opens\": 0,\n                \"unique_visitors\": 0,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 0\n            },\n            {\n                \"date\": \"2026-09-23\",\n                \"opens\": 1,\n                \"unique_visitors\": 1,\n                \"play_store\": 1,\n                \"app_store\": 0,\n                \"landing_page\": 0\n            },\n            {\n                \"date\": \"2026-09-24\",\n                \"opens\": 1,\n                \"unique_visitors\": 1,\n                \"play_store\": 1,\n                \"app_store\": 0,\n                \"landing_page\": 0\n            },\n            {\n                \"date\": \"2026-09-25\",\n                \"opens\": 2,\n                \"unique_visitors\": 2,\n                \"play_store\": 0,\n                \"app_store\": 1,\n                \"landing_page\": 1\n            },\n            {\n                \"date\": \"2026-09-26\",\n                \"opens\": 1,\n                \"unique_visitors\": 1,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 1\n            }\n        ],\n        \"weekday_hours\": [\n            {\n                \"weekday\": 1,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 2,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 3,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 4,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 5,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 6,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            },\n            {\n                \"weekday\": 7,\n                \"hours\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ]\n            }\n        ],\n        \"pages\": [\n            {\n                \"key\": \"app\",\n                \"label\": \"App download link (\/app)\",\n                \"opens\": 3,\n                \"unique_visitors\": 3,\n                \"play_store\": 2,\n                \"app_store\": 1,\n                \"landing_page\": 0,\n                \"average_seconds\": null,\n                \"average_scroll_depth\": null,\n                \"call_to_action_opens\": 0,\n                \"signup_clicks\": 0\n            },\n            {\n                \"key\": \"stores\",\n                \"label\": \"All store types\",\n                \"opens\": 1,\n                \"unique_visitors\": 1,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 1,\n                \"average_seconds\": 74,\n                \"average_scroll_depth\": 88,\n                \"call_to_action_opens\": 1,\n                \"signup_clicks\": 0\n            },\n            {\n                \"key\": \"pharmacy\",\n                \"label\": \"Pharmacies\",\n                \"opens\": 1,\n                \"unique_visitors\": 1,\n                \"play_store\": 0,\n                \"app_store\": 0,\n                \"landing_page\": 1,\n                \"average_seconds\": 126,\n                \"average_scroll_depth\": 71,\n                \"call_to_action_opens\": 1,\n                \"signup_clicks\": 1\n            }\n        ],\n        \"breakdowns\": {\n            \"sources\": [\n                {\n                    \"key\": \"instagram\",\n                    \"label\": \"Instagram\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"whatsapp\",\n                    \"label\": \"WhatsApp\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"qr\",\n                    \"label\": \"QR code\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"google\",\n                    \"label\": \"Google\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"mediums\": [\n                {\n                    \"key\": \"paid\",\n                    \"label\": \"paid\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"social\",\n                    \"label\": \"social\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"organic\",\n                    \"label\": \"organic\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"offline\",\n                    \"label\": \"offline\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                }\n            ],\n            \"campaigns\": [\n                {\n                    \"key\": \"diwali_2026\",\n                    \"label\": \"diwali_2026\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 2,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"poster_vijayawada\",\n                    \"label\": \"poster_vijayawada\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"pharmacy_launch\",\n                    \"label\": \"pharmacy_launch\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": null,\n                    \"label\": \"Not tagged\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"platforms\": [\n                {\n                    \"key\": \"android\",\n                    \"label\": \"Android\",\n                    \"opens\": 3,\n                    \"unique_visitors\": 3,\n                    \"play_store\": 2,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"ios\",\n                    \"label\": \"iPhone \/ iPad\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"desktop\",\n                    \"label\": \"Desktop\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"device_types\": [\n                {\n                    \"key\": \"smartphone\",\n                    \"label\": \"Smartphone\",\n                    \"opens\": 4,\n                    \"unique_visitors\": 4,\n                    \"play_store\": 2,\n                    \"app_store\": 1,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"desktop\",\n                    \"label\": \"Desktop\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"device_brands\": [\n                {\n                    \"key\": \"Realme\",\n                    \"label\": \"Realme\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"Samsung\",\n                    \"label\": \"Samsung\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"Apple\",\n                    \"label\": \"Apple\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                }\n            ],\n            \"device_models\": [\n                {\n                    \"key\": \"Realme \u00b7 C55\",\n                    \"label\": \"Realme C55\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": null,\n                    \"label\": \"Unknown\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"Apple \u00b7 iPhone\",\n                    \"label\": \"Apple iPhone\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"Samsung \u00b7 Galaxy A15\",\n                    \"label\": \"Samsung Galaxy A15\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                }\n            ],\n            \"operating_systems\": [\n                {\n                    \"key\": \"Android \u00b7 13\",\n                    \"label\": \"Android 13\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"Android \u00b7 14\",\n                    \"label\": \"Android 14\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"Windows \u00b7 10\",\n                    \"label\": \"Windows 10\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"iOS \u00b7 17.4\",\n                    \"label\": \"iOS 17.4\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                }\n            ],\n            \"browsers\": [\n                {\n                    \"key\": \"Mobile Safari\",\n                    \"label\": \"Mobile Safari\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 1,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"Chromium\",\n                    \"label\": \"Chromium\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                },\n                {\n                    \"key\": \"Chrome Mobile\",\n                    \"label\": \"Chrome Mobile\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"Chrome\",\n                    \"label\": \"Chrome\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"in_app_browsers\": [\n                {\n                    \"key\": \"Instagram\",\n                    \"label\": \"Instagram\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                }\n            ],\n            \"referrers\": [\n                {\n                    \"key\": \"l.instagram.com\",\n                    \"label\": \"l.instagram.com\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"www.google.com\",\n                    \"label\": \"www.google.com\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"countries\": [\n                {\n                    \"key\": \"IN\",\n                    \"label\": \"India\",\n                    \"opens\": 5,\n                    \"unique_visitors\": 5,\n                    \"play_store\": 2,\n                    \"app_store\": 1,\n                    \"landing_page\": 2\n                }\n            ],\n            \"regions\": [\n                {\n                    \"key\": \"IN \u00b7 Andhra Pradesh\",\n                    \"label\": \"Andhra Pradesh, IN\",\n                    \"opens\": 3,\n                    \"unique_visitors\": 3,\n                    \"play_store\": 1,\n                    \"app_store\": 1,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"IN \u00b7 Karnataka\",\n                    \"label\": \"Karnataka, IN\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"IN \u00b7 Telangana\",\n                    \"label\": \"Telangana, IN\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 1,\n                    \"app_store\": 0,\n                    \"landing_page\": 0\n                }\n            ],\n            \"cities\": [\n                {\n                    \"key\": \"IN \u00b7 Andhra Pradesh \u00b7 Vijayawada\",\n                    \"label\": \"Vijayawada\",\n                    \"region\": \"Andhra Pradesh\",\n                    \"country_code\": \"IN\",\n                    \"opens\": 2,\n                    \"unique_visitors\": 2,\n                    \"latitude\": 16.5062,\n                    \"longitude\": 80.648\n                },\n                {\n                    \"key\": \"IN \u00b7 Karnataka \u00b7 Bengaluru\",\n                    \"label\": \"Bengaluru\",\n                    \"region\": \"Karnataka\",\n                    \"country_code\": \"IN\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"latitude\": 12.9716,\n                    \"longitude\": 77.5946\n                },\n                {\n                    \"key\": \"IN \u00b7 Andhra Pradesh \u00b7 Guntur\",\n                    \"label\": \"Guntur\",\n                    \"region\": \"Andhra Pradesh\",\n                    \"country_code\": \"IN\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"latitude\": 16.3067,\n                    \"longitude\": 80.4365\n                },\n                {\n                    \"key\": \"IN \u00b7 Telangana \u00b7 Hyderabad\",\n                    \"label\": \"Hyderabad\",\n                    \"region\": \"Telangana\",\n                    \"country_code\": \"IN\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"latitude\": 17.385,\n                    \"longitude\": 78.4867\n                }\n            ],\n            \"languages\": [\n                {\n                    \"key\": \"te-IN\",\n                    \"label\": \"te-IN\",\n                    \"opens\": 5,\n                    \"unique_visitors\": 5,\n                    \"play_store\": 2,\n                    \"app_store\": 1,\n                    \"landing_page\": 2\n                }\n            ],\n            \"page_languages\": [\n                {\n                    \"key\": \"te\",\n                    \"label\": \"\u0c24\u0c46\u0c32\u0c41\u0c17\u0c41\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"calls_to_action\": [\n                {\n                    \"key\": \"signup\",\n                    \"label\": \"Start free \/ sign up\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"pricing\",\n                    \"label\": \"Pricing\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ],\n            \"screen_sizes\": [\n                {\n                    \"key\": \"412 \u00b7 915\",\n                    \"label\": \"412 \u00d7 915\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                },\n                {\n                    \"key\": \"1920 \u00b7 1080\",\n                    \"label\": \"1920 \u00d7 1080\",\n                    \"opens\": 1,\n                    \"unique_visitors\": 1,\n                    \"play_store\": 0,\n                    \"app_store\": 0,\n                    \"landing_page\": 1\n                }\n            ]\n        },\n        \"link_previews\": [\n            {\n                \"label\": \"WhatsApp\",\n                \"fetches\": 1\n            }\n        ]\n    }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose a range of at most 366 days.\",\"errors\":{\"from\":[\"Choose a range of at most 366 days.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List individual app link opens.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/app-link\/visits",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-01-15",
                                    "description": "First calendar day, YYYY-MM-DD. Defaults to 29 days before `to`. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-01-15",
                                    "description": "Last calendar day, YYYY-MM-DD. Defaults to today. The range may cover at most 366 days. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                },
                                {
                                    "key": "source",
                                    "value": "whatsapp",
                                    "description": "Only opens from this source key, such as whatsapp, instagram, qr, sms, facebook, meta, google, referral or direct. Must not be greater than 50 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "campaign",
                                    "value": "diwali_2026",
                                    "description": "Only opens tagged with this campaign, as normalised (lower case, underscores). Must not be greater than 120 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "platform",
                                    "value": "android",
                                    "description": "Only opens from android, ios, desktop or other.",
                                    "disabled": false
                                },
                                {
                                    "key": "tracked_page",
                                    "value": "app",
                                    "description": "Only opens of this page: app (the \/app download link), stores (the store-type index), or a store-type key such as pharmacy or kirana-store.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Visits per page, 1 to 100. Visit lists only. Defaults to 25. Must be at least 1. Must not be greater than 100.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number. Visit lists only. Must be at least 1.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/app-link\/visits?from=2026-01-15&to=2026-01-15&source=whatsapp&campaign=diwali_2026&platform=android&tracked_page=app&per_page=25&page=1"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Newest first, including link previews (`is_link_preview: true`). No raw IP address, name,\nphone number or email is stored or returned. Location is approximate and may be null."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 6,\n            \"visited_at\": \"2026-09-26T11:20:00+05:30\",\n            \"page\": \"app\",\n            \"page_label\": \"App download link (\/app)\",\n            \"page_locale\": null,\n            \"outcome\": \"landing_page\",\n            \"is_link_preview\": true,\n            \"preview_agent\": \"WhatsApp\",\n            \"is_new_visitor\": true,\n            \"source\": \"whatsapp\",\n            \"source_label\": \"WhatsApp\",\n            \"medium\": \"social\",\n            \"campaign\": \"diwali_2026\",\n            \"utm\": {\n                \"source\": \"whatsapp\",\n                \"medium\": null,\n                \"campaign\": \"diwali_2026\",\n                \"content\": null,\n                \"term\": null\n            },\n            \"ad_click_id\": null,\n            \"referrer_host\": null,\n            \"referrer_app\": null,\n            \"platform\": \"other\",\n            \"device\": {\n                \"type\": null,\n                \"brand\": null,\n                \"model\": null\n            },\n            \"os\": {\n                \"name\": \"Android\",\n                \"version\": null\n            },\n            \"browser\": {\n                \"name\": \"WhatsApp\",\n                \"version\": \"2.23\",\n                \"in_app\": null\n            },\n            \"location\": {\n                \"country_code\": \"IN\",\n                \"region\": \"Maharashtra\",\n                \"city\": \"Mumbai\",\n                \"postal_code\": \"400001\",\n                \"latitude\": 19.076,\n                \"longitude\": 72.8777,\n                \"timezone\": \"Asia\/Kolkata\"\n            },\n            \"language\": \"te-IN\",\n            \"screen\": null,\n            \"engagement\": {\n                \"seconds\": null,\n                \"scroll_depth\": null,\n                \"call_to_action\": null\n            }\n        },\n        {\n            \"id\": 5,\n            \"visited_at\": \"2026-09-26T10:05:00+05:30\",\n            \"page\": \"pharmacy\",\n            \"page_label\": \"Pharmacies\",\n            \"page_locale\": \"te\",\n            \"outcome\": \"landing_page\",\n            \"is_link_preview\": false,\n            \"preview_agent\": null,\n            \"is_new_visitor\": true,\n            \"source\": \"instagram\",\n            \"source_label\": \"Instagram\",\n            \"medium\": \"paid\",\n            \"campaign\": \"pharmacy_launch\",\n            \"utm\": {\n                \"source\": \"instagram\",\n                \"medium\": \"paid\",\n                \"campaign\": \"pharmacy_launch\",\n                \"content\": null,\n                \"term\": null\n            },\n            \"ad_click_id\": null,\n            \"referrer_host\": \"l.instagram.com\",\n            \"referrer_app\": null,\n            \"platform\": \"android\",\n            \"device\": {\n                \"type\": \"smartphone\",\n                \"brand\": \"Realme\",\n                \"model\": \"C55\"\n            },\n            \"os\": {\n                \"name\": \"Android\",\n                \"version\": \"13\"\n            },\n            \"browser\": {\n                \"name\": \"Chrome Mobile\",\n                \"version\": \"124\",\n                \"in_app\": null\n            },\n            \"location\": {\n                \"country_code\": \"IN\",\n                \"region\": \"Andhra Pradesh\",\n                \"city\": \"Guntur\",\n                \"postal_code\": \"522001\",\n                \"latitude\": 16.3067,\n                \"longitude\": 80.4365,\n                \"timezone\": \"Asia\/Kolkata\"\n            },\n            \"language\": \"te-IN\",\n            \"screen\": {\n                \"width\": 412,\n                \"height\": 915\n            },\n            \"engagement\": {\n                \"seconds\": 126,\n                \"scroll_depth\": 71,\n                \"call_to_action\": \"signup\"\n            }\n        }\n    ],\n    \"meta\": {\n        \"current_page\": 1,\n        \"last_page\": 3,\n        \"per_page\": 2,\n        \"total\": 6\n    }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected platform is invalid.\",\"errors\":{\"platform\":[\"The selected platform is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Billing webhooks",
            "description": "",
            "item": [
                {
                    "name": "Receive Razorpay subscription events",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/webhooks\/razorpay",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/webhooks\/razorpay"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "X-Razorpay-Signature",
                                "value": "string required Razorpay webhook HMAC signature. Example: 0123456789abcdef"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "This public provider callback requires a valid `X-Razorpay-Signature` HMAC header and is idempotent.\nWorkers fetch current Razorpay state. Cancelled, completed, or expired subscriptions end paid access\nand restore Free Essentials only when no newer subscription has replaced the ended subscription.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"received\":true}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Invalid webhook signature.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Business details",
            "description": "\nThe card a shop shows a customer so they can pay it by direct bank transfer:\nthe registered name and GSTIN, plus one bank account in full.\n\nThe full account number, IFSC and branch are stored encrypted on the payment\naccount. The payment-accounts listing carries only the last four digits.\nFull details are available here and in receiving_bank_account on business\nresources for accounting members. This card endpoint is served no-store.",
            "item": [
                {
                    "name": "The shareable business and bank details.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/settings\/payment-details",
                            "query": [
                                {
                                    "key": "payment_account_id",
                                    "value": "8",
                                    "description": "An active payment account of this workspace to show instead of the default one.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/settings\/payment-details?payment_account_id=8",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"payment_account_id\":16}"
                        },
                        "description": "With no `payment_account_id`, the account returned is the one the shop\nalready prints on its bills, else its default receiving bank, else any\nactive bank account it has. A workspace that has not saved a bank account\nyet gets `bank_account: null` \u2014 show the \"add bank details\" path rather\nthan an empty card.\n\n`share_message` is the same details as plain text, ready for WhatsApp or a\nshare sheet. Render the card from the fields; do not parse this string.\n\nNot available offline: bank credentials are fetched fresh each time and\nmust not be cached."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"business\":{\"id\":17,\"name\":\"Haniot\",\"legal_name\":\"HANIOT PRIVATE LIMITED\",\"gstin\":\"37AAFCH7061N1Z5\",\"gst_registration_status\":\"active\",\"is_gst_registered\":true,\"phone\":\"9876543210\",\"email\":\"accounts@haniot.in\",\"logo_url\":null,\"address\":{\"line_1\":\"12 MG Road\",\"line_2\":null,\"city\":\"Visakhapatnam\",\"state_code\":\"37\",\"pincode\":\"530001\"}},\"bank_account\":{\"payment_account_id\":8,\"name\":\"ICICI Current\",\"type\":\"bank\",\"bank_name\":\"ICICI Bank\",\"account_name\":\"Haniot Private Limited\",\"account_number\":\"236001505028\",\"account_last_four\":\"5028\",\"ifsc\":\"ICIC0012360\",\"branch\":\"Dwaraka Nagar\",\"upi_id\":null},\"upi_id\":\"haniot@icici\",\"share_message\":\"HANIOT PRIVATE LIMITED\\nGSTIN: 37AAFCH7061N1Z5\\n\\nAccount name: Haniot Private Limited\\nAccount number: 236001505028\\nBank: ICICI Bank\\nIFSC: ICIC0012360\\nBranch: Dwaraka Nagar\\nUPI: haniot@icici\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected payment account id is invalid.\",\"errors\":{\"payment_account_id\":[\"The selected payment account id is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "ChatGPT plugin",
            "description": "",
            "item": [
                {
                    "name": "Inspect the connected plugin account and shop.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/plugin\/session",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/plugin\/session"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires a plugin OAuth token with `dukanam:read`; ordinary mobile tokens return 403.\nMembership and plan\/seat eligibility are rechecked on every request."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"user\":{\"id\":1,\"name\":\"Priya\"},\"business\":{\"id\":1,\"name\":\"Priya Store\"},\"scope\":\"dukanam:read\",\"resource\":\"https:\/\/mcp.example.com\/mcp\",\"timezone\":\"Asia\/Kolkata\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"A plugin OAuth token is required.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Invoice-linked expenses",
            "description": "\nAdvanced Plan feature `invoice_costs`. Owner\/admin writes; accountant reads. Every sales\nor purchase cost is an operating expense, recorded once in Expenses with an immutable\ninvoice reference and description. Purchase costs do not increase inventory\/COGS. Sales\ncosts reduce party\/worker contribution. Unpaid costs accrue a payable; settlement never\ncreates a second expense. Costs remain after invoice returns\/voids until explicitly voided.",
            "item": [
                {
                    "name": "List expenses on an invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice\/expenses",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice\/expenses?per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice",
                                    "key": "invoice",
                                    "value": 1,
                                    "description": "The invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":2}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a sales or purchase invoice expense.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice\/expenses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice\/expenses",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice",
                                    "key": "invoice",
                                    "value": 1,
                                    "description": "The invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"category\":\"Transport\",\"payee\":\"Local transport\",\"amount_paise\":30000,\"occurred_on\":\"2026-10-04\",\"note\":\"Transport for this invoice\",\"paid\":true,\"payment_method\":\"bank\",\"idempotency_key\":\"fdf5dfdf-aead-473b-8c98-dcfbbda6c02a\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "List expenses on an invoice.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document\/expenses",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document\/expenses?per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "architecto",
                                    "description": "The document."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":2}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a sales or purchase invoice expense.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/documents\/:document\/expenses",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/documents\/:document\/expenses",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "document",
                                    "key": "document",
                                    "value": "architecto",
                                    "description": "The document."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"category\":\"Transport\",\"payee\":\"Local transport\",\"amount_paise\":30000,\"occurred_on\":\"2026-10-04\",\"note\":\"Transport for this invoice\",\"paid\":true,\"payment_method\":\"bank\",\"idempotency_key\":\"fdf5dfdf-aead-473b-8c98-dcfbbda6c02a\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Pay an outstanding invoice expense.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses\/:expense\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses\/:expense\/payments",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "expense",
                                    "key": "expense",
                                    "value": "architecto",
                                    "description": "The expense."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"amount_paise\":10000,\"paid_on\":\"2026-10-04\",\"payment_method\":\"bank\",\"idempotency_key\":\"fdf5dfdf-aead-473b-8c98-dcfbbda6c02b\"}"
                        },
                        "description": "Recognized expense stays on its original date. Payment reduces the expense payable and\ncash\/bank only. Partial payments are allowed; amount cannot exceed outstanding."
                    },
                    "response": []
                },
                {
                    "name": "Void an invoice expense payment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/expenses\/:expense\/payments\/:payment\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/expenses\/:expense\/payments\/:payment\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "expense",
                                    "key": "expense",
                                    "value": "architecto",
                                    "description": "The expense."
                                },
                                {
                                    "id": "payment",
                                    "key": "payment",
                                    "value": "architecto",
                                    "description": "The payment."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Wrong transfer\"}"
                        },
                        "description": "Keeps the expense and restores its payable; reverses the bank\/cash movement once."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Invoice branding",
            "description": "\nHow this workspace's bills look: one of three ready-made templates or a custom\nlayout, any accent colour, a logo, a signature, closing lines, and an optional UPI QR.\n\nBranding is frozen onto every invoice and business document at record time. Changing\nit here changes what future documents print as and leaves every saved document\nexactly as it was issued, which is what a reprint two years from now has to show.",
            "item": [
                {
                    "name": "Current invoice branding and the choices available.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/settings\/invoice-branding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/settings\/invoice-branding",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "`templates`, `layout_choices` and `accents` are the pickers \u2014 render them rather\nthan hard-coding values, because they can grow. `accents` is a set of suggested\nswatches to offer beside a colour input, not the set of allowed values: any\n`#RRGGBB` is accepted. `invoice_accent_palette` carries the colours that hex\nactually prints as, so a client can show the result without redoing the maths.\n\nAvailable offline: cached. Branding changes rarely and the counter needs it\nto print without signal."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"invoice_template\":\"classic\",\"invoice_accent_colour\":\"#10505E\",\"invoice_footer_note\":\"Goods once sold are not returnable.\",\"bank_details\":\"HDFC Bank 5010 1234 5678, IFSC HDFC0000123\",\"authorized_signatory\":\"Priya Sharma\",\"show_upi_qr_on_invoice\":false,\"show_logo_on_invoice\":true,\"upi_id\":\"priyatextiles@hdfcbank\",\"logo_url\":\"https:\/\/cdn.dukanam.com\/business-logos\/17\/logo.png\",\"signature_url\":null,\"templates\":[{\"value\":\"classic\",\"label\":\"Classic\",\"summary\":\"Boxed party details under a ruled header. The layout Dukanam has always printed.\"},{\"value\":\"compact\",\"label\":\"Compact\",\"summary\":\"Tighter type and flat rows, so a long bill fits on fewer pages.\"},{\"value\":\"accent\",\"label\":\"Accent\",\"summary\":\"A filled colour band across the head, for a shop that wants its colour seen.\"}],\"accents\":[{\"value\":\"#10505E\",\"label\":\"Dukanam teal\"}],\"max_image_kilobytes\":1024}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update invoice branding.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/settings\/invoice-branding",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/settings\/invoice-branding",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"invoice_template\":\"accent\",\"invoice_accent_colour\":\"#047857\",\"invoice_layout\":{\"header\":\"band\",\"density\":\"compact\",\"table\":\"flat\",\"logo\":{\"height\":64,\"align\":\"center\"},\"columns\":{\"hsn\":true,\"uqc\":true,\"discount\":true}},\"invoice_footer_note\":\"Goods once sold are not returnable.\",\"bank_details\":\"HDFC Bank 5010 1234 5678, IFSC HDFC0000123\",\"authorized_signatory\":\"Priya Sharma\",\"show_upi_qr_on_invoice\":true,\"show_logo_on_invoice\":true}"
                        },
                        "description": "Requires the `accounting` permission, the same as the rest of business\nsettings. Send only the fields you are changing. Saved documents are\nuntouched: each froze its own branding when it was raised.\n\nOnline only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"invoice_template\":\"accent\",\"invoice_accent_colour\":\"#047857\",\"show_upi_qr_on_invoice\":true}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Your role does not allow this action.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Add a UPI ID in business settings before printing a UPI QR on invoices.\",\"errors\":{\"show_upi_qr_on_invoice\":[\"Add a UPI ID in business settings before printing a UPI QR on invoices.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Preview a sample bill under branding that has not been saved.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/preview",
                            "query": [
                                {
                                    "key": "template",
                                    "value": "accent",
                                    "description": "Preview this template instead of the saved one.",
                                    "disabled": false
                                },
                                {
                                    "key": "accent",
                                    "value": "#047857",
                                    "description": "Preview this accent instead of the saved one, as any seven-character hex.",
                                    "disabled": false
                                },
                                {
                                    "key": "layout[]",
                                    "value": "",
                                    "description": "Preview these layout knobs instead of the saved ones, as `layout[header]=band&layout[density]=compact`. Merged over what is saved.",
                                    "disabled": true
                                },
                                {
                                    "key": "format",
                                    "value": "80mm",
                                    "description": "Paper size: `a4` (default) or `80mm`.",
                                    "disabled": false
                                },
                                {
                                    "key": "as",
                                    "value": "html",
                                    "description": "Response body: `pdf` (default) or `html`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/preview?template=accent&accent=%23047857&layout%5B%5D=&format=80mm&as=html",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Renders a plausible invoice \u2014 never created, never numbered, never stored \u2014\nso the settings screen can show the real document while the shop is still\nchoosing. Returns a PDF by default; pass `as=html` for a WebView.\n\nOnline only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "A PDF or HTML document, not JSON.",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected template is invalid.\",\"errors\":{\"template\":[\"The selected template is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Upload the shop logo or the authorised signature.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/:kind",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/:kind",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                },
                                {
                                    "id": "kind",
                                    "key": "kind",
                                    "value": "logo",
                                    "description": "Either `logo` or `signature`."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "image",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "Multipart. PNG or JPEG, up to 1 MB. Replaces whatever is stored under that\nname; the previous file is deleted once the new one is committed.\n\nOnline only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"invoice_template\":\"classic\",\"logo_url\":\"https:\/\/cdn.dukanam.com\/business-logos\/17\/logo.png\",\"signature_url\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The image must not be greater than 1024 kilobytes.\",\"errors\":{\"image\":[\"The image must not be greater than 1024 kilobytes.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Remove the shop logo or the authorised signature.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/:kind",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/settings\/invoice-branding\/:kind",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                },
                                {
                                    "id": "kind",
                                    "key": "kind",
                                    "value": "signature",
                                    "description": "Either `logo` or `signature`."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Documents already saved keep the image they were issued with; only future\ndocuments print without it.\n\nOnline only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"invoice_template\":\"classic\",\"logo_url\":null,\"signature_url\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Preview a real invoice under branding that has not been saved.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/invoices\/:invoice_id\/preview",
                            "query": [
                                {
                                    "key": "template",
                                    "value": "compact",
                                    "description": "Render this template instead of the invoice's own.",
                                    "disabled": false
                                },
                                {
                                    "key": "accent",
                                    "value": "#9A3412",
                                    "description": "Render this accent instead of the invoice's own, as any seven-character hex.",
                                    "disabled": false
                                },
                                {
                                    "key": "layout[]",
                                    "value": "",
                                    "description": "Render these layout knobs instead of the invoice's own, as `layout[table]=zebra`. Merged over what the workspace has saved.",
                                    "disabled": true
                                },
                                {
                                    "key": "format",
                                    "value": "80mm",
                                    "description": "Paper size: `a4` (default) or `80mm`.",
                                    "disabled": false
                                },
                                {
                                    "key": "as",
                                    "value": "html",
                                    "description": "Response body: `pdf` (default) or `html`.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/invoices\/:invoice_id\/preview?template=compact&accent=%239A3412&layout%5B%5D=&format=80mm&as=html",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 17,
                                    "description": "Workspace ID."
                                },
                                {
                                    "id": "invoice_id",
                                    "key": "invoice_id",
                                    "value": 482,
                                    "description": "Invoice ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Renders a saved invoice with the requested template and accent so the shop\ncan judge the choice against its own bill. Nothing is written: the invoice\nkeeps the branding it was saved with, and printing it still produces that.\n\nOnline only."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "A PDF or HTML document, not JSON.",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Loans and EMI",
            "description": "\nBorrowings the shop carries \u2014 a vehicle loan, a working-capital loan, a credit card \u2014 and the\nrepayments made against them. Each loan owns a liability account in the existing chart of\naccounts, so it appears on the balance sheet as a liability rather than a negative asset, and\nevery EMI records a split journal: the principal reduces what is owed, the interest is an expense.\n\nPlan feature `loans_and_income`; permission `accounting`. Online-only \u2014 nothing here belongs in\nthe offline cache or the write queue.",
            "item": [
                {
                    "name": "List loans and credit cards.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Filter by record status.",
                                    "disabled": false
                                },
                                {
                                    "key": "type",
                                    "value": "loan",
                                    "description": "Filter by kind.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page, from 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts?status=active&type=loan&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"active\",\"type\":\"loan\",\"per_page\":1}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Open a loan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"type\":\"loan\",\"lender_name\":\"n\",\"account_last_four\":\"gzmiyvdl\",\"principal\":19,\"interest_rate\":17,\"emi_amount\":5,\"emi_day_of_month\":1,\"tenure_months\":2,\"started_on\":\"2026-01-15\",\"first_emi_on\":\"2026-01-15\",\"disbursed_to_payment_account_id\":16,\"notes\":\"n\"}"
                        },
                        "description": "Naming `disbursed_to_payment_account_id` says the money actually landed in that account, so\nthe opening journal is a disbursement \u2014 the bank balance rises and the liability rises with\nit. Leave it out for a loan taken before the shop kept books here: there is no receipt to\nrecord, so the borrowing opens against equity, the way a party's opening balance does.\n\nA `loan` with a `tenure_months` gets its amortisation worked out on the spot. A\n`credit_card` never does \u2014 it revolves, and an invented schedule would be a fiction."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This EMI does not cover the interest on the outstanding balance, so the loan would never be repaid. Raise the EMI or lower the interest rate.\",\"errors\":{\"emi_amount\":[\"This EMI does not cover the interest on the outstanding balance, so the loan would never be repaid. Raise the EMI or lower the interest rate.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show one loan with its schedule and repayment history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Correct a loan's description and terms.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"lender_name\":\"n\",\"account_last_four\":\"gzmiyvdl\",\"interest_rate\":19,\"emi_amount\":17,\"emi_day_of_month\":1,\"tenure_months\":1,\"first_emi_on\":\"2026-01-15\",\"status\":\"active\",\"notes\":\"h\"}"
                        },
                        "description": "This is a **whole-record write**: a field left out is cleared, exactly as contact updates\nbehave. The borrowing itself is saved, so the principal and the start date are not\neditable here. Revising the terms rebuilds the instalments still to come; instalments\nalready paid are left exactly as they were paid."
                    },
                    "response": []
                },
                {
                    "name": "The instalments worked out for this loan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/schedule",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "pending",
                                    "description": "Filter by instalment status.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/schedule?status=pending",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"pending\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List repayments made against a loan.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page, from 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments?per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a repayment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"loan_emi_schedule_id\":16,\"paid_on\":\"2026-01-15\",\"amount\":22,\"principal\":7,\"interest\":16,\"charges\":17,\"payment_method\":\"cash\",\"payment_account_id\":16,\"reference\":\"n\",\"note\":\"g\",\"idempotency_key\":\"6d61f406-f07d-482d-a284-3e06edfd7f55\"}"
                        },
                        "description": "Name `loan_emi_schedule_id` and the lender's own split for that instalment is used, which is\nwhat a shop paying this month's EMI wants. State `principal` and `interest` instead for a\npart payment, a prepayment, or a credit-card payment with no schedule behind it. Sending\n`amount` as well is a check, not an override: parts that do not add up are refused.\n\nThe journal is split \u2014 principal off the liability, interest to expense, any lender charges\nto operating expenses \u2014 because a lump sum booked as one expense misstates both the balance\nsheet and the profit and loss."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only \u20b912,000.00 of principal is still outstanding on Vehicle loan. Reduce the principal portion, or record the excess as interest or charges.\",\"errors\":{\"principal\":[\"Only \u20b912,000.00 of principal is still outstanding on Vehicle loan. Reduce the principal portion, or record the excess as interest or charges.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Void a repayment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments\/:loanPayment_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/loan-accounts\/:loanAccount_id\/payments\/:loanPayment_id\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "loanAccount_id",
                                    "key": "loanAccount_id",
                                    "value": 1,
                                    "description": "The ID of the loanAccount."
                                },
                                {
                                    "id": "loanPayment_id",
                                    "key": "loanPayment_id",
                                    "value": 1,
                                    "description": "The ID of the loanPayment."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"b\"}"
                        },
                        "description": "Saved transactions keep their history. The journal is reversed, the instalment goes back to\npending, and the reason stays in the audit trail."
                    },
                    "response": []
                },
                {
                    "name": "List other-income receipts.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/other-incomes",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "rent",
                                    "description": "Case-insensitive search across category, payer, or description.",
                                    "disabled": false
                                },
                                {
                                    "key": "category",
                                    "value": "Rent received",
                                    "description": "Filter by an exact category.",
                                    "disabled": false
                                },
                                {
                                    "key": "payment_account_id",
                                    "value": "9",
                                    "description": "Filter by the account the money landed in.",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "2026-08-01",
                                    "description": "Include receipts on or after this date (`YYYY-MM-DD`).",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-08-31",
                                    "description": "Include receipts on or before this date (`YYYY-MM-DD`).",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "Filter by record status.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "Results per page, from 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/other-incomes?q=rent&category=Rent%20received&payment_account_id=9&from=2026-08-01&to=2026-08-31&status=active&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"q\":\"b\",\"category\":\"n\",\"payment_account_id\":16,\"from\":\"2026-01-15\",\"to\":\"2026-01-15\",\"status\":\"active\",\"per_page\":22}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Record a receipt that is not a sale.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/other-incomes",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/other-incomes",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"category\":\"b\",\"payer\":\"n\",\"amount\":7,\"occurred_on\":\"2026-01-15\",\"payment_method\":\"cash\",\"payment_account_id\":16,\"note\":\"n\",\"idempotency_key\":\"6d61f406-f07d-482d-a284-3e06edfd7f55\"}"
                        },
                        "description": "The receipt, its journal, the cash-drawer movement, and the audit record either all commit\nor all roll back."
                    },
                    "response": []
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/other-incomes\/{otherIncome_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/other-incomes\/:otherIncome_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/other-incomes\/:otherIncome_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "otherIncome_id",
                                    "key": "otherIncome_id",
                                    "value": 1,
                                    "description": "The ID of the otherIncome."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Void a receipt.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/other-incomes\/:otherIncome_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/other-incomes\/:otherIncome_id\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "otherIncome_id",
                                    "key": "otherIncome_id",
                                    "value": 1,
                                    "description": "The ID of the otherIncome."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"b\"}"
                        },
                        "description": "The void marker, the journal reversal, the cash-drawer reversal, and the audit record\neither all commit or all roll back."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Lookups",
            "description": "\nSearch tenant-scoped values for lookup controls. Results are limited to the active business and the caller's workspace permissions and plan features.",
            "item": [
                {
                    "name": "Search lookup values.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/lookups",
                            "query": [
                                {
                                    "key": "source",
                                    "value": "customers",
                                    "description": "Lookup source. The `items`, `contacts`, `customers`, and `suppliers` sources return only records that are still active, since a lookup is someone choosing what to put on a new document.",
                                    "disabled": false
                                },
                                {
                                    "key": "q",
                                    "value": "priya",
                                    "description": "Case-insensitive search text, up to 100 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "method",
                                    "value": "upi",
                                    "description": "Payment method used to filter compatible payment accounts.",
                                    "disabled": false
                                },
                                {
                                    "key": "direction",
                                    "value": "received",
                                    "description": "Document or account direction.",
                                    "disabled": false
                                },
                                {
                                    "key": "contact",
                                    "value": "42",
                                    "description": "Contact id. Narrows outstanding documents to a single customer or supplier, prices item results with that customer's rate card, and on contact sources keeps that party in the results even when it is no longer active, so a form can still show the party it already holds.",
                                    "disabled": false
                                },
                                {
                                    "key": "item",
                                    "value": "12",
                                    "description": "Item id. Required for the `item_batches` source; returns that item's sellable lots, first-expiry-first-out.",
                                    "disabled": false
                                },
                                {
                                    "key": "supplier",
                                    "value": "17",
                                    "description": "Supplier contact id, or `preferred`. On the `items` source, adds supplier_price, supplier_price_source, and supplier_name: that supplier's agreed rate or, failing that, the rate on their last purchase invoice. `preferred` uses each item's preferred supplier. Only for callers who may see purchase prices.",
                                    "disabled": false
                                },
                                {
                                    "key": "warehouse",
                                    "value": "1",
                                    "description": "Warehouse id. On the `items` source, the pre-selected lot is the earliest-expiring one with stock in that warehouse; on `item_batches`, only lots with stock there are listed, with the quantity held there.",
                                    "disabled": false
                                },
                                {
                                    "key": "ids[0]",
                                    "value": "12",
                                    "description": "Item ids to price or re-read, up to 200. Every named item is returned, including items that are no longer active, so a form can reprice the lines it already holds in one request.",
                                    "disabled": false
                                },
                                {
                                    "key": "ids[1]",
                                    "value": "18",
                                    "description": "Item ids to price or re-read, up to 200. Every named item is returned, including items that are no longer active, so a form can reprice the lines it already holds in one request.",
                                    "disabled": false
                                },
                                {
                                    "key": "category_id",
                                    "value": "1",
                                    "description": "Tenant-owned item category.",
                                    "disabled": false
                                },
                                {
                                    "key": "subcategory_id",
                                    "value": "2",
                                    "description": "Tenant-owned subcategory; combine with category_id.",
                                    "disabled": false
                                },
                                {
                                    "key": "brand_id",
                                    "value": "3",
                                    "description": "Tenant-owned item brand.",
                                    "disabled": false
                                },
                                {
                                    "key": "manufacturer_id",
                                    "value": "4",
                                    "description": "Tenant-owned manufacturer.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/lookups?source=customers&q=priya&method=upi&direction=received&contact=42&item=12&supplier=17&warehouse=1&ids%5B0%5D=12&ids%5B1%5D=18&category_id=1&subcategory_id=2&brand_id=3&manufacturer_id=4",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"value\":\"42\",\"label\":\"Priya Sharma\",\"meta\":\"Customer \u00b7 9876543210\",\"attributes\":{\"type\":\"customer\",\"phone\":\"9876543210\"}}],\"meta\":{\"source\":\"customers\",\"query\":\"priya\",\"has_more\":false}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Master partner teams",
            "description": "\nAuthenticated partner-portal session cookies are required (not a workspace bearer\ntoken). Sign in at \/partners\/login with WhatsApp OTP. Mutating requests also require\nthe session CSRF token in X-CSRF-TOKEN or X-XSRF-TOKEN. Only active masters may use\nthese routes. Team data is scoped to that master; foreign IDs return 404. Amounts\nare integer paise in responses; reward requests use rupees and percent.",
            "item": [
                {
                    "name": "Get my team performance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "30d",
                                    "description": "7d, 30d, 90d or all.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team?period=30d"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Aggregate funnel, per-member clicks\/sign-ups\/paid accounts, platform earnings,\nteam rewards and retained amount. No referred-shop identity or contact details.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"member_count\":1,\"funnel\":{\"clicks\":12,\"signups\":2,\"paid\":1},\"platform_earnings\":{\"lifetime_paise\":39900},\"team_rewards\":{\"lifetime_paise\":20000},\"retained_paise\":19900,\"members\":[{\"id\":8,\"name\":\"Anita Rao\",\"status\":\"active\",\"team_role\":\"associate\",\"phone\":\"+919123456789\",\"email\":null,\"funnel\":{\"clicks\":12,\"signups\":2,\"paid\":1},\"earnings\":{\"lifetime_paise\":20000}}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"Forbidden\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create my team member.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Anita Rao\",\"phone\":\"9123456789\",\"email\":\"anita@example.com\",\"status\":\"active\",\"team_role\":\"associate\"}"
                        },
                        "description": "Creates a new account belonging only to this master, with WhatsApp OTP login. It does\nnot send an invitation message; share \/partners\/login with the person. Existing\npartner numbers cannot be claimed. Members cannot create their own teams.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":8,\"name\":\"Anita Rao\",\"phone\":\"+919123456789\",\"email\":null,\"status\":\"active\",\"account_type\":\"member\",\"team_role\":\"associate\",\"master_partner_id\":3}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Another partner already uses this number.\",\"errors\":{\"phone\":[\"Another partner already uses this number.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get my team member and link performance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members\/:member_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members\/:member_id",
                            "variable": [
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Includes eligible programs and reward balances, never platform admin notes or PAN.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"member\":{\"id\":8,\"name\":\"Anita Rao\",\"master_partner_id\":3},\"funnel\":{\"clicks\":12,\"signups\":2,\"paid\":1},\"earnings\":{\"lifetime_paise\":20000},\"available_programs\":[],\"links\":[{\"id\":4,\"code\":\"ANITA4K\",\"program_id\":2,\"label\":\"WhatsApp\",\"url\":\"https:\/\/dukanam.com\/p\/ANITA4K\",\"destination\":\"register\",\"is_active\":true,\"stats\":{\"clicks\":12,\"signups\":2,\"paid\":1}}]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update my team member.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members\/:member_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members\/:member_id",
                            "variable": [
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Anita Rao\",\"phone\":\"9123456789\",\"email\":\"anita@example.com\",\"status\":\"suspended\",\"team_role\":\"employee\"}"
                        },
                        "description": "Only profile, phone, status and team_role may change. Parent, account type and\nplatform commission fields are prohibited. Suspending stops login and new attribution.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":8,\"name\":\"Anita Rao\",\"phone\":\"+919123456789\",\"email\":null,\"status\":\"suspended\",\"account_type\":\"member\",\"team_role\":\"employee\",\"master_partner_id\":3}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a link for my team member.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members\/:member_id\/links",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members\/:member_id\/links",
                            "variable": [
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"program_id\":2,\"label\":\"WhatsApp\",\"code\":\"ANITA4K\",\"destination\":\"register\"}"
                        },
                        "description": "A team program eligible for this member is required. Default platform programs\nand other masters' programs cannot be used. Shared link limit is 25 per member.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":4,\"code\":\"ANITA4K\",\"program_id\":2,\"label\":\"WhatsApp\",\"url\":\"https:\/\/dukanam.com\/p\/ANITA4K\",\"destination\":\"register\",\"is_active\":true,\"created_at\":\"2026-10-06T12:00:00Z\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Pause or resume my member's link.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members\/:member_id\/links\/:link_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members\/:member_id\/links\/:link_id",
                            "variable": [
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                },
                                {
                                    "id": "link_id",
                                    "key": "link_id",
                                    "value": 1,
                                    "description": "The ID of the link."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_active\":false}"
                        },
                        "description": "Both member and link must belong to this master's team. Paused links stop new attribution.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":4,\"program_id\":2,\"code\":\"ANITA4K\",\"is_active\":false}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List my team programs.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/programs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/programs"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "All\/selected audiences apply only within this master's team. Includes paused and scheduled programs.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":2,\"owner_master_partner_id\":3,\"name\":\"Shop referrals\",\"audience\":\"all\",\"partner_ids\":[],\"is_active\":true,\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":20000,\"percent_basis_points\":null,\"custom\":false,\"description\":\"\u20b9200.00 per paid account\"},\"hold_days\":7}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create my team program.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/programs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/programs"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Shop referrals\",\"description\":\"Refer shops and earn rewards.\",\"is_active\":true,\"audience\":\"all\",\"partner_ids\":[8],\"starts_at\":null,\"ends_at\":null,\"commission_type\":\"flat\",\"flat_amount\":200,\"percent\":50,\"hold_days\":7}"
                        },
                        "description": "Fixed rewards must be below the master's fixed platform rate. Percent rewards\nuse the master's platform commission, not the shop payment, up to 99.99%.\nA rounding safeguard retains at least one paise for the master per conversion.\nTeam hold is the longer of program and master platform holds. Terms are saved at sign-up.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":2,\"owner_master_partner_id\":3,\"name\":\"Shop referrals\",\"audience\":\"all\",\"partner_ids\":[],\"is_active\":true,\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":20000,\"percent_basis_points\":null,\"custom\":false,\"description\":\"\u20b9200.00 per paid account\"},\"hold_days\":7}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Fixed team rewards must be lower than your fixed platform commission.\",\"errors\":{\"flat_amount\":[\"Fixed team rewards must be lower than your fixed platform commission.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Replace my team program.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/programs\/:program_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/programs\/:program_id",
                            "variable": [
                                {
                                    "id": "program_id",
                                    "key": "program_id",
                                    "value": 1,
                                    "description": "The ID of the program."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"b\",\"description\":\"Et animi quos velit et fugiat.\",\"is_active\":false,\"audience\":\"all\",\"partner_ids\":[16],\"starts_at\":\"2026-01-15\",\"ends_at\":\"2026-01-15\",\"commission_type\":\"flat\",\"flat_amount\":22,\"percent\":7,\"hold_days\":16}"
                        },
                        "description": "Uses the same full configuration and validation as creation. Prior referrals\nretain saved master and member terms. Omitted optional timestamps clear the window.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":2,\"owner_master_partner_id\":3,\"name\":\"Shop referrals\",\"is_active\":false,\"audience\":\"all\",\"partner_ids\":[],\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":20000,\"percent_basis_points\":null,\"custom\":false,\"description\":\"\u20b9200.00 per paid account\"},\"hold_days\":7}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List my team settlements.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/settlements",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/settlements"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Processing, paid and cancelled manual transfers, separate from Dukanam payouts.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"master_partner_id\":3,\"partner_id\":8,\"status\":\"processing\",\"gross_paise\":20000,\"commissions_count\":1,\"account_label\":\"UPI \u00b7 an\u2022\u2022@okhdfcbank\",\"reference\":null,\"notes\":null,\"created_by_partner_id\":3,\"paid_by_partner_id\":null,\"created_at\":\"2026-10-06T12:00:00Z\",\"paid_at\":null,\"cancelled_at\":null}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get my settlement's payment details.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/settlements\/:settlement_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/settlements\/:settlement_id",
                            "variable": [
                                {
                                    "id": "settlement_id",
                                    "key": "settlement_id",
                                    "value": 1,
                                    "description": "The ID of the settlement."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Full saved bank\/UPI destination, only for the owning master, to make the external\ntransfer. List responses are masked. Later member edits never change this destination.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"status\":\"processing\",\"gross_paise\":20000,\"account\":{\"method\":\"upi\",\"account_holder_name\":\"Anita Rao\",\"upi_id\":\"anita@okhdfcbank\"}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Prepare my member's settlement.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/members\/:member_id\/settlements",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/members\/:member_id\/settlements",
                            "variable": [
                                {
                                    "id": "member_id",
                                    "key": "member_id",
                                    "value": 1,
                                    "description": "The ID of the member."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": null,
                        "description": "Reserves all approved unsettled rewards for this member. Requires completed profile\nand primary payout account; keeps an encrypted destination snapshot. Duplicate\npreparation without new rewards returns 422. Does not transfer money or reserve\nany Dukanam payout. Total is the full reward amount with no automatic withholding.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":1,\"master_partner_id\":3,\"partner_id\":8,\"status\":\"processing\",\"gross_paise\":20000,\"commissions_count\":1,\"account_label\":\"UPI \u00b7 an\u2022\u2022@okhdfcbank\",\"reference\":null,\"notes\":null,\"created_by_partner_id\":3,\"paid_by_partner_id\":null,\"created_at\":\"2026-10-06T12:00:00Z\",\"paid_at\":null,\"cancelled_at\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"No eligible rewards or missing payment details.\",\"errors\":{\"settlement\":[\"No eligible rewards or missing payment details.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Mark my settlement paid.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/settlements\/:settlement_id\/mark-paid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/settlements\/:settlement_id\/mark-paid",
                            "variable": [
                                {
                                    "id": "settlement_id",
                                    "key": "settlement_id",
                                    "value": 1,
                                    "description": "The ID of the settlement."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reference\":\"UTR123456\",\"paid_at\":null,\"notes\":\"Paid by UPI\"}"
                        },
                        "description": "Only processing records. Stores reference, date and acting master; marks reserved\nmember rewards paid. Repeated payment returns 422. Transfer happens outside Dukanam.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"master_partner_id\":3,\"partner_id\":8,\"status\":\"paid\",\"gross_paise\":20000,\"reference\":\"UTR123456\",\"paid_by_partner_id\":3,\"paid_at\":\"2026-10-06T12:00:00Z\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Cancel my processing settlement.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/team\/settlements\/:settlement_id\/cancel",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/team\/settlements\/:settlement_id\/cancel",
                            "variable": [
                                {
                                    "id": "settlement_id",
                                    "key": "settlement_id",
                                    "value": 1,
                                    "description": "The ID of the settlement."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"notes\":\"Wrong account; prepare again\"}"
                        },
                        "description": "Frees its rewards for a future settlement. A paid record cannot be cancelled.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"master_partner_id\":3,\"partner_id\":8,\"status\":\"cancelled\",\"gross_paise\":20000,\"cancelled_at\":\"2026-10-06T12:00:00Z\"}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Partner portal",
            "description": "\nOwn-account access for individual partners, masters and team members. Requires a\npartner session from \/partners\/login (WhatsApp OTP), not a workspace bearer token.\nWrites require the session CSRF token. Responses are private and not cached.\nTeam members see their master's eligible programs and their own rewards\/payments.",
            "item": [
                {
                    "name": "Get my partner dashboard.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "30d",
                                    "description": "7d, 30d, 90d or all.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me?period=30d"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Shop identities and internal notes are excluded. Earnings are lifetime; funnel\nuses the requested period. Team members never see other members' balances.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"partner\":{\"id\":8,\"name\":\"Anita Rao\",\"account_type\":\"member\",\"team_role\":\"associate\",\"master_partner_id\":3},\"available_programs\":[{\"id\":2,\"name\":\"Shop referrals\",\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":20000}}],\"funnel\":{\"clicks\":12,\"signups\":2,\"paid\":1},\"earnings\":{\"on_hold_paise\":0,\"available_paise\":20000,\"processing_paise\":0,\"paid_paise\":0,\"lifetime_paise\":20000}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List my links and performance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me\/links",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me\/links"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":4,\"program_id\":2,\"code\":\"ANITA4K\",\"label\":\"WhatsApp\",\"url\":\"https:\/\/dukanam.com\/p\/ANITA4K\",\"destination\":\"register\",\"is_active\":true,\"stats\":{\"clicks\":12,\"signups\":2,\"paid\":1},\"share\":{\"code\":\"ANITA4K\",\"link\":\"https:\/\/dukanam.com\/p\/ANITA4K\",\"message\":\"Try Dukanam\",\"whatsapp_url\":\"https:\/\/wa.me\/?text=Try%20Dukanam\"}}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create my program link.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me\/links",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me\/links"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"program_id\":2,\"label\":\"WhatsApp\",\"code\":\"ANITA4K\",\"destination\":\"register\"}"
                        },
                        "description": "Team members must choose an active eligible team program. Individual\/master\npartners may omit program_id for their default platform deal. Maximum 25 links.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":4,\"program_id\":2,\"code\":\"ANITA4K\",\"label\":\"WhatsApp\",\"url\":\"https:\/\/dukanam.com\/p\/ANITA4K\",\"destination\":\"register\",\"is_active\":true}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update my link.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me\/links\/:link_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me\/links\/:link_id",
                            "variable": [
                                {
                                    "id": "link_id",
                                    "key": "link_id",
                                    "value": 1,
                                    "description": "The ID of the link."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            },
                            {
                                "key": "X-CSRF-TOKEN",
                                "value": "{SESSION_CSRF_TOKEN}"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"label\":\"Instagram\",\"destination\":\"register\",\"is_active\":false}"
                        },
                        "description": "Only your links; code, program and ownership cannot be changed. A paused link\nstill redirects, but stops attribution of new clicks and sign-ups.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":4,\"program_id\":2,\"code\":\"ANITA4K\",\"label\":\"Instagram\",\"destination\":\"register\",\"is_active\":false}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List my earnings history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me\/commissions",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me\/commissions"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Paginated commissions, using member rewards for a team account. Excludes shop\nidentities and the master's gross platform commission. All amounts are paise.\npartner_referral_id is null if the referred account has been deleted.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"partner_referral_id\":9,\"amount_paise\":20000,\"status\":\"approved\",\"program_name\":\"Shop referrals\",\"earned_at\":\"2026-10-06T12:00:00Z\",\"hold_until\":\"2026-10-06T12:00:00Z\",\"paid_at\":null,\"rejection_reason\":null}],\"current_page\":1,\"per_page\":25,\"total\":1}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List my payments.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/partners\/me\/payments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/partners\/me\/payments"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            },
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Cookie",
                                "value": "dukanam-session={PARTNER_SESSION}"
                            }
                        ],
                        "body": null,
                        "description": "Team accounts receive master-funded manual settlement records; other partners\nreceive platform payout records. Saved payment destinations are masked.",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"master_partner_id\":3,\"partner_id\":8,\"status\":\"paid\",\"gross_paise\":20000,\"account_label\":\"UPI \u00b7 an\u2022\u2022@ybl\",\"reference\":\"UTR123456\",\"paid_at\":\"2026-10-06T12:00:00Z\"}]}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Partner program administration",
            "description": "\nRequires a super-admin token. Named programs supplement the existing default shop\nreferral program; global enablement, payout minimum and TDS still apply.",
            "item": [
                {
                    "name": "List named partner programs.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-programs",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Page size, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-programs?per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": "Includes platform-owned drafts, paused, future and expired programs for administration.\nMaster-owned programs are managed only through the owning master\u2019s team API.\nThe default program is managed by \/admin\/partner-program and has no database ID."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":1,\"owner_master_partner_id\":null,\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission\":{\"type\":\"percent\",\"flat_amount_paise\":null,\"percent_basis_points\":2500,\"custom\":false,\"description\":\"25% of the first payment\"},\"hold_days\":15,\"created_at\":\"2026-10-06T12:00:00.000000Z\"}]}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a named partner program.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-programs",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-programs"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission_type\":\"percent\",\"flat_amount\":250,\"percent\":25,\"hold_days\":15}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":1,\"owner_master_partner_id\":null,\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission\":{\"type\":\"percent\",\"flat_amount_paise\":null,\"percent_basis_points\":2500,\"custom\":false,\"description\":\"25% of the first payment\"},\"hold_days\":15,\"created_at\":\"2026-10-06T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected audience is invalid.\",\"errors\":{\"audience\":[\"The selected audience is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get a named partner program.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-programs\/:program_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-programs\/:program_id",
                            "variable": [
                                {
                                    "id": "program_id",
                                    "key": "program_id",
                                    "value": 1,
                                    "description": "The ID of the program."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"owner_master_partner_id\":null,\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission\":{\"type\":\"percent\",\"flat_amount_paise\":null,\"percent_basis_points\":2500,\"custom\":false,\"description\":\"25% of the first payment\"},\"hold_days\":15,\"created_at\":\"2026-10-06T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Replace a named partner program.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-programs\/:program_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-programs\/:program_id",
                            "variable": [
                                {
                                    "id": "program_id",
                                    "key": "program_id",
                                    "value": 1,
                                    "description": "The ID of the program."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission_type\":\"percent\",\"flat_amount\":250,\"percent\":25,\"hold_days\":15}"
                        },
                        "description": "Send the full configuration. Pausing, expiry or removing an eligible partner\nstops new attribution. Already attributed referrals retain a snapshot of the\nprogram reward and hold period from sign-up, even if the program changes later.\nSuspending the partner still blocks commissions. Omitted timestamps clear the window."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"owner_master_partner_id\":null,\"name\":\"Creator campaign\",\"description\":\"Help shops discover Dukanam.\",\"is_active\":true,\"audience\":\"selected\",\"partner_ids\":[3],\"starts_at\":null,\"ends_at\":null,\"commission\":{\"type\":\"percent\",\"flat_amount_paise\":null,\"percent_basis_points\":2500,\"custom\":false,\"description\":\"25% of the first payment\"},\"hold_days\":15,\"created_at\":\"2026-10-06T12:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The ends at field must be a date after starts at.\",\"errors\":{\"ends_at\":[\"The ends at field must be a date after starts at.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get partner program settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-program",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-program"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "The default commission deal, the refund hold period, the minimum payout, the TDS\nrate applied to payouts and the share message, with program-wide totals."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"enabled\":true,\"commission_type\":\"flat\",\"flat_amount_paise\":20000,\"percent_basis_points\":2000,\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0,\"share_message\":\"I use Dukanam for billing, stock and khata. Try it free: {link}\",\"placeholders\":[\"{link}\",\"{code}\",\"{name}\"],\"totals\":{\"partners\":4,\"clicks\":1820,\"signups\":96,\"paid\":14,\"on_hold_paise\":120000,\"available_paise\":80000,\"processing_paise\":0,\"paid_out_net_paise\":160000}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update partner program settings.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-program",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-program"
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"enabled\":true,\"commission_type\":\"flat\",\"flat_amount\":200,\"percent\":20,\"hold_days\":30,\"minimum_payout\":500,\"tds_percent\":2,\"share_message\":\"Try Dukanam free: {link}\"}"
                        },
                        "description": "Amounts in rupees and rates in percent, as the admin console takes them. Applies to\ncommissions earned and payouts prepared from now on; each existing commission keeps\nthe rule it was earned under. Turning the program off stops new clicks and sign-ups\nbeing credited; accounts already credited still earn when they pay."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"enabled\":true,\"commission_type\":\"percent\",\"flat_amount_paise\":20000,\"percent_basis_points\":2500,\"hold_days\":15,\"minimum_payout_paise\":50000,\"tds_basis_points\":200,\"share_message\":\"Try Dukanam free: {link}\",\"placeholders\":[\"{link}\",\"{code}\",\"{name}\"],\"totals\":{\"partners\":4,\"clicks\":1820,\"signups\":96,\"paid\":14,\"on_hold_paise\":120000,\"available_paise\":80000,\"processing_paise\":0,\"paid_out_net_paise\":160000}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The commission type field is required.\",\"errors\":{\"commission_type\":[\"The commission type field is required.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List partners.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners",
                            "query": [
                                {
                                    "key": "search",
                                    "value": "ravi",
                                    "description": "Match the name, email or a link code.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "active or suspended.",
                                    "disabled": false
                                },
                                {
                                    "key": "period",
                                    "value": "30d",
                                    "description": "7d, 30d, 90d or all. Defaults to 30d.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners?search=ravi&status=active&period=30d&per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"search\":\"b\",\"per_page\":22}"
                        },
                        "description": "Every partner with their deal and a leaderboard row for the period: human clicks,\nsign-ups and paid accounts in the period, and lifetime money earned (not rejected),\nowed (on hold or approved, not yet paid) and paid out net of TDS."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":3,\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.com\",\"phone\":\"+919876543210\",\"pan_on_file\":true,\"pan_masked\":\"\u2022\u2022\u2022\u2022\u2022\u2022234F\",\"status\":\"active\",\"signup_source\":\"invited\",\"profile_completed_at\":\"2026-09-29T10:00:00.000000Z\",\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"description\":\"\u20b9250.00 per paid account\"},\"notes\":\"YouTube, 80k subscribers\",\"links_count\":3,\"has_payout_account\":true,\"last_login_at\":\"2026-09-28T10:00:00.000000Z\",\"created_at\":\"2026-09-01T10:00:00.000000Z\",\"stats\":{\"clicks\":640,\"signups\":31,\"paid\":6,\"earned_paise\":150000,\"owed_paise\":50000,\"paid_out_net_paise\":100000},\"account_type\":\"individual\",\"master_partner_id\":null,\"team_role\":null,\"payment_responsibility\":\"platform\",\"platform_payout_terms\":{\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0}}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Invite a partner.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"account_type\":\"master\",\"commission_hold_days\":7,\"payout_minimum_amount\":1000,\"payout_tds_percent\":2,\"name\":\"Ravi Kumar\",\"phone\":\"9876543210\",\"email\":\"ravi@example.com\",\"status\":\"active\",\"commission_type\":\"flat\",\"commission_flat_amount\":250,\"commission_percent\":25,\"notes\":\"YouTube, 80k subscribers\"}"
                        },
                        "description": "Creates the partner and a first link. They can sign in at \/partners\/login straight\naway with a WhatsApp code to this number. Leave `commission_type` empty for the\nprogram default."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":3,\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.com\",\"phone\":\"+919876543210\",\"pan_on_file\":false,\"pan_masked\":null,\"status\":\"active\",\"signup_source\":\"invited\",\"profile_completed_at\":\"2026-09-29T10:00:00.000000Z\",\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"description\":\"\u20b9250.00 per paid account\"},\"notes\":\"YouTube, 80k subscribers\",\"last_login_at\":null,\"created_at\":\"2026-09-29T10:00:00.000000Z\",\"links\":[{\"id\":7,\"code\":\"RAVI7K\",\"label\":\"Main link\",\"program_id\":null,\"url\":\"https:\/\/dukanam.com\/p\/RAVI7K\",\"destination\":\"register\",\"is_active\":true,\"created_at\":\"2026-09-29T10:00:00.000000Z\"}],\"account_type\":\"individual\",\"master_partner_id\":null,\"team_role\":null,\"payment_responsibility\":\"platform\",\"platform_payout_terms\":{\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Another partner already uses this number.\",\"errors\":{\"phone\":[\"Another partner already uses this number.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Get a partner's performance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:id",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "30d",
                                    "description": "7d, 30d, 90d or all. Defaults to 30d.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:id?period=30d",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "[]"
                        },
                        "description": "The partner, their funnel for the period, lifetime earnings, every link with its own\nfunnel, click sources and a zero-filled 30-day daily series. `available_programs`\nuses the same active, scheduled and audience filtering as the partner portal;\nid null denotes the default program with the partner\u2019s personal deal applied.\nSuspended partners and global program pause return an empty available_programs list.\nActive masters include team_overview with team funnel, per-member performance,\nplatform earnings, team obligations and retained amount. Member available_programs\ncontains only their master's eligible programs; earnings use the team reward ledger."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"partner\":{\"id\":3,\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.com\",\"phone\":\"+919876543210\",\"pan_on_file\":true,\"pan_masked\":\"\u2022\u2022\u2022\u2022\u2022\u2022234F\",\"status\":\"active\",\"signup_source\":\"invited\",\"profile_completed_at\":\"2026-09-29T10:00:00.000000Z\",\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"description\":\"\u20b9250.00 per paid account\"},\"notes\":null,\"has_payout_account\":true,\"last_login_at\":null,\"created_at\":\"2026-09-01T10:00:00.000000Z\",\"account_type\":\"individual\",\"master_partner_id\":null,\"team_role\":null,\"payment_responsibility\":\"platform\",\"platform_payout_terms\":{\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0}},\"funnel\":{\"clicks\":640,\"unique_visitors\":512,\"signups\":31,\"checkouts_started\":9,\"paid\":6,\"click_to_signup_rate\":4.8,\"signup_to_paid_rate\":19.4},\"earnings\":{\"on_hold_paise\":50000,\"available_paise\":0,\"processing_paise\":0,\"paid_paise\":100000,\"lifetime_paise\":150000,\"paid_out_net_paise\":100000,\"tds_deducted_paise\":0},\"links\":[{\"id\":7,\"code\":\"RAVI7K\",\"label\":\"Main link\",\"program_id\":null,\"url\":\"https:\/\/dukanam.com\/p\/RAVI7K\",\"destination\":\"register\",\"is_active\":true,\"created_at\":\"2026-09-01T10:00:00.000000Z\",\"stats\":{\"clicks\":640,\"unique_visitors\":512,\"signups\":31,\"checkouts_started\":9,\"paid\":6,\"click_to_signup_rate\":4.8,\"signup_to_paid_rate\":19.4}}],\"sources\":{\"youtube\":420,\"whatsapp\":150,\"direct\":70},\"daily\":[{\"date\":\"2026-09-29\",\"clicks\":24,\"signups\":1,\"paid\":0}],\"available_programs\":[{\"id\":null,\"name\":\"Shop referral program\",\"description\":\"Help shops get started with Dukanam and earn on their first paid plan payment.\",\"is_default\":true,\"commission\":{\"type\":\"flat\",\"flat_amount_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"description\":\"\u20b9250.00 per paid account\"},\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0,\"starts_at\":null,\"ends_at\":null}],\"team_overview\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update a partner.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"account_type\":\"master\",\"commission_hold_days\":7,\"payout_minimum_amount\":1000,\"payout_tds_percent\":2,\"name\":\"Ravi Kumar\",\"phone\":\"9876543210\",\"email\":\"ravi@example.com\",\"status\":\"suspended\",\"commission_type\":\"percent\",\"commission_flat_amount\":250,\"commission_percent\":25,\"notes\":\"Paused while the campaign is reviewed\"}"
                        },
                        "description": "Send only what changes. Suspending a partner signs them out, stops their links\ncrediting new sign-ups and stops new commissions. Send `commission_type` as null to\nmove individuals back to the program default. Members cannot change hierarchy or\nplatform deals. Master fixed deals must remain above active fixed team rewards.\nNull payout overrides restore global defaults. Masters with members cannot be downgraded."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":3,\"name\":\"Ravi Kumar\",\"email\":\"ravi@example.com\",\"phone\":\"+919876543210\",\"pan_on_file\":false,\"pan_masked\":null,\"status\":\"suspended\",\"commission\":{\"type\":\"percent\",\"flat_amount_paise\":null,\"percent_basis_points\":2500,\"custom\":true,\"description\":\"25% of the first payment\"},\"notes\":\"Paused while the campaign is reviewed\",\"last_login_at\":null,\"created_at\":\"2026-09-01T10:00:00.000000Z\",\"account_type\":\"individual\",\"master_partner_id\":null,\"team_role\":null,\"payment_responsibility\":\"platform\",\"platform_payout_terms\":{\"hold_days\":30,\"minimum_payout_paise\":50000,\"tds_basis_points\":0}}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Add a link for a partner.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:partner_id\/links",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:partner_id\/links",
                            "variable": [
                                {
                                    "id": "partner_id",
                                    "key": "partner_id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"program_id\":null,\"label\":\"Instagram bio\",\"code\":\"RAVIINSTA\",\"destination\":\"pricing\"}"
                        },
                        "description": "Codes are letters and numbers, 4\u201316 characters, unique across partner links and\ncustomer referral codes. Omit `code` to generate one from the partner's name."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":8,\"code\":\"RAVIINSTA\",\"label\":\"Instagram bio\",\"program_id\":null,\"url\":\"https:\/\/dukanam.com\/p\/RAVIINSTA\",\"destination\":\"pricing\",\"is_active\":true,\"created_at\":\"2026-09-29T10:00:00.000000Z\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"This code is already taken. Try another.\",\"errors\":{\"code\":[\"This code is already taken. Try another.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Pause or resume a partner link.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:partner_id\/links\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:partner_id\/links\/:id",
                            "variable": [
                                {
                                    "id": "partner_id",
                                    "key": "partner_id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the link."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"is_active\":false}"
                        },
                        "description": "A paused link still sends visitors to sign-up but no longer counts clicks or credits\nsign-ups to the partner."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":8,\"code\":\"RAVIINSTA\",\"label\":\"Instagram bio\",\"program_id\":null,\"url\":\"https:\/\/dukanam.com\/p\/RAVIINSTA\",\"destination\":\"pricing\",\"is_active\":false,\"created_at\":\"2026-09-29T10:00:00.000000Z\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List a partner's sign-ups.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:partner_id\/referrals",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "paid",
                                    "description": "registered, subscription_pending or paid.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:partner_id\/referrals?status=paid&per_page=25",
                            "variable": [
                                {
                                    "id": "partner_id",
                                    "key": "partner_id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": "Every account credited to the partner, with the account and workspace. Partners\nthemselves never see these names."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":41,\"code\":\"RAVI7K\",\"link\":{\"id\":7,\"label\":\"Main link\"},\"source\":\"web\",\"status\":\"paid\",\"status_label\":\"Paid\",\"user\":{\"id\":88,\"name\":\"Meena Shah\",\"email\":\"meena@example.com\"},\"business\":{\"id\":90,\"name\":\"Meena Stores\"},\"payment_source\":\"razorpay\",\"payment_amount_paise\":84661,\"commission_blocked_reason\":null,\"registered_at\":\"2026-09-10T08:00:00.000000Z\",\"subscription_pending_at\":\"2026-09-12T08:00:00.000000Z\",\"paid_at\":\"2026-09-12T08:05:00.000000Z\"}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Add a bonus or adjustment.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partners\/:partner_id\/adjustments",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partners\/:partner_id\/adjustments",
                            "variable": [
                                {
                                    "id": "partner_id",
                                    "key": "partner_id",
                                    "value": 1,
                                    "description": "The ID of the partner."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"amount\":1500,\"description\":\"Diwali campaign fee\"}"
                        },
                        "description": "A campaign fee or bonus (positive) or a claw-back (negative), in rupees. Approved at\nonce and included in the partner's next payout."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":55,\"partner_referral_id\":null,\"kind\":\"adjustment\",\"amount_paise\":150000,\"basis\":null,\"description\":\"Diwali campaign fee\",\"status\":\"approved\",\"status_label\":\"Approved\",\"earned_at\":\"2026-09-29T10:00:00.000000Z\",\"hold_until\":null,\"approved_at\":\"2026-09-29T10:00:00.000000Z\",\"rejected_at\":null,\"rejection_reason\":null,\"partner_payout_id\":null,\"paid_at\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List partner commissions.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-commissions",
                            "query": [
                                {
                                    "key": "partner_id",
                                    "value": "3",
                                    "description": "Only this partner.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "pending",
                                    "description": "pending, approved, paid or rejected.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-commissions?partner_id=3&status=pending&per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"partner_id\":16,\"per_page\":22}"
                        },
                        "description": "A conversion commission is earned when a credited account's first paid charge is\ncaptured; it is `pending` (on hold) until `hold_until`, then `approved`. An approved\ncommission with a `partner_payout_id` is in a payout being sent. `basis` records the\nrule it was earned under. For named-program links it also includes `program_id`,\n`program_name` and the reward\/hold terms saved at sign-up."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":54,\"partner\":{\"id\":3,\"name\":\"Ravi Kumar\"},\"partner_referral_id\":41,\"kind\":\"conversion\",\"amount_paise\":25000,\"basis\":{\"type\":\"flat\",\"flat_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"base_paise\":84661,\"hold_days\":30,\"program_id\":1,\"program_name\":\"Creator campaign\"},\"description\":\"Paid account via RAVI7K\",\"status\":\"pending\",\"status_label\":\"On hold\",\"earned_at\":\"2026-09-12T08:05:00.000000Z\",\"hold_until\":\"2026-10-12T08:05:00.000000Z\",\"approved_at\":null,\"rejected_at\":null,\"rejection_reason\":null,\"partner_payout_id\":null,\"paid_at\":null}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Approve a commission now.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-commissions\/:commission_id\/approve",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-commissions\/:commission_id\/approve",
                            "variable": [
                                {
                                    "id": "commission_id",
                                    "key": "commission_id",
                                    "value": 1,
                                    "description": "The ID of the commission."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Skips the rest of the hold period, so the commission goes into the next payout."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":54,\"partner_referral_id\":41,\"kind\":\"conversion\",\"amount_paise\":25000,\"basis\":{\"type\":\"flat\",\"flat_paise\":25000,\"percent_basis_points\":null,\"custom\":true,\"base_paise\":84661,\"hold_days\":30},\"description\":\"Paid account via RAVI7K\",\"status\":\"approved\",\"status_label\":\"Approved\",\"earned_at\":\"2026-09-12T08:05:00.000000Z\",\"hold_until\":\"2026-10-12T08:05:00.000000Z\",\"approved_at\":\"2026-09-29T10:00:00.000000Z\",\"rejected_at\":null,\"rejection_reason\":null,\"partner_payout_id\":null,\"paid_at\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only a commission on hold can be approved.\",\"errors\":{\"commission\":[\"Only a commission on hold can be approved.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Reject a commission.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-commissions\/:commission_id\/reject",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-commissions\/:commission_id\/reject",
                            "variable": [
                                {
                                    "id": "commission_id",
                                    "key": "commission_id",
                                    "value": 1,
                                    "description": "The ID of the commission."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Subscription refunded\"}"
                        },
                        "description": "For a refund, a fake sign-up or a policy breach. Only an unpaid commission that is not\nin a payout can be rejected; cancel the payout first. The partner sees the reason.\nIts unpaid team reward is also rejected; a reserved team settlement is cancelled,\nreleasing other rewards. Already recorded external team payments remain paid."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":54,\"partner_referral_id\":41,\"kind\":\"conversion\",\"amount_paise\":25000,\"basis\":null,\"description\":\"Paid account via RAVI7K\",\"status\":\"rejected\",\"status_label\":\"Rejected\",\"earned_at\":\"2026-09-12T08:05:00.000000Z\",\"hold_until\":\"2026-10-12T08:05:00.000000Z\",\"approved_at\":null,\"rejected_at\":\"2026-09-29T10:00:00.000000Z\",\"rejection_reason\":\"Subscription refunded\",\"partner_payout_id\":null,\"paid_at\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List payouts.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-payouts",
                            "query": [
                                {
                                    "key": "partner_id",
                                    "value": "3",
                                    "description": "Only this partner.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "processing",
                                    "description": "processing, paid or cancelled.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "25",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-payouts?partner_id=3&status=processing&per_page=25"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"partner_id\":16,\"per_page\":22}"
                        },
                        "description": "Payouts are listed without full account numbers; download the payment sheet for those."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":12,\"partner\":{\"id\":3,\"name\":\"Ravi Kumar\"},\"status\":\"processing\",\"status_label\":\"Processing\",\"gross_paise\":100000,\"tds_basis_points\":200,\"tds_paise\":2000,\"net_paise\":98000,\"commissions_count\":4,\"account\":{\"method\":\"bank\",\"label\":\"HDFC Bank \u2022\u20226789\",\"account_holder_name\":\"Ravi Kumar\",\"ifsc\":\"HDFC0001234\"},\"reference\":null,\"notes\":null,\"created_at\":\"2026-09-29T10:00:00.000000Z\",\"paid_at\":null,\"cancelled_at\":null}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":25,\"total\":1}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Prepare payouts.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-payouts\/prepare",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-payouts\/prepare"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"partner_ids\":[3]}"
                        },
                        "description": "Releases commissions whose hold has ended, then groups every approved commission not\nyet in a payout into one `processing` payout per partner, sent to their primary payout\naccount with their effective TDS rate deducted. Master payout overrides apply.\nTeam members are paid separately by their masters and never receive platform payouts.\nPartners under their effective minimum payout, or\nwithout a payout account, are listed and skipped."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"created\":[{\"id\":12,\"partner\":{\"id\":3,\"name\":\"Ravi Kumar\"},\"status\":\"processing\",\"status_label\":\"Processing\",\"gross_paise\":100000,\"tds_basis_points\":200,\"tds_paise\":2000,\"net_paise\":98000,\"commissions_count\":4,\"account\":{\"method\":\"bank\",\"label\":\"HDFC Bank \u2022\u20226789\",\"account_holder_name\":\"Ravi Kumar\",\"ifsc\":\"HDFC0001234\"},\"reference\":null,\"notes\":null,\"created_at\":\"2026-09-29T10:00:00.000000Z\",\"paid_at\":null,\"cancelled_at\":null}],\"missing_account\":[{\"id\":5,\"name\":\"Anita Rao\"}],\"below_minimum\":[]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Download the payment sheet.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-payouts\/export",
                            "query": [
                                {
                                    "key": "status",
                                    "value": "processing",
                                    "description": "processing (default), paid or cancelled.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-payouts\/export?status=processing"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "[]"
                        },
                        "description": "A CSV with one row per payout and the full account details to transfer to: partner\nname, phone, email, PAN, method, account holder, account number, IFSC, bank, UPI ID,\ngross, TDS and net amounts in rupees, and the reference and date once paid."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "payout_id,partner_id,partner_name,phone,email,pan,method,account_holder_name,account_number,ifsc,bank_name,upi_id,gross_amount,tds_amount,net_amount,commissions,status,prepared_at,reference,paid_at",
                            "name": "CSV file"
                        }
                    ]
                },
                {
                    "name": "Mark a payout paid.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-payouts\/:payout_id\/mark-paid",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-payouts\/:payout_id\/mark-paid",
                            "variable": [
                                {
                                    "id": "payout_id",
                                    "key": "payout_id",
                                    "value": 1,
                                    "description": "The ID of the payout."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reference\":\"UTR123456789\",\"paid_on\":\"2026-09-29\",\"notes\":\"Paid by NEFT\"}"
                        },
                        "description": "Record the bank reference (UTR) and date. The payout and its commissions become\n`paid`, and the partner sees it in their portal."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":12,\"status\":\"paid\",\"status_label\":\"Paid\",\"gross_paise\":100000,\"tds_basis_points\":200,\"tds_paise\":2000,\"net_paise\":98000,\"commissions_count\":4,\"account\":{\"method\":\"bank\",\"label\":\"HDFC Bank \u2022\u20226789\",\"account_holder_name\":\"Ravi Kumar\",\"ifsc\":\"HDFC0001234\"},\"reference\":\"UTR123456789\",\"notes\":\"Paid by NEFT\",\"created_at\":\"2026-09-29T10:00:00.000000Z\",\"paid_at\":\"2026-09-29T12:00:00.000000Z\",\"cancelled_at\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Only a payout that is processing can be marked paid.\",\"errors\":{\"payout\":[\"Only a payout that is processing can be marked paid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Cancel a payout.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/partner-payouts\/:payout_id\/cancel",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/partner-payouts\/:payout_id\/cancel",
                            "variable": [
                                {
                                    "id": "payout_id",
                                    "key": "payout_id",
                                    "value": 1,
                                    "description": "The ID of the payout."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"notes\":\"Account closed; partner is adding a new one\"}"
                        },
                        "description": "For a transfer that bounced or will not be made. Its commissions return to approved and\ngo into the next payout."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":12,\"status\":\"cancelled\",\"status_label\":\"Cancelled\",\"gross_paise\":100000,\"tds_basis_points\":200,\"tds_paise\":2000,\"net_paise\":98000,\"commissions_count\":4,\"account\":{\"method\":\"bank\",\"label\":\"HDFC Bank \u2022\u20226789\",\"account_holder_name\":\"Ravi Kumar\",\"ifsc\":\"HDFC0001234\"},\"reference\":null,\"notes\":\"Account closed; partner is adding a new one\",\"created_at\":\"2026-09-29T10:00:00.000000Z\",\"paid_at\":null,\"cancelled_at\":\"2026-09-29T12:00:00.000000Z\"}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Party and referrer profitability",
            "description": "\nAdvanced Plan exports require the corresponding profitability feature, accounting and\nexports permissions, and data_export. PDF, Excel and CSV contain every matching row,\nindependently of screen pagination. Dates, calculations and tenant checks match the\non-screen reports. Excel\/CSV money is numeric rupees; PDF displays INR.",
            "item": [
                {
                    "name": "Export party profit and loss.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact\/profitability\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "pdf",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact\/profitability\/export?format=pdf&period=this-financial-year&from=&to=",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact",
                                    "key": "contact",
                                    "value": 1,
                                    "description": "The contact."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> All invoice contribution rows and report total.",
                            "name": "All invoice contribution rows and report total."
                        }
                    ]
                },
                {
                    "name": "Export referrer profit and loss.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/profitability\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "xlsx",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/profitability\/export?format=xlsx&period=this-financial-year&from=&to=",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> All owner-attributed invoice contribution rows and report total.",
                            "name": "All owner-attributed invoice contribution rows and report total."
                        }
                    ]
                },
                {
                    "name": "Export the referrer commission statement.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/statement\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "csv",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/statement\/export?format=csv&period=this-financial-year&from=&to=",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Opening balance precedes the selected period. Every dated earning, return debit note,\npayout and correction is retained with a running balance. Negative balances are\nrecoverable; customer dues are not offset. Payments do not create commission expenses."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> Complete dated statement with opening, running and closing balances.",
                            "name": "Complete dated statement with opening, running and closing balances."
                        }
                    ]
                },
                {
                    "name": "Compare party profit and loss.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/reports\/party-profitability",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "q",
                                    "value": "",
                                    "description": "Party name, up to 100 characters.",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "all",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "profit",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/reports\/party-profitability?period=this-financial-year&from=&to=&q=&status=all&sort=profit&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires reports.party_profitability and accounting. Includes customer\/both parties,\narchived parties and those with no activity. Same dated facts as profile P&L. Summary\ncovers every party matching search\/status, independently of pagination. Invoice count\nuses current non-voided invoices issued in the period; current invoice dues exclude\nopening khata balances. Untracked goods have no recorded inventory cost."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Export the party profitability comparison.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/reports\/party-profitability\/export",
                            "query": [
                                {
                                    "key": "format",
                                    "value": "xlsx",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "q",
                                    "value": "",
                                    "description": "Party name, up to 100 characters.",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "all",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "profit",
                                    "description": "",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/reports\/party-profitability\/export?format=xlsx&period=this-financial-year&from=&to=&q=&status=all&sort=profit",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Same search\/status\/date filters as comparison. Every matching party is included,\nindependently of pagination. Inventory costs containing estimates are labelled."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "<<binary>> All matching parties, current invoice dues and contribution total.",
                            "name": "All matching parties, current invoice dues and contribution total."
                        }
                    ]
                },
                {
                    "name": "Party profit and loss.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/contacts\/:contact\/profitability",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d; required with custom period.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d; required with custom period.",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/contacts\/:contact\/profitability?period=this-financial-year&from=&to=&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "contact",
                                    "key": "contact",
                                    "value": 1,
                                    "description": "The contact."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Feature `reports.party_profitability`. Reports customer sales contribution, excluding\ngeneral shop overhead. Supplier spend is not treated as supplier profit\/loss."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Compare referrer performance.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/performance",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "q",
                                    "value": "",
                                    "description": "Referrer name or trade, up to 100 characters.",
                                    "disabled": true
                                },
                                {
                                    "key": "status",
                                    "value": "all",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "worker_type",
                                    "value": "referral",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "profit",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/performance?period=this-financial-year&from=&to=&q=&status=all&worker_type=referral&sort=profit&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"q\":\"b\",\"status\":\"active\",\"worker_type\":\"architecto\",\"sort\":\"profit\",\"per_page\":2,\"page\":67}"
                        },
                        "description": "Requires referral_workers and reports.worker_profitability. Includes referrers with no\nreferrals. Sales\/costs use owner-entered shares, while each referrer's commission remains\ntheir own amount. Invoice\/customer counts count current non-voided referrals issued in\nthe period; dated returns from earlier invoices affect profit independently. Dues and\nbalances are current, and shared customer dues appear under each referrer and\nmust not be added together. Last referral is the latest current non-voided invoice date."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Referrer profit and loss.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/profitability",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom start Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/profitability?period=this-financial-year&from=&to=&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Feature `reports.worker_profitability`, alongside `referral_workers`. Reports the shop's\ncontribution from this referrer's referred invoices. The referrer profile commission\nstatement separately reports the referrer's own earned\/paid\/due\/recoverable amounts.\nThe `costing` object has the same inventory confidence fields as party profitability."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Party pricing",
            "description": "\nRate cards that decide what a party pays. A contact carries one card and, optionally, a\nblanket discount; an invoice line for an item then takes its rate from the card unless the\nrequest quotes a rate of its own. See the Contacts endpoints for attaching a card to a party.",
            "item": [
                {
                    "name": "List the rate cards of the business.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/price-lists",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/price-lists",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a rate card.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/price-lists",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/price-lists",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Wholesale\",\"description\":\"Eius et animi quos velit et.\",\"price_includes_tax\":false,\"is_active\":false,\"valid_from\":\"2026-04-01\",\"valid_to\":\"2027-03-31\",\"items\":[{\"item_id\":16,\"sale_price\":455,\"discount_percent\":5,\"min_quantity\":25}]}"
                        },
                        "description": "Every row is either a fixed rate or a percentage off the item master, and applies from its\n`min_quantity` upwards, so one item can carry several quantity breaks on the same card."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Enter either a fixed rate or a discount for this item, not both.\",\"errors\":{\"items.0.sale_price\":[\"Enter either a fixed rate or a discount for this item, not both.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "GET api\/v1\/businesses\/{business}\/price-lists\/{id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/price-lists\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/price-lists\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the price list."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Replace a rate card.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/price-lists\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/price-lists\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the price list."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Wholesale\",\"description\":\"Eius et animi quos velit et.\",\"price_includes_tax\":false,\"is_active\":false,\"valid_from\":\"2026-04-01\",\"valid_to\":\"2027-03-31\",\"items\":[{\"item_id\":16,\"sale_price\":455,\"discount_percent\":5,\"min_quantity\":25}]}"
                        },
                        "description": "Sending `items` replaces every row on the card; leaving it out edits the card header and\nkeeps the rows. Saved documents keep the rate they were raised at either way."
                    },
                    "response": []
                },
                {
                    "name": "Delete a rate card that no party carries.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/price-lists\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/price-lists\/:id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 1,
                                    "description": "The ID of the price list."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Move the parties on this rate card to another one before deleting it.\",\"errors\":{\"price_list\":[\"Move the parties on this rate card to another one before deleting it.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Payment accounts",
            "description": "",
            "item": [
                {
                    "name": "GET api\/v1\/businesses\/{business}\/payment-accounts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/payment-accounts",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "PATCH api\/v1\/businesses\/{business}\/payment-accounts\/{paymentAccount_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "paymentAccount_id",
                                    "key": "paymentAccount_id",
                                    "value": 1,
                                    "description": "The ID of the paymentAccount."
                                }
                            ]
                        },
                        "method": "PATCH",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/payment-accounts\/transfer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts\/transfer",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts\/transfer",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"from_payment_account_id\":16,\"to_payment_account_id\":16,\"amount\":4326.41688,\"transferred_on\":\"2026-01-15\",\"reference\":\"m\",\"notes\":\"i\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "Show eligible transactions and statement-reconciliation history.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconciliation",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconciliation",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "paymentAccount_id",
                                    "key": "paymentAccount_id",
                                    "value": 1,
                                    "description": "The ID of the paymentAccount."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"statement_date\":\"2026-01-15\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Complete and lock a statement reconciliation.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconciliation",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconciliation",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "paymentAccount_id",
                                    "key": "paymentAccount_id",
                                    "value": 1,
                                    "description": "The ID of the paymentAccount."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"statement_date\":\"2026-01-15\",\"statement_balance\":-999999998,\"transaction_ids\":[16],\"notes\":\"n\"}"
                        },
                        "description": ""
                    },
                    "response": []
                },
                {
                    "name": "POST api\/v1\/businesses\/{business}\/payment-accounts\/{paymentAccount_id}\/reconcile\/{journalLine_id}",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconcile\/:journalLine_id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/payment-accounts\/:paymentAccount_id\/reconcile\/:journalLine_id",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "paymentAccount_id",
                                    "key": "paymentAccount_id",
                                    "value": 1,
                                    "description": "The ID of the paymentAccount."
                                },
                                {
                                    "id": "journalLine_id",
                                    "key": "journalLine_id",
                                    "value": 1,
                                    "description": "The ID of the journalLine."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": ""
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Platform broadcasts",
            "description": "\nSuper admins push an announcement, optionally with a banner image, to the shops that match\na set of workspace filters: where they trade, what they sell, and what they pay for.",
            "item": [
                {
                    "name": "List sent broadcasts.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/notifications",
                            "query": [
                                {
                                    "key": "per_page",
                                    "value": "24",
                                    "description": "Results per page, from 1 to 50.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/notifications?per_page=24"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":1}"
                        },
                        "description": "Newest first, with the filters each was sent to and how many devices Firebase accepted."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[{\"id\":9,\"title\":\"GST filing window opens tomorrow\",\"body\":\"GSTR-3B for this month can be prepared from the GST workspace starting tomorrow.\",\"image_url\":\"https:\/\/app.dukanam.test\/storage\/broadcast-images\/gst.png\",\"link_url\":\"https:\/\/app.dukanam.test\/gst\",\"audience\":{\"state_codes\":[\"33\"],\"city\":null,\"store_types\":[],\"plan_ids\":[2],\"subscription_statuses\":[\"active\"],\"workspace_status\":\"active\",\"recipients\":\"owners\"},\"audience_summary\":\"Tamil Nadu \u00b7 Growth plan \u00b7 Active \u00b7 Active workspaces \u00b7 Business owners only\",\"businesses_count\":128,\"recipients_count\":96,\"sent_count\":94,\"failed_count\":2,\"status\":\"sent\",\"failure_message\":null,\"created_by\":{\"id\":1,\"name\":\"Platform Admin\"},\"created_at\":\"2026-09-20T09:00:00.000000Z\",\"sent_at\":\"2026-09-20T09:00:12.000000Z\"}],\"links\":{},\"meta\":{\"current_page\":1,\"per_page\":24,\"total\":1}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Preview how many shops and devices a filter set reaches.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/notifications\/audience",
                            "query": [
                                {
                                    "key": "state_codes[0]",
                                    "value": "33",
                                    "description": "GST state codes to target, for example 33 for Tamil Nadu. Omit to reach every state.",
                                    "disabled": false
                                },
                                {
                                    "key": "state_codes[1]",
                                    "value": "29",
                                    "description": "GST state codes to target, for example 33 for Tamil Nadu. Omit to reach every state.",
                                    "disabled": false
                                },
                                {
                                    "key": "city",
                                    "value": "Coimbatore",
                                    "description": "City to target, matched case-insensitively against the workspace address. Must not be greater than 120 characters.",
                                    "disabled": false
                                },
                                {
                                    "key": "store_types[0]",
                                    "value": "pharmacy",
                                    "description": "Store type slugs to target. Omit to reach every store type.",
                                    "disabled": false
                                },
                                {
                                    "key": "plan_ids[0]",
                                    "value": "2",
                                    "description": "Plans whose subscribers should be targeted, matched on each workspace's newest subscription.",
                                    "disabled": false
                                },
                                {
                                    "key": "subscription_statuses[0]",
                                    "value": "active",
                                    "description": "Subscription statuses to target: active, trialing, past_due, paused, ended, or none for workspaces that never subscribed.",
                                    "disabled": false
                                },
                                {
                                    "key": "subscription_statuses[1]",
                                    "value": "trialing",
                                    "description": "Subscription statuses to target: active, trialing, past_due, paused, ended, or none for workspaces that never subscribed.",
                                    "disabled": false
                                },
                                {
                                    "key": "workspace_status",
                                    "value": "any",
                                    "description": "active, suspended or any. Defaults to active.",
                                    "disabled": false
                                },
                                {
                                    "key": "recipients",
                                    "value": "owners",
                                    "description": "owners to reach only the business owner, members to reach every active team member. Defaults to owners.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/notifications\/audience?state_codes%5B0%5D=33&state_codes%5B1%5D=29&city=Coimbatore&store_types%5B0%5D=pharmacy&plan_ids%5B0%5D=2&subscription_statuses%5B0%5D=active&subscription_statuses%5B1%5D=trialing&workspace_status=any&recipients=owners"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Nothing is sent or stored. `reachable` is the number of people with a registered device,\nwhich is what a send would actually push to, and `push_enabled` reports whether Firebase\npush is configured on this deployment at all.\n\nThe list filters are spelled out here because Scribe reduces an `in`-constrained list to a\nsingle value when it reads them off the form request."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"businesses\":128,\"recipients\":141,\"reachable\":96,\"push_enabled\":true,\"audience\":{\"state_codes\":[\"33\"],\"city\":null,\"store_types\":[],\"plan_ids\":[2],\"subscription_statuses\":[\"active\"],\"workspace_status\":\"active\",\"recipients\":\"owners\"},\"audience_summary\":\"Tamil Nadu \u00b7 Growth plan \u00b7 Active \u00b7 Active workspaces \u00b7 Business owners only\"}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected recipients is invalid.\",\"errors\":{\"recipients\":[\"The selected recipients is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Send a broadcast.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/notifications",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/notifications"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "multipart\/form-data"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "formdata",
                            "formdata": [
                                {
                                    "key": "state_codes[0]",
                                    "value": "33",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "state_codes[1]",
                                    "value": "29",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "city",
                                    "value": "Coimbatore",
                                    "type": "text",
                                    "description": "City to target, matched case-insensitively against the workspace address. Must not be greater than 120 characters."
                                },
                                {
                                    "key": "store_types[0]",
                                    "value": "pharmacy",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "plan_ids[0]",
                                    "value": "2",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "subscription_statuses[0]",
                                    "value": "active",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "subscription_statuses[1]",
                                    "value": "trialing",
                                    "type": "text",
                                    "description": ""
                                },
                                {
                                    "key": "workspace_status",
                                    "value": "active",
                                    "type": "text",
                                    "description": "active, suspended or any. Defaults to active."
                                },
                                {
                                    "key": "recipients",
                                    "value": "owners",
                                    "type": "text",
                                    "description": "owners to reach only the business owner, members to reach every active team member. Defaults to owners."
                                },
                                {
                                    "key": "title",
                                    "value": "GST filing window opens tomorrow",
                                    "type": "text",
                                    "description": "Notification title, up to 120 characters. Must not be greater than 120 characters."
                                },
                                {
                                    "key": "body",
                                    "value": "GSTR-3B for this month can be prepared from the GST workspace starting tomorrow.",
                                    "type": "text",
                                    "description": "Notification message, up to 1,000 characters. Must not be greater than 1000 characters."
                                },
                                {
                                    "key": "image_url",
                                    "value": "https:\/\/cdn.example.com\/banners\/gst.png",
                                    "type": "text",
                                    "description": "Optional HTTPS URL of an already-hosted banner. Cannot be combined with image. Must be a valid URL. Must not be greater than 2048 characters."
                                },
                                {
                                    "key": "link_url",
                                    "value": "https:\/\/app.dukanam.test\/gst",
                                    "type": "text",
                                    "description": "Optional URL delivered as data.url for the client to open when the push is tapped. Must be a valid URL. Must not be greater than 2048 characters."
                                },
                                {
                                    "key": "image",
                                    "src": [],
                                    "type": "file"
                                }
                            ]
                        },
                        "description": "The broadcast is recorded and then pushed on the queue, so the response returns with\nstatus `queued` and `recipients_count` already resolved. Send as `multipart\/form-data`\nwhen attaching an image; array filters use `state_codes[]` style keys. A filter set that\nreaches no registered device is rejected with `422` and nothing is pushed."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":9,\"title\":\"GST filing window opens tomorrow\",\"body\":\"GSTR-3B for this month can be prepared from the GST workspace starting tomorrow.\",\"image_url\":\"https:\/\/app.dukanam.test\/storage\/broadcast-images\/gst.png\",\"link_url\":\"https:\/\/app.dukanam.test\/gst\",\"audience\":{\"state_codes\":[\"33\"],\"city\":null,\"store_types\":[],\"plan_ids\":[2],\"subscription_statuses\":[\"active\"],\"workspace_status\":\"active\",\"recipients\":\"owners\"},\"audience_summary\":\"Tamil Nadu \u00b7 Growth plan \u00b7 Active \u00b7 Active workspaces \u00b7 Business owners only\",\"businesses_count\":128,\"recipients_count\":96,\"sent_count\":0,\"failed_count\":0,\"status\":\"queued\",\"failure_message\":null,\"created_by\":{\"id\":1,\"name\":\"Platform Admin\"},\"created_at\":\"2026-09-20T09:00:00.000000Z\",\"sent_at\":null}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"No workspace matching these filters has a registered device.\",\"errors\":{\"recipients\":[\"No workspace matching these filters has a registered device.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Platform business insights",
            "description": "",
            "item": [
                {
                    "name": "Inspect aggregate phone usage.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/businesses\/:business_id\/device-usage",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-09-01",
                                    "description": "Start date, YYYY-MM-DD.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-09-27",
                                    "description": "End date, YYYY-MM-DD.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/businesses\/:business_id\/device-usage?from=2026-09-01&to=2026-09-27",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "Business ID."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"from\":\"2026-01-15\",\"to\":\"2026-01-15\"}"
                        },
                        "description": "Super-admin only, with no-store caching. Dates use Asia\/Kolkata. Defaults to the last\n30 calendar days including today; maximum 366 days. Latest is the all-time latest snapshot;\nsnapshots and event totals are limited to the requested range. No installation IDs or raw reports.\nSource is device only while the latest reported mode is local; otherwise use server records."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"from\":\"2026-09-01\",\"to\":\"2026-09-27\",\"timezone\":\"Asia\/Kolkata\",\"source\":\"device\",\"mode\":\"local\",\"app_version\":\"1.1.1\",\"last_reported_at\":\"2026-09-27T03:44:05.000000Z\",\"latest\":{\"date\":\"2026-09-27\",\"mode\":\"local\",\"totals\":{\"invoices\":5},\"money\":{\"billed_value_paise\":120000},\"reported_at\":\"2026-09-27T03:44:05.000000Z\"},\"snapshots\":[],\"events\":[{\"key\":\"invoice_shared_whatsapp\",\"label\":\"Invoice shared whatsapp\",\"count\":2}],\"milestones\":{\"first_invoice_at\":\"2026-09-27T03:40:00.000000Z\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The to field must be a date after or equal to from.\",\"errors\":{\"to\":[\"The to field must be a date after or equal to from.\"]}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Inspect a business and its daily usage.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/businesses\/:id",
                            "query": [
                                {
                                    "key": "days",
                                    "value": "7",
                                    "description": "Calendar days including today: 7, 30 or 90. Defaults to 30.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/businesses\/:id?days=7",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": 17,
                                    "description": "Business ID to inspect."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Requires a super-admin token; ordinary workspace members cannot access this endpoint.\nDaily usage counts records by creation time in the business timezone, including today\n(partial), with zero-filled dates in ascending order. It does not measure sessions or time spent.\nInvoices include every status. Customer contacts include type customer and both;\nsupplier contacts include type supplier and both, so a contact marked as both is counted in each.\nAdded counts include soft-deleted items, customers and suppliers; current totals exclude them.\nContact classification reflects the contact's current type. Permanently deleted records\ncannot be counted. Last record added is the latest creation across these four categories,\nregardless of the selected period. All timestamps are ISO 8601; calendar dates are YYYY-MM-DD.\n\nOwner insights include mobile activity (active within 30 days, inactive, seen, unknown),\nISO 8601 first\/last seen timestamps, push registration, first observed login, and acquisition.\nInstallation status is always unknown. Mobile activity reflects mobile-scoped API tokens,\nnot proof of a current installation. First observed login starts when tracking is enabled.\nAcquisition source is referral, campaign, referring_site, direct_or_unknown, or unknown."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"business\": {\n            \"id\": 17,\n            \"name\": \"Sampada Stores\",\n            \"legal_name\": \"Sampada Retail LLP\",\n            \"store_type\": \"grocery\",\n            \"is_active\": true,\n            \"email\": \"shop@example.com\",\n            \"phone\": \"+919876543210\",\n            \"owner\": {\n                \"id\": 42,\n                \"name\": \"Kavitha Reddy\",\n                \"email\": \"kavitha@example.com\",\n                \"phone\": null\n            },\n            \"gstin\": null,\n            \"gst_registration_type\": \"unregistered\",\n            \"address\": {\n                \"line_1\": \"14 Market Road\",\n                \"line_2\": \"First floor\",\n                \"city\": \"Pune\",\n                \"state_code\": \"27\",\n                \"state_name\": \"Maharashtra\",\n                \"pincode\": \"411001\"\n            },\n            \"currency\": \"INR\",\n            \"timezone\": \"Asia\/Kolkata\",\n            \"default_locale\": \"en\",\n            \"created_at\": \"2026-09-01T04:30:00.000000Z\"\n        },\n        \"usage\": {\n            \"days\": 7,\n            \"from\": \"2026-09-08\",\n            \"to\": \"2026-09-14\",\n            \"timezone\": \"Asia\/Kolkata\",\n            \"generated_at\": \"2026-09-14T08:00:00.000000Z\",\n            \"totals\": {\n                \"invoices\": 23,\n                \"items\": 12,\n                \"customers\": 31,\n                \"suppliers\": 4\n            },\n            \"added\": {\n                \"invoices\": 3,\n                \"items\": 2,\n                \"customers\": 4,\n                \"suppliers\": 1\n            },\n            \"today\": {\n                \"date\": \"2026-09-14\",\n                \"invoices\": 3,\n                \"items\": 2,\n                \"customers\": 4,\n                \"suppliers\": 1,\n                \"total\": 10\n            },\n            \"active_days\": 1,\n            \"last_record_added_at\": \"2026-09-14T07:00:00.000000Z\",\n            \"daily\": [\n                {\n                    \"date\": \"2026-09-08\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-09\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-10\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-11\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-12\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-13\",\n                    \"invoices\": 0,\n                    \"items\": 0,\n                    \"customers\": 0,\n                    \"suppliers\": 0,\n                    \"total\": 0\n                },\n                {\n                    \"date\": \"2026-09-14\",\n                    \"invoices\": 3,\n                    \"items\": 2,\n                    \"customers\": 4,\n                    \"suppliers\": 1,\n                    \"total\": 10\n                }\n            ]\n        },\n        \"owner_insights\": {\n            \"mobile\": {\n                \"status\": \"unknown\",\n                \"label\": \"No app activity recorded\",\n                \"installation_status\": \"unknown\",\n                \"first_seen_at\": null,\n                \"last_seen_at\": null,\n                \"push_registered\": false\n            },\n            \"first_observed_login\": {\n                \"at\": null,\n                \"method\": null,\n                \"channel\": null\n            },\n            \"acquisition\": {\n                \"source\": \"unknown\"\n            }\n        }\n    }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The selected days is invalid.\",\"errors\":{\"days\":[\"The selected days is invalid.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Platform overview",
            "description": "\nThe numbers behind the admin console's overview, one section per call. Requires a\nsuper-admin token. Money is in paise and excludes GST: plan prices include 18% GST, so\nthe taxable part is price \u00d7 10000 \/ 11800. Days are calendar days in Asia\/Kolkata.\nAn active business had someone use the web app, open the mobile app, or create records\nthat day; request-level tracking started on 27 September 2026 and earlier days are\nreconstructed from created records. Invoices are sales invoices except voided ones.",
            "item": [
                {
                    "name": "Get one overview section.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/admin\/insights\/:section",
                            "query": [
                                {
                                    "key": "from",
                                    "value": "2026-01-15",
                                    "description": "First calendar day, YYYY-MM-DD. Defaults to 29 days before `to`. Ignored by the today section. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                },
                                {
                                    "key": "to",
                                    "value": "2026-01-15",
                                    "description": "Last calendar day, YYYY-MM-DD. Defaults to today. The range may cover at most 366 days. Must be a valid date in the format Y-m-d.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/admin\/insights\/:section?from=2026-01-15&to=2026-01-15",
                            "variable": [
                                {
                                    "id": "section",
                                    "key": "section",
                                    "value": "engagement",
                                    "description": "today, growth, engagement or revenue."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "`today` compares today with yesterday and returns seven-day series (oldest first) for each\nheadline number, invoices per hour (hours still to come are null), active businesses by\nchannel, counts that need attention, and today's milestones. `growth` returns signups,\nactivation (5+ invoices) and signup-to-paid rates against the previous period of equal\nlength, a daily series, the activation funnel for people who signed up in the range, signup\nsources, and weekly retention for up to eight weekly cohorts of new businesses. `engagement`\nreturns active businesses today and over 7 and 30 days ending at `to`, stickiness (average\ndaily actives over the last 7 days \u00f7 30-day actives), a daily series split by channel with\ninvoices and billed value, the spread of businesses by invoice count, feature adoption among\nactive businesses, the top 10 businesses by invoices, and up to 10 businesses quiet for 14+\ndays. `revenue` returns paid MRR and ARR (paying subscriptions only: no trials, no\ncomplimentary plans), money collected in the range and the previous one, GST collected,\ntrial-to-paid conversion for trials that ended in the range, six months of new and churned\nMRR, money collected per day by Razorpay and Apple, the current plan mix and a watch list."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"date\": \"2026-09-26\",\n        \"kpis\": {\n            \"new_signups\": {\n                \"today\": 0,\n                \"yesterday\": 1,\n                \"last_7_days\": [\n                    1,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0\n                ]\n            },\n            \"new_businesses\": {\n                \"today\": 0,\n                \"yesterday\": 1,\n                \"last_7_days\": [\n                    1,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    0\n                ]\n            },\n            \"active_businesses\": {\n                \"today\": 1,\n                \"yesterday\": 2,\n                \"last_7_days\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    2,\n                    1\n                ],\n                \"share_of_businesses\": 33.3,\n                \"total_businesses\": 3,\n                \"web\": 1,\n                \"mobile\": 1\n            },\n            \"invoices_created\": {\n                \"today\": 2,\n                \"yesterday\": 1,\n                \"last_7_days\": [\n                    5,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1,\n                    2\n                ],\n                \"per_active_business\": 2\n            },\n            \"billed_value_paise\": {\n                \"today\": 240000,\n                \"yesterday\": 120000,\n                \"last_7_days\": [\n                    600000,\n                    0,\n                    0,\n                    0,\n                    0,\n                    120000,\n                    240000\n                ],\n                \"average_invoice_paise\": 120000\n            },\n            \"subscription_revenue_paise\": {\n                \"today\": 33814,\n                \"yesterday\": 0,\n                \"last_7_days\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    33814\n                ],\n                \"payments\": 1,\n                \"gross_paise\": 39900\n            },\n            \"new_paying_businesses\": {\n                \"today\": 1,\n                \"yesterday\": 0,\n                \"last_7_days\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    1\n                ],\n                \"paying_businesses\": 1\n            },\n            \"app_link_opens\": {\n                \"today\": 0,\n                \"yesterday\": 0,\n                \"last_7_days\": [\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0,\n                    0\n                ],\n                \"store_redirects\": 0,\n                \"link_previews\": 0\n            }\n        },\n        \"invoices_by_hour\": {\n            \"today\": [\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                2,\n                0,\n                0,\n                0,\n                0,\n                null,\n                null,\n                null,\n                null,\n                null,\n                null,\n                null,\n                null\n            ],\n            \"yesterday\": [\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                1,\n                0,\n                0,\n                0,\n                0,\n                0\n            ]\n        },\n        \"active_by_channel\": {\n            \"mobile_only\": 0,\n            \"web_only\": 0,\n            \"both\": 1,\n            \"records_only\": 0\n        },\n        \"needs_attention\": {\n            \"past_due\": 0,\n            \"trials_ending_7_days\": 1,\n            \"unpaid_checkouts_7_days\": 0,\n            \"new_without_invoice\": 0,\n            \"feedback_pending\": 0,\n            \"testimonials_pending\": 0\n        },\n        \"milestones\": [\n            {\n                \"at\": \"2026-09-26T15:00:00+05:30\",\n                \"type\": \"trial\",\n                \"business\": \"Ravi Hardware\",\n                \"text\": \"started a Smart Books trial\"\n            },\n            {\n                \"at\": \"2026-09-26T09:30:00+05:30\",\n                \"type\": \"payment\",\n                \"business\": \"Kavya Fashions\",\n                \"text\": \"paid for Business \u00b7 \u20b9399 incl. GST\"\n            }\n        ]\n    }\n}\n",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"range\": {\n            \"from\": \"2026-09-20\",\n            \"to\": \"2026-09-26\",\n            \"days\": 7\n        },\n        \"kpis\": {\n            \"active_today\": 1,\n            \"active_7_days\": 2,\n            \"active_30_days\": 3,\n            \"active_businesses_total\": 3,\n            \"stickiness\": 14.3\n        },\n        \"daily\": [\n            {\n                \"date\": \"2026-09-20\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 5,\n                \"billed_value_paise\": 600000\n            },\n            {\n                \"date\": \"2026-09-21\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 0,\n                \"billed_value_paise\": 0\n            },\n            {\n                \"date\": \"2026-09-22\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 0,\n                \"billed_value_paise\": 0\n            },\n            {\n                \"date\": \"2026-09-23\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 0,\n                \"billed_value_paise\": 0\n            },\n            {\n                \"date\": \"2026-09-24\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 0,\n                \"billed_value_paise\": 0\n            },\n            {\n                \"date\": \"2026-09-25\",\n                \"mobile_only\": 1,\n                \"web_only\": 1,\n                \"both\": 0,\n                \"records_only\": 0,\n                \"invoices\": 1,\n                \"billed_value_paise\": 120000\n            },\n            {\n                \"date\": \"2026-09-26\",\n                \"mobile_only\": 0,\n                \"web_only\": 0,\n                \"both\": 1,\n                \"records_only\": 0,\n                \"invoices\": 2,\n                \"billed_value_paise\": 240000\n            }\n        ],\n        \"invoice_distribution\": [\n            {\n                \"label\": \"None\",\n                \"businesses\": 2\n            },\n            {\n                \"label\": \"1\u201310\",\n                \"businesses\": 1\n            },\n            {\n                \"label\": \"11\u201350\",\n                \"businesses\": 0\n            },\n            {\n                \"label\": \"51\u2013200\",\n                \"businesses\": 0\n            },\n            {\n                \"label\": \"200+\",\n                \"businesses\": 0\n            }\n        ],\n        \"feature_adoption\": [\n            {\n                \"key\": \"sales_invoices\",\n                \"label\": \"Sales invoices\",\n                \"businesses\": 1,\n                \"share\": 50\n            },\n            {\n                \"key\": \"pos\",\n                \"label\": \"POS counter\",\n                \"businesses\": 1,\n                \"share\": 50\n            },\n            {\n                \"key\": \"payments\",\n                \"label\": \"Payments received\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"stock\",\n                \"label\": \"Stock tracking\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"purchases\",\n                \"label\": \"Purchase bills\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"expenses\",\n                \"label\": \"Expenses\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"quotes_challans\",\n                \"label\": \"Quotes and challans\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"email\",\n                \"label\": \"Emailed a document\",\n                \"businesses\": 0,\n                \"share\": 0\n            },\n            {\n                \"key\": \"gst\",\n                \"label\": \"GST returns\",\n                \"businesses\": 0,\n                \"share\": 0\n            }\n        ],\n        \"top_businesses\": [\n            {\n                \"id\": 1,\n                \"name\": \"Kavya Fashions\",\n                \"plan\": \"Business\",\n                \"invoices\": 8,\n                \"billed_value_paise\": 960000,\n                \"last_active_on\": \"2026-09-26\",\n                \"last_channel\": \"both\"\n            }\n        ],\n        \"going_quiet\": [\n            {\n                \"id\": 3,\n                \"name\": \"Durga Textiles\",\n                \"last_active_on\": \"2026-09-05\",\n                \"quiet_days\": 21,\n                \"invoices_ever\": 3,\n                \"phone\": \"9848012345\"\n            }\n        ]\n    }\n}\n",
                            "name": "engagement"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\":\"This action is unauthorized.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"Choose a range of at most 366 days.\",\"errors\":{\"from\":[\"Choose a range of at most 366 days.\"]}}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Push testing",
            "description": "\nUnauthenticated bench for firing a push at a single device token, so mobile work can be\nverified without a signed-in user or a scheduled reminder behind it.\n\nEnabled by default in all environments, including production, for temporary testing.\nSet `FIREBASE_TEST_ENDPOINT_ENABLED=false` to disable after testing. This endpoint is public.",
            "item": [
                {
                    "name": "POST api\/v1\/fcm-test",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/fcm-test",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/fcm-test"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"fcm_token\":\"eY2x9_example_fcm_registration_token\",\"title\":\"Stock alert\",\"body\":\"Rice is running low.\",\"data\":{\"type\":\"low_stock\",\"item_id\":\"7\"}}"
                        },
                        "description": "",
                        "auth": {
                            "type": "noauth"
                        }
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"sent\":true,\"token\":\"eY2x9_e\u2026n_token\",\"title\":\"Stock alert\",\"body\":\"Rice is running low.\",\"data\":{\"type\":\"low_stock\",\"item_id\":\"7\"}}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The data payload must be a flat object.\",\"errors\":{\"data\":[\"The data payload must be a flat object.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 503,
                            "body": "{\"message\":\"Firebase push is disabled. Set FIREBASE_PUSH_ENABLED=true and provide a readable service-account credentials file.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Referrers and referral commissions",
            "description": "\nReferrers recommend the shop and bring customers; link them to sales to track performance and commissions.\nThe UI calls these people Referrers. Existing \/workers URLs and worker_* request\/response keys are retained for compatibility.\n\nAdvanced Plan feature `referral_workers`. Owners\/administrators manage referrers, assign\ncommissions and make payments. Accountants can read profiles and statements. All amounts\nare integer paise; percentage rates use basis points (1000 means 10%). Commission is earned\non a saved invoice's discounted, tax-exclusive value. Customer dues remain separate.",
            "item": [
                {
                    "name": "Read the invoice's current referrers.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice\/workers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice\/workers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice",
                                    "key": "invoice",
                                    "value": 1,
                                    "description": "The invoice."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Finance-only assignments are separate from customer-facing invoice payloads.\nCommission amounts are original earnings before return adjustments; use the referrer\nstatement for debit notes and current balances. Voided invoices have no active awards."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List referrers.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers",
                            "query": [
                                {
                                    "key": "q",
                                    "value": "carpenter",
                                    "description": "Search name, trade or phone.",
                                    "disabled": false
                                },
                                {
                                    "key": "status",
                                    "value": "active",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "worker_type",
                                    "value": "referral",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers?q=carpenter&status=active&worker_type=referral&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"q\":\"b\",\"status\":\"active\",\"worker_type\":\"architecto\",\"per_page\":2}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":[],\"current_page\":1,\"per_page\":20,\"total\":0}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Referrer profile and commission statement.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker",
                            "query": [
                                {
                                    "key": "period",
                                    "value": "this-financial-year",
                                    "description": "",
                                    "disabled": false
                                },
                                {
                                    "key": "from",
                                    "value": "",
                                    "description": "Custom period start, Y-m-d; both dates required.",
                                    "disabled": true
                                },
                                {
                                    "key": "to",
                                    "value": "",
                                    "description": "Inclusive custom end, Y-m-d.",
                                    "disabled": true
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Statement page.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "20",
                                    "description": "From 1 to 100.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker?period=this-financial-year&from=&to=&page=1&per_page=20",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"per_page\":2,\"page\":22}"
                        },
                        "description": "Earnings are independent of collection. The statement retains every payout, debit note\nand compensating correction. A negative balance is recoverable from the referrer. Referred\ninvoice dues and the referrer's own customer-account dues are separate current balances.\n\nFull bank account numbers are returned only here for owners and administrators; fetch fresh and do not cache offline.\nAadhaar and PAN remain masked. The response is served with Cache-Control: no-store, private."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "View the referrer's private photo.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/photo",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/photo",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Production photos use private S3; legacy photos use their recorded disk.\nThis authenticated route never exposes an object key or public bucket URL.\n\nReturns an authenticated private image, never a public storage URL."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "camera=(), microphone=(), geolocation=()"
                                },
                                {
                                    "key": "cross-origin-opener-policy",
                                    "value": "same-origin"
                                },
                                {
                                    "key": "x-robots-tag",
                                    "value": "noindex, nofollow"
                                },
                                {
                                    "key": "strict-transport-security",
                                    "value": "max-age=31536000; includeSubDomains"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not Found\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Add a referrer.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Ravi\",\"worker_type\":\"carpenter\",\"trade\":\"Carpenter\",\"phone\":\"9876543210\",\"email\":\"ravi@example.com\",\"pan_number\":\"ABCDE1234F\",\"clear_pan\":false,\"bank_account\":{\"bank_name\":\"Example Bank\",\"account_holder\":\"Ravi Kumar\",\"account_number\":\"001234567890\",\"ifsc\":\"HDFC0000123\",\"branch\":\"Hyderabad\"},\"clear_bank_account\":false,\"commission_rate_basis_points\":1000,\"remove_photo\":false}"
                        },
                        "description": "Aadhaar is optional, encrypted at rest, and returned only as its masked last four digits.\nPAN and bank details are encrypted, excluded from audit metadata and raw model serialization.\nLists and write responses mask bank numbers; only the owner\/administrator detail response includes the full number.\nPhotos are private and require the same workspace, plan and role checks as a profile."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\"data\":{\"id\":1,\"name\":\"Ravi\",\"worker_type\":\"carpenter\",\"worker_type_label\":\"Carpenter\",\"commission_rate_basis_points\":1000,\"is_active\":true,\"balance_paise\":0,\"commission_due_paise\":0,\"recoverable_paise\":0,\"aadhaar_masked\":null,\"pan_masked\":null,\"bank_account\":null}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Update or archive a referrer.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Ravi\",\"worker_type\":\"carpenter\",\"trade\":\"Carpenter\",\"phone\":\"9876543210\",\"email\":\"ravi@example.com\",\"pan_number\":\"ABCDE1234F\",\"clear_pan\":false,\"bank_account\":{\"bank_name\":\"Example Bank\",\"account_holder\":\"Ravi Kumar\",\"account_number\":\"001234567890\",\"ifsc\":\"HDFC0000123\",\"branch\":\"Hyderabad\"},\"clear_bank_account\":false,\"clear_aadhaar\":false,\"commission_rate_basis_points\":1000,\"is_active\":true,\"remove_photo\":false}"
                        },
                        "description": "Archiving preserves financial history and prevents new assignments. Changing a default\npercentage affects future assignments only. Leave Aadhaar blank to retain it; pass\n`clear_aadhaar=true` to remove it. Existing payouts and invoice rates are retained."
                    },
                    "response": []
                },
                {
                    "name": "Pay earned commission.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/payouts",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/payouts",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"amount_paise\":30000,\"occurred_on\":\"2026-10-04\",\"payment_method\":\"bank\",\"idempotency_key\":\"e0e7b8fb-96bb-44bd-95f8-aad1eb6cf473\"}"
                        },
                        "description": "Partial\/full payment is the owner's decision, independent of customer receipts. Paying\nreduces commission payable and the selected cash\/bank account, without adding another\nexpense. Cash requires an open register. Overpayments are rejected; retries require the\nsame UUID and identical amount\/date\/method\/account\/reference, otherwise 422."
                    },
                    "response": []
                },
                {
                    "name": "Void a referrer payout.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/workers\/:worker\/payouts\/:entry\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/workers\/:worker\/payouts\/:entry\/void",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "worker",
                                    "key": "worker",
                                    "value": "architecto",
                                    "description": "The worker."
                                },
                                {
                                    "id": "entry",
                                    "key": "entry",
                                    "value": "architecto",
                                    "description": ""
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"reason\":\"Incorrect bank transfer\"}"
                        },
                        "description": "Adds a current-date compensating event and reverses the cash\/bank posting. Original\nearning, payout and return records remain. Repeated void requests do not duplicate it."
                    },
                    "response": []
                },
                {
                    "name": "Assign the invoice referrer and earn commission.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice\/worker",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice\/worker",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice",
                                    "key": "invoice",
                                    "value": 1,
                                    "description": "The invoice."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"attribution_basis_points\":10000,\"worker_id\":1,\"rate_basis_points\":1000}"
                        },
                        "description": "Assignment is idempotent for an unchanged referrer\/rate\/invoice. Overrides require an\nowner or administrator. Reassignment appends financial corrections on the original dates;\nprior payouts remain in the previous referrer's account. Existing returns receive debit\nnotes using cumulative rounding. Customer invoice print\/shared payloads omit commissions."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\"data\":{\"id\":1,\"worker_id\":1,\"invoice_id\":1,\"rate_basis_points\":1000,\"basis_paise\":300000,\"earned_paise\":30000,\"earned_on\":\"2026-01-10\"}}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Set all invoice referrers and commission rules.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business\/invoices\/:invoice\/workers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business\/invoices\/:invoice\/workers",
                            "variable": [
                                {
                                    "id": "business",
                                    "key": "business",
                                    "value": 1,
                                    "description": "The business."
                                },
                                {
                                    "id": "invoice",
                                    "key": "invoice",
                                    "value": 1,
                                    "description": "The invoice."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"workers\":[{\"worker_id\":1,\"commission_kind\":\"percentage\",\"rate_basis_points\":1000,\"attribution_basis_points\":6000},{\"worker_id\":2,\"commission_kind\":\"fixed\",\"fixed_amount_paise\":20000,\"attribution_basis_points\":4000}]}"
                        },
                        "description": "Replaces the complete assignment set atomically (maximum 10, no duplicate referrers).\nEvery performance share is required and shares must total 10000 (100%). Shares allocate\nsales, goods cost and shared invoice expenses exactly once; each commission is calculated\nindependently. An empty array removes all assignments through compensating corrections.\nFixed commissions reduce proportionally on returns, with cumulative paise rounding.\nChanging assignment rules keeps every previous earning, debit note and payout in history."
                    },
                    "response": []
                }
            ]
        },
        {
            "name": "Usage reports",
            "description": "",
            "item": [
                {
                    "name": "Report aggregate phone usage.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/v1\/businesses\/:business_id\/usage-report",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/v1\/businesses\/:business_id\/usage-report",
                            "variable": [
                                {
                                    "id": "business_id",
                                    "key": "business_id",
                                    "value": 1,
                                    "description": "Business ID."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"report_id\":\"9b2f6c1e-4a7d-4f0e-9a51-3d2c8e7b6a10\",\"installation_id\":\"5d8a1f3c-7e20-4b6a-8c11-0f9e2d4b7a33\",\"reported_at\":\"2026-09-27T09:14:05+05:30\",\"period_start\":\"2026-09-26T08:02:11+05:30\",\"mode\":\"local\",\"app\":{\"version\":\"1.1.1\",\"build\":20,\"platform\":\"android\",\"os_version\":\"g\",\"locale\":\"en_MT\",\"theme\":\"m\"},\"totals\":{\"invoices\":5,\"customers\":2},\"money\":{\"billed_value_paise\":120000},\"milestones\":{\"first_invoice_at\":\"2026-09-27T09:10:00+05:30\",\"last_invoice_at\":\"2026-01-15\",\"first_payment_at\":\"2026-01-15\",\"last_payment_at\":\"2026-01-15\",\"first_record_at\":\"2026-01-15\",\"last_record_at\":\"2026-01-15\",\"onboarding_completed_at\":\"2026-01-15\",\"first_share_at\":\"2026-01-15\"},\"events\":{\"invoice_created\":5,\"invoice_shared_whatsapp\":2}}"
                        },
                        "description": "Available to every active member, including free workspaces with unfinished onboarding.\nMaximum 64 KB and 30 requests per hour per user, independent of the general API limit.\nReusing a report_id returns 204 without applying event deltas again (90-day deduplication window).\nUnknown numeric metrics are retained; unknown text fields are discarded, never stored.\nMetric keys must be snake_case, at most 64 characters. Counts must be JSON integers,\nnot numeric strings. Server dates use Asia\/Kolkata; phone timestamps are metadata.\nTotals replace the day's snapshot; events accumulate. Competing local installs keep the\nhigher invoice count (ties retain the existing snapshot). Server mode may omit totals\/money."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\":\"Not found.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 413,
                            "body": "{\"message\":\"Usage reports must not exceed 64 KB.\"}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\"message\":\"The report id field is required.\",\"errors\":{\"report_id\":[\"The report id field is required.\"]}}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\"message\":\"Too Many Attempts.\"}",
                            "name": ""
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "Authorization",
                "type": "string"
            }
        ]
    }
}