{
    "variable": [
        {
            "id": "baseUrl",
            "key": "baseUrl",
            "type": "string",
            "name": "string",
            "value": "{{ config(\"app.url\") }}"
        }
    ],
    "info": {
        "name": "Pixalink",
        "_postman_id": "557cc4f2-5a06-46ce-92d5-bbef745af818",
        "description": "",
        "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json"
    },
    "item": [
        {
            "name": "Categories",
            "description": "\nCategories provide a hierarchical classification system for organising spaces within the platform. <br>\nThe system uses a two-level structure where main categories (e.g., Food & Beverage, Retail)\ncontain subcategories (e.g., Restaurant, Cafe, Hotel) that spaces can be assigned to. <br>\nThis helps in filtering and discovering spaces based on their business type or industry.",
            "item": [
                {
                    "name": "List categories",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/categories",
                            "query": [
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number for pagination.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of items per page.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "parent",
                                    "description": "Comma-separated list of relations to include. Allowed values:\n* parent",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Field to sort by. Prefix with - for descending order. Allowed values:\n* name\n* created_at\n* updated_at",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Restaurant",
                                    "description": "Filter by name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bparent_id%5D",
                                    "value": "1",
                                    "description": "Filter by parent ID. If set to null or 0, returns main categories.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bid%5D",
                                    "value": "1",
                                    "description": "Filter by ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bslug%5D",
                                    "value": "restaurant",
                                    "description": "Filter by exact slug match.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/categories?page=1&per_page=15&include=parent&sort=-created_at&filter%5Bname%5D=Restaurant&filter%5Bparent_id%5D=1&filter%5Bid%5D=1&filter%5Bslug%5D=restaurant"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of categories. By default, only returns second level categories\n(categories that have a parent)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n     \"data\": [\n         {\n             \"id\": 5,\n             \"name\": \"Restaurant\",\n             \"parent_id\": 1\n         },\n         {\n             \"id\": 6,\n             \"name\": \"Cafe\",\n             \"parent_id\": 1\n         },\n         {\n             \"id\": 7,\n             \"name\": \"Hotel\",\n             \"parent_id\": 2\n         }\n     ],\n     \"links\": {\n         \"first\": \"@{{$baseUrl}}\/api\/categories?page=1\",\n         \"last\": \"@{{$baseUrl}}\/api\/categories?page=1\",\n         \"prev\": null,\n         \"next\": null\n     },\n     \"meta\": {\n         \"current_page\": 1,\n         \"from\": 1,\n         \"last_page\": 1,\n         \"path\": \"@{{$baseUrl}}\/api\/categories\",\n         \"per_page\": 15,\n         \"to\": 3,\n         \"total\": 3\n     }\n }",
                            "name": "Default (Second Level Categories)"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n     \"data\": [\n         {\n             \"id\": 5,\n             \"name\": \"Restaurant\",\n             \"parent_id\": 1,\n             \"parent\": {\n                 \"id\": 1,\n                 \"name\": \"Food & Beverage\"\n             }\n         },\n         {\n             \"id\": 6,\n             \"name\": \"Cafe\",\n             \"parent_id\": 1,\n             \"parent\": {\n                 \"id\": 1,\n                 \"name\": \"Food & Beverage\"\n             }\n         }\n     ],\n     \"links\": {\n         \"first\": \"@{{$baseUrl}}\/api\/categories?include=parent&page=1\",\n         \"last\": \"@{{$baseUrl}}\/api\/categories?include=parent&page=1\",\n         \"prev\": null,\n         \"next\": null\n     },\n     \"meta\": {\n         \"current_page\": 1,\n         \"from\": 1,\n         \"last_page\": 1,\n         \"path\": \"@{{$baseUrl}}\/api\/categories\",\n         \"per_page\": 15,\n         \"to\": 2,\n         \"total\": 2\n     }\n }",
                            "name": "With Parent Included"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Credits",
            "description": "",
            "item": [
                {
                    "name": "List Credits",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/credits",
                            "query": [
                                {
                                    "key": "filter%5Bcustomer_id%5D",
                                    "value": "1",
                                    "description": "Filter by customer ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Btype%5D",
                                    "value": "Top+Up",
                                    "description": "Filter by credit type.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bamount%5D",
                                    "value": "%3E100",
                                    "description": "Filter by amount with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field (created_at, amount).",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "customer",
                                    "description": "Include relationships (customer, space, reward).",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/credits?filter%5Bcustomer_id%5D=1&filter%5Btype%5D=Top+Up&filter%5Bspace_id%5D=1&filter%5Bamount%5D=%3E100&sort=-created_at&include=customer&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a paginated list of credits for the organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"customer_id\": 42,\n      \"space_id\": 1,\n      \"amount\": \"50.00\",\n      \"operation\": \"+\",\n      \"type\": \"Top Up\",\n      \"remarks\": \"Birthday top-up\",\n      \"created_at\": \"2025-05-06T14:30:01.000000Z\",\n      \"updated_at\": \"2025-05-06T14:30:01.000000Z\"\n    }\n  ],\n  \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n  \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{ \"message\": \"Unauthenticated.\" }",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "Missing scope"
                        }
                    ]
                },
                {
                    "name": "Create Credit",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/credits",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/credits"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":42,\"phone_number\":\"+60123456789\",\"amount\":\"50.00\",\"type\":\"Top Up\",\"space_id\":1,\"remarks\":\"Birthday top-up\",\"custom_properties\":[],\"source_credit_id\":10}"
                        },
                        "description": "Creates a new credit entry for a customer (top up, deduct, revert, etc.)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"customer_id\": 42,\n    \"space_id\": 1,\n    \"amount\": \"50.00\",\n    \"operation\": \"+\",\n    \"type\": \"Top Up\",\n    \"remarks\": \"Birthday top-up\",\n    \"created_at\": \"2025-05-06T14:30:01.000000Z\",\n    \"updated_at\": \"2025-05-06T14:30:01.000000Z\"\n  }\n}",
                            "name": "Top Up created"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "Missing scope"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"type\": [\"The selected type is invalid.\"],\n    \"amount\": [\"The amount field is required.\"]\n  }\n}",
                            "name": "Validation failed"
                        }
                    ]
                },
                {
                    "name": "Get Credit Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/credits\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "customer",
                                    "description": "Relationships to include (customer, space, reward).",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/credits\/:id?include=customer",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "3",
                                    "description": "The ID of the credit."
                                },
                                {
                                    "id": "credit",
                                    "key": "credit",
                                    "value": "1",
                                    "description": "The ID of the credit."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieve detailed information about a specific credit."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"customer_id\": 42,\n    \"space_id\": 1,\n    \"amount\": \"50.00\",\n    \"operation\": \"+\",\n    \"type\": \"Top Up\",\n    \"remarks\": \"Birthday top-up\",\n    \"created_at\": \"2025-05-06T14:30:01.000000Z\",\n    \"updated_at\": \"2025-05-06T14:30:01.000000Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "Missing scope"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{ \"message\": \"Record not found.\" }",
                            "name": "Not found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Customer Paid Memberships",
            "description": "",
            "item": [
                {
                    "name": "List Customer Paid Memberships",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_paid_memberships",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "paidMembershipType%2Ccustomer",
                                    "description": "Comma-separated relationships to include. Available: `customer`, `paidMembershipType`, `transactions`, `payments`, `activePayment`. Use `payments` to retrieve all payment records for reconciliation, or `activePayment` to retrieve only the currently linked payment.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcustomer_id%5D",
                                    "value": "1",
                                    "description": "Filter by customer ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bpaid_membership_type_id%5D",
                                    "value": "1",
                                    "description": "Filter by membership type ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bis_active%5D",
                                    "value": "1",
                                    "description": "Filter by active flag.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bbilling_cycle%5D",
                                    "value": "yearly",
                                    "description": "Filter by billing cycle (`monthly` or `yearly`).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bexpires_at%5D",
                                    "value": "%3E2025-04-01",
                                    "description": "Filter by expiry date using comparison operators (`>`, `",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-expires_at",
                                    "description": "Sort field and direction. Prefix with `-` for descending. Available: `created_at`, `starts_at`, `expires_at`. Defaults to `-created_at`.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page. Defaults to 15.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customer_paid_memberships?include=paidMembershipType%2Ccustomer&filter%5Bcustomer_id%5D=1&filter%5Bpaid_membership_type_id%5D=1&filter%5Bis_active%5D=1&filter%5Bbilling_cycle%5D=yearly&filter%5Bexpires_at%5D=%3E2025-04-01&sort=-expires_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of customer paid membership instances. Records are scoped to the\nauthenticated user's organisation via the model's global scope."
                    },
                    "response": [
                        {
                            "header": [
                                {
                                    "key": "cache-control",
                                    "value": "no-cache, private"
                                },
                                {
                                    "key": "content-type",
                                    "value": "application\/json"
                                },
                                {
                                    "key": "content-security-policy",
                                    "value": "default-src 'self'; script-src https: 'self' 'unsafe-inline' 'unsafe-eval' blob: http:\/\/localhost:5173; style-src https: 'self' 'unsafe-inline' http:\/\/localhost:5173; font-src https: 'self' data:; img-src https: 'self' data: blob:; media-src https: 'self' blob:; connect-src https: wss: 'self' ws:\/\/localhost:5173; frame-src https: 'self' phpstorm:; worker-src 'self' blob:; frame-ancestors 'self'; base-uri 'self'; upgrade-insecure-requests; form-action 'self'"
                                },
                                {
                                    "key": "referrer-policy",
                                    "value": "strict-origin-when-cross-origin"
                                },
                                {
                                    "key": "permissions-policy",
                                    "value": "geolocation=(), microphone=(), camera=(self), payment=(self), usb=(), magnetometer=(), gyroscope=(), accelerometer=(), autoplay=(), encrypted-media=(), fullscreen=*, picture-in-picture=()"
                                },
                                {
                                    "key": "x-content-type-options",
                                    "value": "nosniff"
                                },
                                {
                                    "key": "x-frame-options",
                                    "value": "DENY"
                                },
                                {
                                    "key": "access-control-allow-origin",
                                    "value": "*"
                                }
                            ],
                            "code": 401,
                            "body": "{\"message\":\"Unauthenticated.\"}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Assign a Paid Membership",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_paid_memberships",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_paid_memberships"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":1,\"paid_membership_type_id\":1,\"billing_cycle\":\"monthly\",\"starts_at\":\"2025-04-01\",\"remarks\":\"Manually assigned by support after refund.\",\"payment\":{\"method\":\"cash\",\"amount\":99,\"currency\":\"MYR\",\"reference_id\":\"POS-12345\",\"remarks\":\"Paid at counter\"}}"
                        },
                        "description": "Assigns a paid membership of the given type and billing cycle to a customer. Any existing\nactive membership for that customer is automatically deactivated. Delegates lifecycle logic\nto `PaidMembershipService::assignMembership`, which records a `ManualAssign` transaction and\nissues any rewards configured on the membership type.\n\nIf the integrator has already collected payment in their own system, an optional `payment`\nobject may be supplied. When present, a `Payment` row is recorded against the membership\nand a `ManualPayment` transaction is logged. The accepted `payment.method` values (`cash`,\n`card`, `e_wallet`) are deliberately limited to manually-recorded instruments \u2014 gateway\nmethods are not accepted via this endpoint. Omit `payment` entirely for free\/comp\nassignments."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"membership_status\": \"active\",\n    \"membership_type_name\": \"VIP Gold\",\n    \"billing_cycle\": \"monthly\",\n    \"starts_at\": \"2025-04-01\",\n    \"expires_at\": \"2025-05-01\",\n    \"is_active\": true\n  },\n  \"message\": \"Paid membership assigned successfully\"\n}",
                            "name": "Created"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"billing_cycle\": [\"The selected billing cycle is not available for this membership type.\"]\n  }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Show Customer Paid Membership",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_paid_memberships\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "payments",
                                    "description": "Comma-separated relationships to include. Available: `customer`, `paidMembershipType`, `transactions`, `payments`, `activePayment`. Use `payments` to retrieve all payment records for reconciliation, or `activePayment` to retrieve only the currently linked payment.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customer_paid_memberships\/:id?include=payments",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer paid membership."
                                },
                                {
                                    "id": "customer_paid_membership",
                                    "key": "customer_paid_membership",
                                    "value": "1",
                                    "description": "The ID of the membership instance."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves a single customer paid membership by ID. Cross-organisation access returns 404."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"membership_status\": \"active\",\n    \"membership_type_name\": \"VIP Gold\",\n    \"billing_cycle\": \"monthly\",\n    \"starts_at\": \"2025-04-01\",\n    \"expires_at\": \"2025-05-01\",\n    \"auto_renew\": false,\n    \"is_active\": true\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Customer Paid Membership",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_paid_memberships\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_paid_memberships\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer paid membership."
                                },
                                {
                                    "id": "customer_paid_membership",
                                    "key": "customer_paid_membership",
                                    "value": "1",
                                    "description": "The ID of the membership to update."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"extend_days\":14,\"remarks\":\"Goodwill extension after service outage.\",\"auto_renew\":true}"
                        },
                        "description": "Either extends the membership (via `extend_days` + `remarks`) or toggles `auto_renew`.\nThe two operations are mutually exclusive \u2014 sending both at once returns a 422.\n\nExtending delegates to `PaidMembershipService::extendMembership`, which records a\n`ManualExtend` transaction and sends the customer the configured notification."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"membership_status\": \"active\",\n    \"membership_type_name\": \"VIP Gold\",\n    \"billing_cycle\": \"monthly\",\n    \"starts_at\": \"2025-04-01\",\n    \"expires_at\": \"2025-05-15\",\n    \"auto_renew\": true,\n    \"is_active\": true\n  },\n  \"message\": \"Paid membership updated successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"extend_days\": [\"The extend days field prohibits auto_renew from being present.\"]\n  }\n}",
                            "name": "Mutually Exclusive Fields"
                        }
                    ]
                },
                {
                    "name": "Cancel Customer Paid Membership",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_paid_memberships\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_paid_memberships\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer paid membership."
                                },
                                {
                                    "id": "customer_paid_membership",
                                    "key": "customer_paid_membership",
                                    "value": "1",
                                    "description": "The ID of the membership to cancel."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Cancels (deactivates) the customer's paid membership. Sets `is_active` to `false` and\nrecords a `Cancelled` transaction for the audit trail. The row is not hard-deleted \u2014\nhistorical lookups remain intact."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "",
                            "name": "Cancelled"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Customer Rewards",
            "description": "\nAPIs for managing customer rewards",
            "item": [
                {
                    "name": "List Customer Rewards",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "customer%2Creward%2CvalidatedAtSpace%2CvalidatedByUser",
                                    "description": "Comma-separated list of relationships to include:\n- customer\n- reward\n- validatedAtSpace\n- validatedByUser",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "Pending",
                                    "description": "Filter by reward status (Pending, Used, Expired).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcode%5D",
                                    "value": "ABC123",
                                    "description": "Filter by exact reward code match.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bexpired_at%5D",
                                    "value": "%3E2024-01-01",
                                    "description": "Filter by expiry date with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bused_at%5D",
                                    "value": "%3C2024-12-31",
                                    "description": "Filter by redemption date with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcustomer_id%5D",
                                    "value": "1",
                                    "description": "Filter by customer ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Breward_id%5D",
                                    "value": "1",
                                    "description": "Filter by reward ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bvalidated_at_space_id%5D",
                                    "value": "1",
                                    "description": "Filter by validation space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bvalidated_by_user_id%5D",
                                    "value": "1",
                                    "description": "Filter by validator user ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field and direction. Allowed fields: expired_at, used_at, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customer_rewards?include=customer%2Creward%2CvalidatedAtSpace%2CvalidatedByUser&filter%5Bstatus%5D=Pending&filter%5Bcode%5D=ABC123&filter%5Bexpired_at%5D=%3E2024-01-01&filter%5Bused_at%5D=%3C2024-12-31&filter%5Bcustomer_id%5D=1&filter%5Breward_id%5D=1&filter%5Bvalidated_at_space_id%5D=1&filter%5Bvalidated_by_user_id%5D=1&sort=-created_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of customer rewards belonging to the authenticated user's organisation.\nResults can be filtered, sorted and include related data through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n   \"data\":[\n     {\n        \"id\": 1,\n        \"customer_id\": 1,\n        \"reward_id\": 1,\n        \"status\": \"Pending\",\n        \"code\": \"REWARD123\",\n        \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n        \"used_at\": null,\n        \"created_at\": \"2024-02-11T00:00:00.000000Z\",\n        \"updated_at\": \"2024-02-11T00:00:00.000000Z\",\n        \"customer\" : {\n           \"id\": 1,\n           \"name\": \"John Smith\",\n           \"email\": \"john.smith@example.com\",\n           \"phone_number\": \"+60123456789\",\n           \"gender\": 1,\n           \"date_of_birth\": \"1990-05-15\",\n           \"source\": \"WhatsApp\",\n           \"status\": \"Converted\",\n           \"current_point\": 2500,\n           \"created_at\": \"2024-01-15T08:30:00.000000Z\",\n           \"updated_at\": \"2024-02-01T14:22:33.000000Z\",\n           \"notes\": \"Prefers to be contacted via WhatsApp\",\n           \"is_manually_assign_tier\": 0,\n           \"current_credits\": 150,\n           \"birthday_month\": 5,\n           \"tags\": [\"VIP\", \"Regular Customer\"],\n           \"space_id\": 1,\n           \"tier_id\": 1,\n           \"organisation_id\": 1,\n         }\n       },\n     ],\n    \"links\": {\n      \"first\": \"@{{$baseUrl}}\/customer_rewards?page=1\",\n      \"last\": \"@{{$baseUrl}}\/customer_rewards?page=5\",\n      \"prev\": null,\n      \"next\": \"@{{$baseUrl}}\/customer_rewards?page=2\"\n    },\n    \"meta\": {\n      \"current_page\": 1,\n      \"from\": 1,\n      \"last_page\": 5,\n      \"links\": [\n        {\n          \"url\": null,\n          \"label\": \"&laquo; Previous\",\n          \"active\": false\n        },\n        {\n          \"url\": \"@{{$baseUrl}}\/customer_rewards?page=1\",\n          \"label\": \"1\",\n          \"active\": true\n        },\n        {\n          \"url\": \"@{{$baseUrl}}\/customer_rewards?page=2\",\n          \"label\": \"2\",\n          \"active\": false\n        },\n        {\n          \"url\": \"@{{$baseUrl}}\/customer_rewards?page=3\",\n          \"label\": \"3\",\n          \"active\": false\n        },\n        {\n          \"url\": \"@{{$baseUrl}}\/customer_rewards?page=2\",\n          \"label\": \"Next &raquo;\",\n          \"active\": false\n        }\n      ],\n      \"path\": \"@{{$baseUrl}}\/customer_rewards\",\n      \"per_page\": 15,\n      \"to\": 15,\n      \"total\": 68\n    }\n  }",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Customer Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_rewards"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":1,\"reward_id\":1,\"mark_as_redeemed\":false,\"currency_type\":\"point\",\"validated_at_space_id\":1,\"validated_by_user_id\":1}"
                        },
                        "description": "Assigns a reward to a customer and processes the point redemption. This endpoint performs several validation checks:\n\n1. Verifies that the customer has sufficient points for the reward\n2. Checks if the reward has reached its total availability limit (if configured)\n3. For one-time rewards, ensures the customer hasn't already redeemed it\n4. Validates that both customer and reward belong to the authenticated organisation\n\nUpon successful validation, the system will:\n- Deduct points from the customer's balance\n- Create a customer reward record\n- Generate a unique redemption code\n- If mark_as_redeemed is true, immediately mark the reward as used\n\nNote: The reward's points cost is determined by its configured amount. Ensure the customer\nhas sufficient points before making this request to avoid validation errors."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n   \"data\": {\n       \"id\": 1,\n       \"customer_id\": 1,\n       \"reward_id\": 1,\n       \"status\": \"Pending\",\n       \"code\": \"REWARD123\",\n       \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n       \"used_at\": null,\n       \"created_at\": \"2024-02-11T00:00:00.000000Z\",\n       \"updated_at\": \"2024-02-11T00:00:00.000000Z\"\n   },\n   \"message\": \"Customer reward created successfully\"\n}",
                            "name": "Created successfully"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"reward_id\": [\n            \"This reward cannot be redeemed as it has reached its maximum redemption limit.\"\n        ]\n    }\n}",
                            "name": "Total availability exceeded"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"reward_id\": [\n            \"This reward has already been used\/redeemed. (Single redemption reward cannot be redeemed twice)\"\n        ]\n    }\n}",
                            "name": "One-time reward already redeemed"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"reward_id\": [\n            \"Customer does not have enough point to redeem\"\n        ]\n    }\n}",
                            "name": "Insufficient points"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"customer_id\": [\n            \"The selected customer id is invalid.\"\n        ],\n        \"reward_id\": [\n            \"The selected reward id is invalid.\"\n        ]\n    }\n}",
                            "name": "Invalid customer or reward ID"
                        }
                    ]
                },
                {
                    "name": "Get Customer Reward Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "customer%2Creward%2CvalidatedAtSpace%2CvalidatedByUser",
                                    "description": "Comma-separated list of relationships to include (customer, reward, validatedAtSpace, validatedByUser).",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customer_rewards\/:id?include=customer%2Creward%2CvalidatedAtSpace%2CvalidatedByUser",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer reward."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific customer reward."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"customer_id\": 1,\n        \"reward_id\": 1,\n        \"status\": \"Pending\",\n        \"code\": \"REWARD123\",\n        \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n        \"used_at\": null,\n        \"created_at\": \"2024-02-11T00:00:00.000000Z\",\n        \"updated_at\": \"2024-02-11T00:00:00.000000Z\"\n    }\n }",
                            "name": "Success"
                        }
                    ]
                },
                {
                    "name": "Update Customer Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_rewards\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer reward."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"status\":\"Used\",\"expired_at\":\"2024-12-31T23:59:59Z\",\"used_at\":\"2024-02-10T15:30:00Z\",\"validated_at_space_id\":1,\"validated_by_user_id\":1}"
                        },
                        "description": "Updates a customer reward's details.  <br>\nCan update status, expiry date, and usage date. <br>\nCannot modify rewards that are Expired or Used for more than 1 hour. <br>\nUsed rewards can be updated within 1 hour of being marked as used."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"status\": \"Used\",\n        \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n        \"used_at\": \"2024-02-11T00:00:00.000000Z\",\n        \"updated_at\": \"2024-02-11T00:00:00.000000Z\"\n    },\n    \"message\": \"Customer reward updated successfully\"\n}",
                            "name": "Success - Status Update"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"status\": \"Pending\",\n        \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n        \"used_at\": null,\n        \"updated_at\": \"2024-02-11T00:00:00.000000Z\"\n    },\n    \"message\": \"Customer reward updated successfully\"\n}",
                            "name": "Success - Update Expiry"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The selected status is invalid.\",\n   \"errors\": {\n       \"status\": [\n           \"The selected status is invalid.\"\n       ]\n   }\n}",
                            "name": "Invalid Status Value"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"Cannot update expired rewards or rewards used more than 1 hour ago\",\n   \"errors\": {\n       \"status\": [\n           \"Cannot update expired rewards or rewards used more than 1 hour ago.\"\n       ]\n   }\n}",
                            "name": "Invalid Status Change"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"used_at\": [\n           \"used_at can only be set when status is Used.\"\n       ]\n   }\n}",
                            "name": "Invalid Used At Without Status"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"used_at\": [\n           \"The used at must be a date before or equal to now.\"\n       ]\n   }\n}",
                            "name": "Future Used At Date"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"expired_at\": [\n           \"The expired at must be a date after now.\"\n       ]\n   }\n}",
                            "name": "Past Expiry Date"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"expired_at\": [\n           \"The expired at is not a valid date.\"\n       ],\n       \"used_at\": [\n           \"The used at is not a valid date.\"\n       ]\n   }\n}",
                            "name": "Invalid Date Format"
                        }
                    ]
                },
                {
                    "name": "Delete Customer Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_rewards\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer reward."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Revokes\/deletes a pending customer reward. Cannot revoke Used or Expired rewards."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"message\": \"Customer reward revoked successfully\"\n }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"Cannot revoke used or expired rewards\"\n}",
                            "name": "Cannot Revoke"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Customers",
            "description": "",
            "item": [
                {
                    "name": "List Customers",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "tier%2CactivePaidMembership.paidMembershipType",
                                    "description": "Comma-separated list of relationships to include:\n- tier\n- space\n- tags\n- address\n- activePaidMembership.paidMembershipType (includes active paid membership with type details)",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bphone_number%5D",
                                    "value": "88888888+%28matches+%2B60188888888%29",
                                    "description": "Filter by phone number (partial match). Searches for phone numbers containing the provided value.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bemail%5D",
                                    "value": "customer%40example.com",
                                    "description": "Filter by email match.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bgender%5D",
                                    "value": "1",
                                    "description": "Filter by gender. Must be one of:\n- 0 (Female)\n- 1 (Male)",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bsource%5D",
                                    "value": "WhatsApp",
                                    "description": "Filter by customer source. Must be one of:\n- Email\n- Phone\n- Direct\n- Reservation\n- WhatsApp\n- StoreHub\n- Loyverse\n- Softinn\n- Loyalty",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "Lead",
                                    "description": "Filter by customer status. Must be one of:\n- Lead\n- Open\n- Replied\n- Opportunity\n- Quotation\n- Lost Quotation\n- Interested\n- Converted\n- Do Not Contact\n- Blocked",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcurrent_point%5D",
                                    "value": "%3E100",
                                    "description": "Filter by points with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcurrent_credits%5D",
                                    "value": "%3E50",
                                    "description": "Filter by credits with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcreated_at%5D",
                                    "value": "2024-01-01",
                                    "description": "Filter by creation date with operators (>, 2024-01-01\n- Find customers created before a date: 2024-01-01,",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bupdated_at%5D",
                                    "value": "%3C2024-12-31",
                                    "description": "Filter by last update date with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Btier%5D",
                                    "value": "1",
                                    "description": "Filter by tier ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bhas_tags%5D",
                                    "value": "VIP",
                                    "description": "Filter by tag name.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "John",
                                    "description": "Filter by customer name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bbirthday_month%5D",
                                    "value": "10",
                                    "description": "Filter by birth month (1-12).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field and direction. Allowed fields: name, created_at, current_point, current_credits.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customers?include=tier%2CactivePaidMembership.paidMembershipType&filter%5Bphone_number%5D=88888888+%28matches+%2B60188888888%29&filter%5Bemail%5D=customer%40example.com&filter%5Bgender%5D=1&filter%5Bsource%5D=WhatsApp&filter%5Bstatus%5D=Lead&filter%5Bcurrent_point%5D=%3E100&filter%5Bcurrent_credits%5D=%3E50&filter%5Bcreated_at%5D=2024-01-01&filter%5Bupdated_at%5D=%3C2024-12-31&filter%5Btier%5D=1&filter%5Bspace%5D=1&filter%5Bhas_tags%5D=VIP&filter%5Bname%5D=John&filter%5Bbirthday_month%5D=10&sort=-created_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of customers belonging to the authenticated user's organisation.<br>\nResults can be filtered, sorted and include related data through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n   \"data\": [\n     {\n       \"id\": 1,\n       \"name\": \"John Smith\",\n       \"email\": \"john.smith@example.com\",\n       \"phone_number\": \"+60123456789\",\n       \"gender\": 1,\n       \"date_of_birth\": \"1990-05-15\",\n       \"source\": \"WhatsApp\",\n       \"status\": \"Converted\",\n       \"current_point\": 2500,\n       \"created_at\": \"2024-01-15T08:30:00.000000Z\",\n       \"updated_at\": \"2024-02-01T14:22:33.000000Z\",\n       \"notes\": \"Prefers to be contacted via WhatsApp\",\n       \"is_manually_assign_tier\": 0,\n       \"current_credits\": 150,\n       \"birthday_month\": 5,\n       \"tags\": [\"VIP\", \"Regular Customer\"],\n       \"space_id\": 1,\n       \"tier_id\": 1,\n       \"organisation_id\": 1,\n       \"tier\": {\n         \"id\": 1,\n         \"name\": \"Gold Member\",\n         \"sort\": 2,\n         \"min_point\": 2000,\n         \"color\": \"#FFD700\",\n         \"is_manual_assign\": 1,\n         \"point_multiplier\": 1.5,\n         \"perks\": {\n           \"birthday_multiplier\": 2\n         },\n         \"tier_configuration_id\": 1\n       },\n       \"space\": {\n         \"id\": 1,\n         \"uuid\": \"f2d75bf6-3cb8-305c-8f70-f71fe697cba3\",\n         \"name\": \"Main Branch\",\n         \"slug\": \"main-branch\",\n         \"matterport_model_id\": null,\n         \"description\": \"Our flagship store in the city centre\",\n         \"visibility\": \"public\",\n         \"email\": \"main@example.com\",\n         \"phone_number\": \"+60312345678\",\n         \"website\": \"@{{$baseUrl}}\",\n         \"social_media\": {\n           \"facebook\": \"example\",\n           \"instagram\": \"example\"\n         },\n         \"organisation_id\": 1,\n         \"category_id\": 1,\n         \"visits\": 1250,\n         \"created_at\": \"2023-01-01T00:00:00.000000Z\",\n         \"updated_at\": \"2024-01-15T08:30:00.000000Z\",\n         \"deleted_at\": null,\n         \"links\": {\n           \"public_url\": \"@{{$baseUrl}}\/spaces\/main-branch\"\n         }\n       },\n       \"address\": {\n         \"address_line_1\": \"123 Customer Street\",\n         \"address_line_2\": \"Unit 4B\",\n         \"city\": \"Kuala Lumpur\",\n         \"state\": \"Federal Territory of Kuala Lumpur\",\n         \"country\": \"Malaysia\",\n         \"postal_code\": \"50000\",\n         \"full_address\": \"123 Customer Street, Unit 4B, Kuala Lumpur, Federal Territory of Kuala Lumpur, 50000, Malaysia\"\n       },\n       \"paidMembership\": {\n         \"id\": 123,\n         \"membership_status\": \"active\",\n         \"membership_type_name\": \"VIP Gold\",\n         \"billing_cycle\": \"monthly\",\n         \"starts_at\": \"2024-01-01\",\n         \"expires_at\": \"2024-02-01\",\n         \"is_active\": true\n       }\n     }\n   ],\n   \"links\": {\n     \"first\": \"@{{$baseUrl}}\/customers?page=1\",\n     \"last\": \"@{{$baseUrl}}\/customers?page=5\",\n     \"prev\": null,\n     \"next\": \"@{{$baseUrl}}\/customers?page=2\"\n   },\n   \"meta\": {\n     \"current_page\": 1,\n     \"from\": 1,\n     \"last_page\": 5,\n     \"links\": [\n       {\n         \"url\": null,\n         \"label\": \"&laquo; Previous\",\n         \"active\": false\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/customers?page=1\",\n         \"label\": \"1\",\n         \"active\": true\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/customers?page=2\",\n         \"label\": \"2\",\n         \"active\": false\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/customers?page=3\",\n         \"label\": \"3\",\n         \"active\": false\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/customers?page=2\",\n         \"label\": \"Next &raquo;\",\n         \"active\": false\n       }\n     ],\n     \"path\": \"@{{$baseUrl}}\/customers\",\n     \"per_page\": 15,\n     \"to\": 15,\n     \"total\": 68\n   }\n }",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Customer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customers"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"John Smith\",\"email\":\"john.smith@example.com\",\"phone_number\":\"+60123456789\",\"gender\":1,\"date_of_birth\":\"1990-01-01\",\"space_id\":1,\"source\":\"WhatsApp\",\"status\":\"Lead\",\"tier_id\":1,\"is_manually_assign_tier\":true,\"tags\":[\"aliquid\"],\"notes\":\"Prefers to be contacted via WhatsApp\",\"address\":{\"address_line_1\":\"123 Main Street\",\"address_line_2\":\"Unit 4B\",\"country\":\"Malaysia\",\"state\":\"Selangor\",\"city\":\"Petaling Jaya\",\"postal_code\":\"46150\"}}"
                        },
                        "description": "Creates a new customer in the system. <br>\nThe customer will be associated with the authenticated user's organisation. <br>\nSupports tag assignment."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n   \"data\": {\n       \"id\": 1,\n       \"name\": \"John Doe\",\n       \"email\": \"john@example.com\",\n       \"phone_number\": \"+60123456789\",\n       \"gender\": 1,\n       \"date_of_birth\": \"1990-01-01\",\n       \"source\": \"WhatsApp\",\n       \"status\": \"Lead\",\n       \"current_point\": 0,\n       \"notes\": \"Prefers evening appointments\",\n       \"custom_properties\": null,\n       \"is_manually_assign_tier\": 0,\n       \"current_credits\": 0,\n       \"birthday_month\": 1,\n       \"space_id\": 1,\n       \"organisation_id\": 1,\n       \"created_at\": \"2025-02-01T00:00:00.000000Z\",\n       \"updated_at\": \"2025-02-01T00:00:00.000000Z\",\n       \"address\": {\n            \"address_line_1\": \"No 39, Jalan Desa 1\/1\",\n            \"address_line_2\": \"Taman Desa\",\n            \"city\": \"Petaling Jaya\",\n            \"state\": \"Selangor\",\n            \"country\": \"Malaysia\",\n            \"postal_code\": \"58100\",\n            \"full_address\": \"No 39, Jalan Desa 1\/1, Taman Desa, Petaling Jaya, Selangor, 58100, Malaysia\",\n        }\n   },\n   \"message\": \"Customer created successfully\"\n}",
                            "name": "Created successfully"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"email\": [\"The email address is already taken.\"],\n       \"phone_number\": [\"The phone number is already taken.\"],\n       \"source\": [\"The selected source is invalid.\"],\n       \"status\": [\"The selected status is invalid.\"]\n   }\n}",
                            "name": "Validation failed"
                        }
                    ]
                },
                {
                    "name": "Show Customer Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "tier%2CactivePaidMembership.paidMembershipType",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- tier\n- space\n- address\n- tags\n- activePaidMembership.paidMembershipType (includes active paid membership with type details)",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/customers\/:id?include=tier%2CactivePaidMembership.paidMembershipType",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer to delete."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific customer, including any requested relationships."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"John Doe\",\n        \"email\": \"john@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"gender\": 1,\n        \"date_of_birth\": \"1990-01-01\",\n        \"source\": \"WhatsApp\",\n        \"status\": \"Lead\",\n        \"current_point\": 0,\n        \"notes\": \"Prefers evening appointments\",\n        \"custom_properties\": null,\n        \"is_manually_assign_tier\": 0,\n        \"current_credits\": 0,\n        \"birthday_month\": 1,\n        \"space_id\": 1,\n        \"organisation_id\": 1,\n        \"created_at\": \"2025-02-01T00:00:00.000000Z\",\n        \"updated_at\": \"2025-02-01T00:00:00.000000Z\",\n        \"tier_id\": 1,\n        \"tier\": {\n            \"id\": 1,\n            \"name\": \"Bronze\",\n            \"points_required\": 0\n        },\n        \"paidMembership\": {\n            \"id\": 123,\n            \"membership_status\": \"active\",\n            \"membership_type_name\": \"VIP Gold\",\n            \"billing_cycle\": \"monthly\",\n            \"starts_at\": \"2024-01-01\",\n            \"expires_at\": \"2024-02-01\",\n            \"is_active\": true\n        }\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Customer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customers\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer to delete."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"John Doe\",\"email\":\"john@example.com\",\"phone_number\":\"+60123456789\",\"gender\":\"1\",\"date_of_birth\":\"1990-01-01\",\"space_id\":1,\"source\":\"WhatsApp\",\"status\":\"Lead\",\"tier_id\":1,\"is_manually_assign_tier\":true,\"tags\":[\"VIP\",\"Frequent Visitor\"],\"notes\":\"Prefers evening appointments\",\"address\":{\"address_line_1\":\"No 39, Jalan Desa 1\\\/1\",\"address_line_2\":\"Taman Desa\",\"country\":\"Malaysia\",\"state\":\"Selangor\",\"city\":\"Petaling Jaya\",\"postal_code\":\"58100\"}}"
                        },
                        "description": "Updates an existing customer's information. <br> All fields are optional.<br>\nExisting tags will be synced with the provided tags array if included."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"John Doe\",\n        \"email\": \"john@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"gender\": 1,\n        \"date_of_birth\": \"1990-01-01\",\n        \"source\": \"WhatsApp\",\n        \"status\": \"Lead\",\n        \"current_point\": 0,\n        \"notes\": \"Prefers evening appointments\",\n        \"custom_properties\": null,\n        \"is_manually_assign_tier\": 0,\n        \"current_credits\": 0,\n        \"birthday_month\": 1,\n        \"space_id\": 1,\n        \"organisation_id\": 1,\n        \"created_at\": \"2025-02-01T00:00:00.000000Z\",\n        \"updated_at\": \"2025-02-01T00:00:00.000000Z\",\n        \"address\": {\n             \"address_line_1\": \"No 39, Jalan Desa 1\/1\",\n             \"address_line_2\": \"Taman Desa\",\n             \"city\": \"Petaling Jaya\",\n             \"state\": \"Selangor\",\n             \"country\": \"Malaysia\",\n             \"postal_code\": \"58100\",\n             \"full_address\": \"No 39, Jalan Desa 1\/1, Taman Desa, Petaling Jaya, Selangor, 58100, Malaysia\",\n        }\n    },\n    \"message\": \"Customer updated successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Customer not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"email\": [\"The email address is already taken.\"],\n        \"phone_number\": [\"The phone number is already taken.\"],\n        \"source\": [\"The selected source is invalid.\"],\n        \"status\": [\"The selected status is invalid.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Customer",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customers\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the customer to delete."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Queues a customer for deletion. <br>\nThe deletion process runs asynchronously. <br>\nAll related data will be deleted including rewards, transactions, and media (if any)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\n    \"message\": \"Customer deletion has been queued and will be processed shortly\"\n}",
                            "name": "Accepted"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Bulk Import Customers",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customers\/bulk-import",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customers\/bulk-import"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customers\":[{\"name\":\"John Doe\",\"email\":\"john@example.com\",\"phone_number\":\"+60123456789\",\"gender\":1,\"date_of_birth\":\"1990-01-01\",\"source\":\"WhatsApp\",\"status\":\"Lead\",\"notes\":\"VIP customer\",\"tags\":[\"VIP\",\"WhatsApp\"]}],\"space_id\":1}"
                        },
                        "description": "Import multiple customers asynchronously. <br>\nThe operation is queued and processed in chunks of 100 records. <br>\nLimited to 1,000 customers per request and rate limited to 10 requests per minute."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 202,
                            "body": "{\n  \"message\": \"Bulk customer import has been queued and will be processed shortly\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"customers\": [\"The customers must not have more than 1000 items.\"],\n    \"customers.*.email\": [\"The customers.0.email has already been taken.\"],\n    \"customers.*.phone_number\": [\"The customers.0.phone_number must be a valid phone number.\"]\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 429,
                            "body": "{\n   \"message\": \"Too Many Attempts.\"\n}",
                            "name": "Too Many Requests"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Organisations",
            "description": "",
            "item": [
                {
                    "name": "List Organisations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Acme",
                                    "description": "Filter by organisation name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-id",
                                    "description": "Sort field. Allowed: id, name, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/organisations?filter%5Bname%5D=Acme&sort=-id&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of organisations. Vendors see only their own organisation.\nSuper admins with \"View Any Organisation\" permission see all organisations."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Acme Corp\",\n            \"friendly_name\": \"Acme\",\n            \"email\": \"hello@acme.com\",\n            \"phone_number\": \"+60123456789\",\n            \"pos_provider\": null,\n            \"ecommerce_provider\": null,\n            \"features\": {\n                \"loyalty\": true,\n                \"credits\": false,\n                \"tiering\": false,\n                \"ecommerce_integration\": false\n            },\n            \"created_at\": \"2024-01-01T00:00:00.000000Z\",\n            \"updated_at\": \"2024-01-01T00:00:00.000000Z\"\n        }\n    ],\n    \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n    \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The organisation 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\": 1, \"name\": \"Acme Corp\", \"features\": { \"loyalty\": true, \"credits\": false, \"tiering\": false, \"ecommerce_integration\": false } } }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "Forbidden"
                        }
                    ]
                },
                {
                    "name": "Update Organisation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/organisations\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/organisations\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The organisation ID."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Acme Corp\",\"friendly_name\":\"Acme\",\"email\":\"hello@acme.com\",\"phone_number\":\"+60123456789\"}"
                        },
                        "description": ""
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{ \"data\": { \"id\": 1, \"name\": \"Updated Name\" }, \"message\": \"Organisation updated successfully\" }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{ \"message\": \"...\", \"errors\": {} }",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Subscriptions",
                    "description": "Stripe subscriptions belonging to an organisation.",
                    "item": [
                        {
                            "name": "List Organisation Subscriptions",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/organisations\/:organisation_id\/subscriptions",
                                    "query": [
                                        {
                                            "key": "per_page",
                                            "value": "15",
                                            "description": "Records per page.",
                                            "disabled": false
                                        }
                                    ],
                                    "raw": "{{baseUrl}}\/api\/organisations\/:organisation_id\/subscriptions?per_page=15",
                                    "variable": [
                                        {
                                            "id": "organisation_id",
                                            "key": "organisation_id",
                                            "value": "1",
                                            "description": "The organisation ID."
                                        }
                                    ]
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Returns a paginated list of Stripe subscriptions for the specified organisation.\nOnly the organisation's own members can access this endpoint."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\"data\":[{\"id\":1,\"type\":\"default\",\"stripe_id\":\"sub_1ABC\",\"stripe_status\":\"active\",\"stripe_price\":\"price_1ABC\",\"quantity\":1,\"trial_ends_at\":null,\"ends_at\":null,\"created_at\":\"2024-01-01T00:00:00.000000Z\",\"updated_at\":\"2024-01-01T00:00:00.000000Z\"}],\"links\":{\"first\":\"...\",\"last\":\"...\",\"prev\":null,\"next\":null},\"meta\":{\"current_page\":1,\"total\":1}}",
                                    "name": "Success"
                                },
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"type\": \"default\",\n            \"stripe_id\": \"sub_1ABC\",\n            \"stripe_status\": \"active\",\n            \"stripe_price\": \"price_1ABC\",\n            \"quantity\": 1,\n            \"trial_ends_at\": null,\n            \"ends_at\": null,\n            \"created_at\": \"2024-01-01T00:00:00.000000Z\",\n            \"updated_at\": \"2024-01-01T00:00:00.000000Z\"\n        }\n    ],\n    \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n    \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 403,
                                    "body": "{ \"message\": \"This action is unauthorized.\" }",
                                    "name": "Forbidden"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "POS Credits",
            "description": "",
            "item": [
                {
                    "name": "List POS credits",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posCredit",
                            "query": [
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "adopted",
                                    "description": "Filter by status (`pending`, `adopted`).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bref_id%5D",
                                    "value": "REF-123",
                                    "description": "Filter by ref_id.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Btransaction_timestamp%5D",
                                    "value": "2025-05-06",
                                    "description": "Filter by date (YYYY-MM-DD).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bamount%5D",
                                    "value": "%3E50",
                                    "description": "Filter by amount with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field. Allowed: transaction_timestamp, amount, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "space",
                                    "description": "Relationships to include (space).",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/posCredit?filter%5Bstatus%5D=adopted&filter%5Bspace_id%5D=1&filter%5Bref_id%5D=REF-123&filter%5Btransaction_timestamp%5D=2025-05-06&filter%5Bamount%5D=%3E50&sort=-created_at&include=space&per_page=15"
                        },
                        "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    {\n      \"id\": 1,\n      \"ref_id\": \"CREDIT-12345\",\n      \"transaction_timestamp\": \"2025-05-06T14:30:00.000000Z\",\n      \"amount\": \"50.00\",\n      \"status\": \"adopted\",\n      \"pos_provider\": \"eats365\",\n      \"organisation_id\": 1,\n      \"space_id\": 1,\n      \"credit_id\": 101,\n      \"void_credit_id\": null,\n      \"payload\": {\"terminal\": \"T001\"},\n      \"created_at\": \"2025-05-06T14:30:01.000000Z\",\n      \"updated_at\": \"2025-05-06T14:30:01.000000Z\"\n    }\n  ],\n  \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n  \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "POS integration not enabled"
                        }
                    ]
                },
                {
                    "name": "Create POS Credit",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posCredit",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/posCredit"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"ref_id\":\"REF-20250506-001\",\"transaction_timestamp\":\"2025-05-06T14:30:00Z\",\"amount\":5000,\"payload\":{\"receipt_no\":\"RCP-001\",\"terminal_id\":\"T01\"},\"space_id\":1,\"customer_id\":42,\"phone_number\":\"+60123456789\",\"remarks\":\"Top-up via Eats365 POS\"}"
                        },
                        "description": "Ingests a POS credit record. If a customer is identified (via customer_id or phone_number),\na credit wallet entry is created and the POS credit status is set to **adopted**.\nWithout customer identification the record is stored as **pending** for later adoption.\n\n- Positive amounts create a `Top Up` credit.\n- Negative amounts create a `Refund` credit."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"ref_id\": \"CREDIT-12345\",\n    \"transaction_timestamp\": \"2025-05-06T14:30:00.000000Z\",\n    \"amount\": \"50.00\",\n    \"status\": \"adopted\",\n    \"pos_provider\": \"eats365\",\n    \"organisation_id\": 1,\n    \"space_id\": 1,\n    \"credit_id\": 101,\n    \"void_credit_id\": null,\n    \"payload\": {\"terminal\": \"T001\"},\n    \"created_at\": \"2025-05-06T14:30:01.000000Z\",\n    \"updated_at\": \"2025-05-06T14:30:01.000000Z\"\n  }\n}",
                            "name": "Adopted (with customer)"
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 2,\n    \"ref_id\": \"CREDIT-99999\",\n    \"status\": \"pending\",\n    \"credit_id\": null,\n    \"void_credit_id\": null\n  }\n}",
                            "name": "Pending (no customer)"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"This action is unauthorized.\"\n}",
                            "name": "POS integration not enabled"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The ref id has already been taken.\",\n  \"errors\": {\"ref_id\": [\"The ref id has already been taken.\"]}\n}",
                            "name": "Duplicate ref_id"
                        }
                    ]
                },
                {
                    "name": "Void POS Credit",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posCredit\/:posCredit_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/posCredit\/:posCredit_id\/void",
                            "variable": [
                                {
                                    "id": "posCredit_id",
                                    "key": "posCredit_id",
                                    "value": "1",
                                    "description": "The ID of the posCredit."
                                },
                                {
                                    "id": "posCredit",
                                    "key": "posCredit",
                                    "value": "1",
                                    "description": "The ID of the POS credit to void."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":42,\"remarks\":\"Voided per customer request\"}"
                        },
                        "description": "Voids an adopted POS credit record by creating a deduct entry in the customer's credit wallet.\n\n**Idempotency:** Voiding an already-voided POS credit returns success without creating a duplicate entry."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"POS credit voided successfully.\",\n  \"data\": {\n    \"id\": 202,\n    \"customer_id\": 42,\n    \"amount\": 50,\n    \"operation\": \"-\",\n    \"type\": \"Deduct\",\n    \"remarks\": \"Voided POS credit #1\",\n    \"created_at\": \"2025-05-06T15:00:00.000000Z\"\n  }\n}",
                            "name": "Voided successfully"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"This transaction has already been voided.\",\n  \"data\": null\n}",
                            "name": "Already voided (idempotent)"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Transaction not adopted, nothing to void.\",\n  \"data\": null\n}",
                            "name": "Not adopted, nothing to void"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"This action is unauthorized.\"\n}",
                            "name": "Unauthorized"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Record not found.\"\n}",
                            "name": "POS credit not found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"A customer ID is required to void this POS credit.\"\n}",
                            "name": "customer_id required"
                        }
                    ]
                }
            ]
        },
        {
            "name": "POS Transaction",
            "description": "",
            "item": [
                {
                    "name": "List POS transactions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posTransaction",
                            "query": [
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "adopted",
                                    "description": "Filter by transaction status.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space UUID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Btransaction_time%5D",
                                    "value": "2025-05-06",
                                    "description": "Filter by transaction date (Y-m-d format).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bamount_min%5D",
                                    "value": "50",
                                    "description": "Filter by minimum amount.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bamount_max%5D",
                                    "value": "500",
                                    "description": "Filter by maximum amount.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bref_id%5D",
                                    "value": "TRX-123",
                                    "description": "Filter by reference ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-transaction_time",
                                    "description": "Sort by column (prefixed with - for descending). Available options: transaction_time, amount, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "space",
                                    "description": "Include related resources. Available options: space.",
                                    "disabled": false
                                },
                                {
                                    "key": "page",
                                    "value": "1",
                                    "description": "Page number.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Items per page (max 100).",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/posTransaction?filter%5Bstatus%5D=adopted&filter%5Bspace_id%5D=1&filter%5Btransaction_time%5D=2025-05-06&filter%5Bamount_min%5D=50&filter%5Bamount_max%5D=500&filter%5Bref_id%5D=TRX-123&sort=-transaction_time&include=space&page=1&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of POS transactions for the authenticated organisation.\nResults can be filtered, sorted and paginated."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"ref_id\": \"TRX-12345678\",\n      \"transaction_time\": \"2025-05-06T14:30:00Z\",\n      \"amount\": 150.00,\n      \"status\": \"adopted\",\n      \"pos_provider\": \"provider_name\",\n      \"organisation_id\": 1,\n      \"created_at\": \"2025-05-06T14:35:00Z\",\n      \"updated_at\": \"2025-05-06T14:35:00Z\",\n      \"space\": {\n        \"id\": \"1\",\n        \"name\": \"Main Store\",\n        \"slug\": \"main-store\"\n      }\n    }\n  ],\n  \"links\": {\n    \"first\": \"@{{$baseUrl}}\/pos-transactions?page=1\",\n    \"last\": \"@{{$baseUrl}}\/pos-transactions?page=5\",\n    \"prev\": null,\n    \"next\": \"@{{$baseUrl}}\/pos-transactions?page=2\"\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 5,\n    \"path\": \"@{{$baseUrl}}\/pos-transactions\",\n    \"per_page\": 15,\n    \"to\": 15,\n    \"total\": 75\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create a new POS transaction",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posTransaction",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/posTransaction"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"space_id\":\"1\",\"ref_id\":\"TRX-12345678\",\"transaction_time\":\"2025-05-06T14:30:00Z\",\"amount\":15000,\"payload\":\"{\\\"items\\\": [{\\\"name\\\": \\\"Product A\\\", \\\"quantity\\\": 2, \\\"price\\\": 7500}], \\\"payment_method\\\": \\\"credit_card\\\", \\\"terminal_id\\\": \\\"T001\\\"}\",\"customer_id\":42,\"phone_number\":\"+60123456789\",\"original_ref_id\":\"TRX-ORIGINAL-001\",\"remarks\":\"2x Coffee, 1x Sandwich\"}"
                        },
                        "description": "This endpoint creates a new POS transaction in the system. If a customer identifier (customer_id or phone_number)\nis provided, the transaction will be automatically adopted and a corresponding transaction record will be created for the customer.\n\n**Partial Refunds:** To process a partial refund, send a negative amount. Optionally provide the original_ref_id\nof the transaction being refunded. The refund will deduct proportional points from the customer's balance.\n\n**Blind Refunds:** If no original_ref_id is provided with a negative amount (blind refund), points will be\ndeducted using the formula: refund_amount \u00d7 tier_multiplier (or 1:1 if customer has no tier)."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"ref_id\": \"TRX-12345678\",\n    \"transaction_time\": \"2025-05-06T14:30:00Z\",\n    \"amount\": 150.00,\n    \"status\": \"pending\",\n    \"pos_provider\": \"provider_name\",\n    \"space_id\": \"1\",\n    \"organisation_id\": 1,\n    \"created_at\": \"2025-05-06T14:35:00Z\",\n    \"updated_at\": \"2025-05-06T14:35:00Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"ref_id\": \"TRX-12345678\",\n    \"transaction_time\": \"2025-05-06T14:30:00Z\",\n    \"amount\": 150.00,\n    \"status\": \"adopted\",\n    \"pos_provider\": \"provider_name\",\n    \"space_id\": \"1\",\n    \"organisation_id\": 1,\n    \"created_at\": \"2025-05-06T14:35:00Z\",\n    \"updated_at\": \"2025-05-06T14:35:00Z\"\n  }\n}",
                            "name": "With customer adoption"
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 2,\n    \"ref_id\": \"TRX-REFUND-001\",\n    \"transaction_time\": \"2025-05-06T15:00:00Z\",\n    \"amount\": -50.00,\n    \"status\": \"adopted\",\n    \"pos_provider\": \"provider_name\",\n    \"space_id\": \"1\",\n    \"organisation_id\": 1,\n    \"is_refund\": true,\n    \"original_ref_id\": \"TRX-12345678\",\n    \"refund_details\": {\n      \"original_amount\": 150.00,\n      \"refund_amount\": 50.00,\n      \"points_deducted\": 50\n    },\n    \"created_at\": \"2025-05-06T15:00:00Z\",\n    \"updated_at\": \"2025-05-06T15:00:00Z\"\n  }\n}",
                            "name": "Partial refund"
                        },
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n  \"data\": {\n    \"id\": 3,\n    \"ref_id\": \"TRX-BLIND-REFUND-001\",\n    \"transaction_time\": \"2025-05-06T15:00:00Z\",\n    \"amount\": -50.00,\n    \"status\": \"adopted\",\n    \"pos_provider\": \"provider_name\",\n    \"space_id\": \"1\",\n    \"organisation_id\": 1,\n    \"is_refund\": true,\n    \"original_ref_id\": null,\n    \"refund_details\": {\n      \"original_amount\": null,\n      \"refund_amount\": 50.00,\n      \"points_deducted\": 75\n    },\n    \"created_at\": \"2025-05-06T15:00:00Z\",\n    \"updated_at\": \"2025-05-06T15:00:00Z\"\n  }\n}",
                            "name": "Blind refund (no original_ref_id)"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"POS integration not enabled for this organisation\"\n}",
                            "name": "POS integration not enabled"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"ref_id\": [\n      \"The ref id has already been taken.\"\n    ],\n    \"amount\": [\n      \"The refund amount exceeds the refundable balance.\"\n    ]\n  }\n}",
                            "name": "Validation error"
                        }
                    ]
                },
                {
                    "name": "Void POS Transaction",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/posTransaction\/:posTransaction_id\/void",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/posTransaction\/:posTransaction_id\/void",
                            "variable": [
                                {
                                    "id": "posTransaction_id",
                                    "key": "posTransaction_id",
                                    "value": "1140884",
                                    "description": "The ID of the posTransaction."
                                },
                                {
                                    "id": "posTransaction",
                                    "key": "posTransaction",
                                    "value": "123",
                                    "description": "The ID of the POS transaction to void."
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":456,\"remarks\":\"\\\"Transaction voided - customer request\\\"\"}"
                        },
                        "description": "Voids an adopted POS transaction and deducts the exact points that were earned.\nThis generic endpoint works for all POS providers.\n\nThe void operation uses the linked transaction_id to deduct the exact amount of points\nthat were earned, accounting for tier multipliers. For example:\n- Customer with 2x Gold tier earns 200 points on $100 purchase\n- Voiding deducts exactly 200 points (not 100)\n\n**Idempotency:** Attempting to void the same transaction multiple times will return success\nbut only create one void transaction."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"POS transaction voided successfully.\",\n  \"data\": {\n    \"id\": 789,\n    \"customer_id\": 456,\n    \"amount\": 200,\n    \"operation\": \"-\",\n    \"remarks\": \"Transaction voided from POS System (Ref: REF-12345)\",\n    \"created_at\": \"2025-10-25T14:30:00Z\"\n  }\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"Transaction not adopted, nothing to void.\",\n  \"data\": null\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"message\": \"This transaction has already been voided.\",\n  \"data\": null\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"This action is unauthorized.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"POS Transaction not found.\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"customer_id\": [\"The selected customer does not exist in your organisation.\"]\n  }\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Paid Membership Types",
            "description": "",
            "item": [
                {
                    "name": "List Paid Membership Types",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/paid_membership_types",
                            "query": [
                                {
                                    "key": "filter%5Bis_active%5D",
                                    "value": "1",
                                    "description": "Filter by active status.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Gold",
                                    "description": "Filter by membership type name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field and direction. Prefix with `-` for descending. Available fields: `sort`, `name`, `created_at`. Defaults to `sort`.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page. Defaults to 15.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/paid_membership_types?filter%5Bis_active%5D=1&filter%5Bname%5D=Gold&sort=-created_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of paid membership type catalog entries belonging to the\nauthenticated user's organisation. Supports filtering and sorting via query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"organisation_id\": 1,\n      \"name\": \"VIP Gold\",\n      \"description\": \"Priority support and birthday rewards.\",\n      \"pricing_options\": [\n        {\"cycle\": \"monthly\", \"price\": 3500},\n        {\"cycle\": \"yearly\", \"price\": 35000}\n      ],\n      \"benefits\": [\n        {\"icon\": \"heroicon-o-star\", \"heading\": \"Priority Support\", \"description\": \"Get priority customer support\"}\n      ],\n      \"sort\": 1,\n      \"is_active\": true,\n      \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n      \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    }\n  ],\n  \"links\": {\"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null},\n  \"meta\": {\"current_page\": 1, \"from\": 1, \"last_page\": 1, \"path\": \"...\", \"per_page\": 15, \"to\": 1, \"total\": 1}\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show Paid Membership Type",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/paid_membership_types\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/paid_membership_types\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the paid membership type."
                                },
                                {
                                    "id": "paid_membership_type",
                                    "key": "paid_membership_type",
                                    "value": "1",
                                    "description": "The ID of the paid membership type."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves a single paid membership type by ID. Cross-organisation access returns 404."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"organisation_id\": 1,\n    \"name\": \"VIP Gold\",\n    \"description\": \"Priority support and birthday rewards.\",\n    \"pricing_options\": [{\"cycle\": \"monthly\", \"price\": 3500}],\n    \"benefits\": [],\n    \"sort\": 1,\n    \"is_active\": true,\n    \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n    \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Payments",
            "description": "",
            "item": [
                {
                    "name": "List Payments",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/payments",
                            "query": [
                                {
                                    "key": "filter%5Btype%5D",
                                    "value": "payment",
                                    "description": "Filter by record type. Available values: `payment`, `refund`.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "1",
                                    "description": "Filter by payment status code (e.g. 0 = pending, 1 = success, 2 = failed).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bmethod%5D",
                                    "value": "commerce_pay",
                                    "description": "Filter by payment method (e.g. `commerce_pay`, `manual`, `credit`).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bpayable_type%5D",
                                    "value": "App%5CModels%5CReservation",
                                    "description": "Filter by the fully-qualified class of what was paid for.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcreated_at%5D",
                                    "value": "%3E2024-01-01",
                                    "description": "Filter by creation date with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcompleted_at%5D",
                                    "value": "%3E2024-01-01",
                                    "description": "Filter by completion date with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field. Allowed: created_at, completed_at, amount. Use - for descending.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "refunds",
                                    "description": "Comma-separated relationships to include. Allowed: refunds, refundingPayment.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/payments?filter%5Btype%5D=payment&filter%5Bstatus%5D=1&filter%5Bmethod%5D=commerce_pay&filter%5Bpayable_type%5D=App%5CModels%5CReservation&filter%5Bcreated_at%5D=%3E2024-01-01&filter%5Bcompleted_at%5D=%3E2024-01-01&sort=-created_at&include=refunds&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a paginated list of payments and refunds belonging to the authenticated\nuser's organisation. Results can be filtered, sorted and expanded with related\ndata through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"type\": \"payment\",\n      \"method\": \"commerce_pay\",\n      \"reference_id\": \"TXN-1234567890\",\n      \"amount\": 150.0,\n      \"currency_code\": \"MYR\",\n      \"status\": 1,\n      \"is_manual\": false,\n      \"payment_type\": null,\n      \"source\": null,\n      \"attempted_at\": \"2025-01-01T00:00:00+00:00\",\n      \"completed_at\": \"2025-01-01T00:01:00+00:00\",\n      \"failed_at\": null,\n      \"failure_reason\": null,\n      \"created_at\": \"2025-01-01T00:00:00+00:00\"\n    }\n  ],\n  \"links\": {\"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null},\n  \"meta\": {\"current_page\": 1, \"per_page\": 15, \"total\": 1}\n}",
                            "name": "List of payments"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": [],\n  \"links\": {\"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null},\n  \"meta\": {\"current_page\": 1, \"per_page\": 15, \"total\": 0}\n}",
                            "name": "No payments found"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\": \"Unauthenticated.\"}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"This action is unauthorized.\"}",
                            "name": "Unauthorized"
                        }
                    ]
                },
                {
                    "name": "Show Payment",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/payments\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "refunds",
                                    "description": "Comma-separated relationships to include. Allowed: refunds, refundingPayment.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/payments\/:id?include=refunds",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the payment."
                                },
                                {
                                    "id": "payment",
                                    "key": "payment",
                                    "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": "Retrieve detailed information about a specific payment or refund."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"type\": \"payment\",\n    \"method\": \"commerce_pay\",\n    \"reference_id\": \"TXN-1234567890\",\n    \"amount\": 150.0,\n    \"currency_code\": \"MYR\",\n    \"status\": 1,\n    \"is_manual\": false,\n    \"payment_type\": null,\n    \"source\": null,\n    \"attempted_at\": \"2025-01-01T00:00:00+00:00\",\n    \"completed_at\": \"2025-01-01T00:01:00+00:00\",\n    \"failed_at\": null,\n    \"failure_reason\": null,\n    \"created_at\": \"2025-01-01T00:00:00+00:00\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\"message\": \"Unauthenticated.\"}",
                            "name": "Unauthenticated"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\"message\": \"This action is unauthorized.\"}",
                            "name": "Unauthorized"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\"message\": \"Record not found.\"}",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Plans",
            "description": "",
            "item": [
                {
                    "name": "List Plans",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/plans",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Premium",
                                    "description": "Filter by plan name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-id",
                                    "description": "Sort field. Allowed: id, name, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/plans?filter%5Bname%5D=Premium&sort=-id&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of active subscription plans, including their prices."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Premium\",\n            \"description\": \"Full access to all features\",\n            \"is_active\": true,\n            \"features\": {\n                \"loyalty_enabled\": true,\n                \"credits_enabled\": true,\n                \"tiering_enabled\": true,\n                \"max_spaces\": 3,\n                \"max_customers\": 10000\n            },\n            \"prices\": [\n                {\n                    \"id\": 1,\n                    \"currency\": \"MYR\",\n                    \"billing_period\": \"monthly\",\n                    \"amount\": 350,\n                    \"stripe_price_id\": \"price_1ABC\",\n                    \"is_active\": true,\n                    \"description\": null\n                }\n            ],\n            \"created_at\": \"2024-01-01T00:00:00.000000Z\",\n            \"updated_at\": \"2024-01-01T00:00:00.000000Z\"\n        }\n    ],\n    \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n    \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show Plan",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/plans\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/plans\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The plan 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\": 1, \"name\": \"Premium\", \"features\": { \"loyalty_enabled\": true }, \"prices\": [] } }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{ \"message\": \"No query results for model [Plan] 1\" }",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Reward Validation",
            "description": "\nAPIs for validating reward redemption codes",
            "item": [
                {
                    "name": "Validate Reward Code",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/customer_rewards\/validate",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/customer_rewards\/validate"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"code\":\"123456\",\"organisation_id\":123}"
                        },
                        "description": "Validates a 6-digit reward redemption code and returns validation status along with complete reward details.\nThis endpoint is designed for cashiers and POS systems to verify reward codes before processing redemptions.\n\nThe validation process checks:\n- Code format (must be exactly 6 digits)\n- Code existence in the system\n- Code expiration status\n- Whether the code has already been used\n- Organisation-level multi-tenancy\n\nThe response includes the full reward object with `properties` field containing POS integration settings.\n**For iVend POS:** Check `reward.properties.ivend.enabled` to determine if the reward can be processed.\nUse `reward.properties.ivend.amount` to apply the discount amount."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"valid\": true,\n    \"message\": \"Code is valid\",\n    \"data\": {\n        \"id\": 101,\n        \"status\": \"Pending\",\n        \"code\": \"123456\",\n        \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n        \"used_at\": null,\n        \"customer_id\": 42,\n        \"reward_id\": 5,\n        \"customer\": {\n            \"id\": 42,\n            \"name\": \"John Doe\",\n            \"phone_number\": \"+601234567890\",\n            \"email\": \"john@example.com\",\n            \"current_point\": 2500,\n            \"current_credits\": 150\n        },\n        \"reward\": {\n            \"id\": 5,\n            \"name\": \"Free Coffee\",\n            \"description\": \"Complimentary coffee of your choice\",\n            \"terms\": \"Valid at all outlets. One redemption per visit.\",\n            \"is_active\": true,\n            \"start_at\": null,\n            \"end_at\": null,\n            \"valid_days\": 30,\n            \"amount\": 100,\n            \"point_is_active\": true,\n            \"credit_is_active\": false,\n            \"credit_amount\": null,\n            \"credit_earn_point\": false,\n            \"available_currency_types\": [\"point\"],\n            \"allow_customer_self_reward\": true,\n            \"is_one_time_reward\": false,\n            \"is_direct_link_accessible\": false,\n            \"is_redeemable\": true,\n            \"is_custom_valid_days\": true,\n            \"is_limit_total_availability\": false,\n            \"total_availability\": null,\n            \"total_redeemed\": 15,\n            \"cover\": \"gift\",\n            \"automations\": [],\n            \"notification_settings\": {},\n            \"properties\": {\n                \"ivend\": {\n                    \"enabled\": true,\n                    \"type\": \"amount\",\n                    \"amount\": 5\n                }\n            },\n            \"created_at\": \"2024-01-15T08:30:00.000000Z\",\n            \"updated_at\": \"2024-02-10T10:45:00.000000Z\"\n        }\n    }\n}",
                            "name": "Valid Code"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Organisation not found\"\n}",
                            "name": "Organisation Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"valid\": false,\n    \"message\": \"Code has expired\",\n    \"error_code\": \"CODE_EXPIRED\"\n}",
                            "name": "Code Expired"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"valid\": false,\n    \"message\": \"Code has already been used\",\n    \"error_code\": \"CODE_ALREADY_USED\"\n}",
                            "name": "Code Already Used"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"valid\": false,\n    \"message\": \"Invalid redemption code\",\n    \"error_code\": \"CODE_NOT_FOUND\"\n}",
                            "name": "Invalid Code"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"valid\": false,\n    \"message\": \"Code must be exactly 6 digits\",\n    \"error_code\": \"INVALID_FORMAT\"\n}",
                            "name": "Invalid Format"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"code\": [\"Code must be exactly 6 digits.\"],\n        \"organisation_id\": [\"Organisation ID is required.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Rewards",
            "description": "",
            "item": [
                {
                    "name": "List Rewards",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/rewards",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "space%2CcustomerRewards",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- space\n- customerRewards\n- rewardVouchers\n- inviterReferralItem\n- inviteeReferralItem\n- rewardBundleItems\n- pendingRewardVouchers",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bis_active%5D",
                                    "value": "1",
                                    "description": "Filter by active status.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bis_redeemable%5D",
                                    "value": "1",
                                    "description": "Filter by redeemable status.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bis_one_time_reward%5D",
                                    "value": "",
                                    "description": "Filter by one-time reward status.",
                                    "disabled": true
                                },
                                {
                                    "key": "filter%5Ballow_customer_self_reward%5D",
                                    "value": "1",
                                    "description": "Filter by self-reward permission.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bpoint_is_active%5D",
                                    "value": "1",
                                    "description": "Filter by point redemption availability.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcredit_is_active%5D",
                                    "value": "1",
                                    "description": "Filter by credit redemption availability.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bavailable%5D",
                                    "value": "1",
                                    "description": "Filter by availability (considers active status and date range).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Birthday",
                                    "description": "Filter by reward name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field and direction. Note: Prefix with `-` for descending order.\nAvailable sort fields:\n- name\n- start_at\n- end_at\n- created_at\n- amount",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page. Defaults to 15.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/rewards?include=space%2CcustomerRewards&filter%5Bspace_id%5D=1&filter%5Bis_active%5D=1&filter%5Bis_redeemable%5D=1&filter%5Bis_one_time_reward%5D=&filter%5Ballow_customer_self_reward%5D=1&filter%5Bpoint_is_active%5D=1&filter%5Bcredit_is_active%5D=1&filter%5Bavailable%5D=1&filter%5Bname%5D=Birthday&sort=-created_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of rewards belonging to the authenticated user's organisation spaces.<br>\nSupports filtering, sorting and relationship inclusion through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Birthday Reward\",\n            \"description\": \"Special reward for customer birthdays\",\n            \"terms\": \"Valid for 30 days from issue\",\n            \"is_active\": true,\n            \"start_at\": \"2025-01-01T00:00:00.000000Z\",\n            \"end_at\": \"2025-12-31T23:59:59.000000Z\",\n            \"valid_days\": 30,\n            \"amount\": 1000,\n            \"allow_customer_self_reward\": false,\n            \"is_one_time_reward\": true,\n            \"is_direct_link_accessible\": false,\n            \"is_redeemable\": true,\n            \"is_custom_valid_days\": true,\n            \"is_limit_total_availability\": true,\n            \"total_availability\": 100,\n            \"total_redeemed\": 0,\n            \"cover\": \"gift\",\n            \"automations\": [],\n            \"notification_settings\": {\n                \"new_reward\": {\n                    \"is_enabled\": true,\n                    \"message\": \"You've received a birthday reward!\"\n                }\n            },\n            \"properties\": {\n                \"ivend\": {\n                    \"enabled\": true,\n                    \"type\": \"amount\",\n                    \"amount\": 10\n                }\n            },\n            \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n            \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"@{{$baseUrl}}\/api\/rewards?page=1\",\n        \"last\": \"@{{$baseUrl}}\/api\/rewards?page=1\",\n        \"prev\": null,\n        \"next\": null\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"path\": \"@{{$baseUrl}}\/api\/rewards\",\n        \"per_page\": 15,\n        \"to\": 1,\n        \"total\": 1\n    }\n}",
                            "name": "Success"
                        }
                    ]
                },
                {
                    "name": "Create Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/rewards",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/rewards"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Birthday Reward\",\"description\":\"Special reward for customer birthdays\",\"terms\":\"Valid for 30 days from issue\",\"space_id\":1,\"is_active\":true,\"start_at\":\"2025-01-01\",\"end_at\":\"2025-12-31\",\"is_redeemable\":true,\"is_custom_valid_days\":true,\"valid_days\":30,\"amount\":1000,\"point_is_active\":true,\"credit_is_active\":true,\"credit_amount\":\"10.50\",\"credit_earn_point\":false,\"allow_customer_self_reward\":true,\"is_one_time_reward\":true,\"is_direct_link_accessible\":false,\"is_limit_total_availability\":true,\"total_availability\":100,\"cover\":\"gift\",\"notification_settings\":{\"new_reward\":{\"is_enabled\":false,\"message\":\"Hi @{{NAME}}, you have received a new reward from @{{SPACE_NAME}}!\"},\"expired_reward\":{\"is_enabled\":true,\"message\":\"Hi @{{NAME}}, your reward has expired.\"},\"expiring_reward\":{\"is_enabled\":true,\"message\":\"Hi @{{NAME}}, your reward will expire soon!\",\"send_notification_before\":\"7\"}}}"
                        },
                        "description": "Creates a new reward in the system. <br>\nThe reward will be associated with the specified space in the authenticated user's organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Birthday Reward\",\n        \"description\": \"Special reward for customer birthdays\",\n        \"terms\": \"Valid for 30 days from issue\",\n        \"is_active\": true,\n        \"start_at\": \"2025-01-01T00:00:00.000000Z\",\n        \"end_at\": \"2025-12-31T23:59:59.000000Z\",\n        \"valid_days\": 30,\n        \"amount\": 1000,\n        \"allow_customer_self_reward\": false,\n        \"is_one_time_reward\": true,\n        \"is_direct_link_accessible\": false,\n        \"is_redeemable\": true,\n        \"is_custom_valid_days\": true,\n        \"is_limit_total_availability\": true,\n        \"total_availability\": 100,\n        \"total_redeemed\": 0,\n        \"cover\": \"gift\",\n        \"automations\": [],\n        \"notification_settings\": {\n            \"new_reward\": {\n                \"is_enabled\": true,\n                \"message\": \"You've received a birthday reward!\"\n            }\n        },\n        \"properties\": {\n            \"ivend\": {\n                \"enabled\": true,\n                \"type\": \"amount\",\n                \"amount\": 10\n            }\n        },\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    },\n    \"message\": \"Reward created successfully\"\n}",
                            "name": "Created successfully"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"name\": [\"The name field is required.\"],\n        \"space_id\": [\"The selected space id is invalid.\"],\n        \"amount\": [\"The amount must be at least 0.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Show Reward Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/rewards\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "space%2CcustomerRewards",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- space\n- customerRewards\n- rewardVouchers\n- inviterReferralItem\n- inviteeReferralItem\n- rewardBundleItems\n- pendingRewardVouchers",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/rewards\/:id?include=space%2CcustomerRewards",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reward."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific reward, including any requested relationships."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Birthday Reward\",\n        \"description\": \"Special reward for customer birthdays\",\n        \"terms\": \"Valid for 30 days from issue\",\n        \"is_active\": true,\n        \"start_at\": \"2025-01-01T00:00:00.000000Z\",\n        \"end_at\": \"2025-12-31T23:59:59.000000Z\",\n        \"valid_days\": 30,\n        \"amount\": 1000,\n        \"allow_customer_self_reward\": false,\n        \"is_one_time_reward\": true,\n        \"is_direct_link_accessible\": false,\n        \"is_redeemable\": true,\n        \"is_custom_valid_days\": true,\n        \"is_limit_total_availability\": true,\n        \"total_availability\": 100,\n        \"total_redeemed\": 0,\n        \"cover\": \"gift\",\n        \"automations\": [],\n        \"notification_settings\": {\n            \"new_reward\": {\n                \"is_enabled\": true,\n                \"message\": \"You've received a birthday reward!\"\n            }\n        },\n        \"properties\": {\n            \"ivend\": {\n                \"enabled\": true,\n                \"type\": \"amount\",\n                \"amount\": 10\n            }\n        },\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/rewards\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/rewards\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reward."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Birthday Reward\",\"description\":\"Special reward for customer birthdays\",\"terms\":\"Valid for 30 days from issue\",\"space_id\":1,\"is_active\":true,\"start_at\":\"2025-01-01\",\"end_at\":\"2025-12-31\",\"is_redeemable\":true,\"is_custom_valid_days\":true,\"valid_days\":30,\"amount\":1000,\"point_is_active\":true,\"credit_is_active\":true,\"credit_amount\":\"10.50\",\"credit_earn_point\":false,\"allow_customer_self_reward\":true,\"is_one_time_reward\":true,\"is_direct_link_accessible\":false,\"is_limit_total_availability\":true,\"total_availability\":100,\"cover\":\"gift\",\"notification_settings\":{\"new_reward\":{\"is_enabled\":false,\"message\":\"laboriosam\"},\"expired_reward\":{\"is_enabled\":true,\"message\":\"Hi @{{NAME}}, your reward has expired.\"},\"expiring_reward\":{\"is_enabled\":true,\"message\":\"Hi @{{NAME}}, your reward will expire soon!\",\"send_notification_before\":\"7\"}}}"
                        },
                        "description": "Updates an existing reward's information. <br>\nAll fields are optional."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Birthday Reward\",\n        \"description\": \"Special reward for customer birthdays\",\n        \"terms\": \"Valid for 30 days from issue\",\n        \"is_active\": true,\n        \"start_at\": \"2025-01-01T00:00:00.000000Z\",\n        \"end_at\": \"2025-12-31T23:59:59.000000Z\",\n        \"valid_days\": 30,\n        \"amount\": 1000,\n        \"allow_customer_self_reward\": false,\n        \"is_one_time_reward\": true,\n        \"is_direct_link_accessible\": false,\n        \"is_redeemable\": true,\n        \"is_custom_valid_days\": true,\n        \"is_limit_total_availability\": true,\n        \"total_availability\": 100,\n        \"total_redeemed\": 0,\n        \"cover\": \"gift\",\n        \"automations\": [],\n        \"notification_settings\": {\n            \"new_reward\": {\n                \"is_enabled\": true,\n                \"message\": \"You've received a birthday reward!\"\n            }\n        },\n        \"properties\": {\n            \"ivend\": {\n                \"enabled\": true,\n                \"type\": \"amount\",\n                \"amount\": 10\n            }\n        },\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    },\n    \"message\": \"Reward updated successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"name\": [\"The name field is required.\"],\n        \"space_id\": [\"The selected space id is invalid.\"],\n        \"amount\": [\"The amount must be at least 0.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Reward",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/rewards\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/rewards\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reward."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Deletes a reward from the system. <br>\nOnly rewards that haven't been assigned to any customers can be deleted."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": "No Content"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"Cannot delete reward that has been assigned to customers\"\n}",
                            "name": "Cannot Delete"
                        }
                    ]
                },
                {
                    "name": "Reward Voucher",
                    "description": "Third-party reward vouchers allow businesses to integrate external voucher codes (like e-commerce platform vouchers)\ninto their loyalty program. These vouchers can be imported in bulk, managed within the system, and distributed to customers as rewards.\nEach voucher has a unique code and can be tracked through various states including available, used, expired, and pending.\nThis feature enables seamless integration of external reward partnerships while maintaining full tracking and validation capabilities.",
                    "item": [
                        {
                            "name": "List reward vouchers",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "10",
                                            "description": "The ID of the reward."
                                        }
                                    ]
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"status\":\"Active\",\"search\":\"REWARD123\",\"page\":1,\"per_page\":15}"
                                },
                                "description": "Get a paginated list of vouchers for a specific reward."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"data\": [\n    {\n      \"id\": 1,\n      \"code\": \"REWARD123\",\n      \"status\": \"available\",\n      \"expired_at\": \"2024-12-31T23:59:59Z\",\n      \"given_at\": null,\n      \"used_at\": null,\n      \"customer_reward\": {\n        \"customer\": {\n          \"id\": 1,\n          \"name\": \"John Doe\",\n          \"phone_number\": \"+1234567890\"\n        }\n      }\n    }\n  ],\n  \"links\": {\n     \"first\": \"@{{$baseUrl}}\/api\/rewards\/@{{reward_id}}\/vouchers?page=1\",\n     \"last\": \"@{{$baseUrl}}\/api\/rewards\/@{{reward_id}}\/vouchers?page=1\",\n     \"prev\": null,\n     \"next\": null\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"last_page\": 1,\n    \"per_page\": 15,\n    \"total\": 1\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n   \"message\": \"Record not found.\"\n }",
                                    "name": "Record not found"
                                }
                            ]
                        },
                        {
                            "name": "Create reward voucher",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "2",
                                            "description": "The ID of the reward."
                                        }
                                    ]
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"code\":\"REWARD123XYZ\",\"expired_at\":\"2024-12-31T23:59:59Z\"}"
                                },
                                "description": "Creates a reward voucher for a specific reward. The voucher is initially created\nin a pending status, which means it has been generated but not yet assigned.\nThe voucher will remain in this state until it is given to a recipient\nor further processed."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"id\": 1,\n  \"code\": \"REWARD123\",\n  \"status\": \"available\",\n  \"expired_at\": \"2024-12-31T23:59:59Z\",\n  \"given_at\": null,\n  \"used_at\": null\n}",
                                    "name": ""
                                }
                            ]
                        },
                        {
                            "name": "Show reward voucher details",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers\/:id",
                                    "query": [
                                        {
                                            "key": "include",
                                            "value": "customerReward%2Creward",
                                            "description": "Optional related resources to include.\nPossible values: customerReward, customerReward.customer, reward",
                                            "disabled": false
                                        }
                                    ],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers\/:id?include=customerReward%2Creward",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "1",
                                            "description": "The unique identifier of the reward."
                                        },
                                        {
                                            "id": "id",
                                            "key": "id",
                                            "value": "42",
                                            "description": "The unique identifier of the voucher."
                                        }
                                    ]
                                },
                                "method": "GET",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Retrieve detailed information about a specific reward voucher.\nThis endpoint allows fetching a single voucher with optional related resources."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"id\": 1,\n  \"code\": \"REWARD123\",\n  \"status\": \"available\",\n  \"expired_at\": \"2024-12-31T23:59:59Z\",\n  \"given_at\": null,\n  \"used_at\": null,\n  \"customer_reward\": {\n    \"id\": 12,\n    \"status\": \"pending\"\n  },\n  \"reward\": {\n    \"id\": 1,\n    \"name\": \"Loyalty Discount\",\n    \"description\": \"10% off next purchase\"\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n  \"message\": \"Record not found.\"\n}",
                                    "name": "Record not found"
                                }
                            ]
                        },
                        {
                            "name": "Update reward voucher status",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers\/:id",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers\/:id",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "20",
                                            "description": "The ID of the reward."
                                        },
                                        {
                                            "id": "id",
                                            "key": "id",
                                            "value": "5",
                                            "description": "The ID of the voucher."
                                        }
                                    ]
                                },
                                "method": "PUT",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"status\":\"used\"}"
                                },
                                "description": "Update the status of a specific voucher."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 200,
                                    "body": "{\n  \"id\": 1,\n  \"code\": \"REWARD123\",\n  \"status\": \"used\",\n  \"expired_at\": \"2024-12-31T23:59:59Z\",\n  \"given_at\": \"2024-02-09T10:00:00Z\",\n  \"used_at\": \"2024-02-09T12:00:00Z\"\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n   \"message\": \"Record not found.\"\n }",
                                    "name": "Record not found"
                                }
                            ]
                        },
                        {
                            "name": "Delete reward voucher",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers\/:id",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers\/:id",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "9",
                                            "description": "The ID of the reward."
                                        },
                                        {
                                            "id": "id",
                                            "key": "id",
                                            "value": "20",
                                            "description": "The ID of the voucher."
                                        }
                                    ]
                                },
                                "method": "DELETE",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": null,
                                "description": "Delete a specific voucher."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 204,
                                    "body": "{}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n   \"message\": \"Record not found.\"\n }",
                                    "name": "Record not found"
                                }
                            ]
                        },
                        {
                            "name": "Bulk Update Reward Vouchers",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers\/bulk-update",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers\/bulk-update",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "1",
                                            "description": "The ID of the reward these vouchers belong to."
                                        }
                                    ]
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"voucher_codes\":[\"REWARD123\"],\"voucher_ids\":[1],\"status\":\"Used\"}"
                                },
                                "description": "Updates the status of multiple reward vouchers asynchronously. The operation is queued as a background job\nand processed in chunks of 100 records. This endpoint is rate limited to 10 requests per minute."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 202,
                                    "body": "{\n  \"message\": \"Bulk voucher update has been queued and will be processed shortly\",\n  \"updated_count\": 3\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n   \"message\": \"Record not found.\"\n }",
                                    "name": "Record not found"
                                },
                                {
                                    "header": [],
                                    "code": 422,
                                    "body": "{\n  \"message\": \"Validation failed\",\n  \"errors\": {\n    \"voucher_codes\": [\"Either voucher_codes or voucher_ids must be provided.\"]\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 429,
                                    "body": "{\n   \"message\": \"Too Many Attempts.\"\n}",
                                    "name": "Too Many Requests"
                                }
                            ]
                        },
                        {
                            "name": "Bulk import vouchers",
                            "request": {
                                "url": {
                                    "host": "{{baseUrl}}",
                                    "path": "api\/rewards\/:reward_id\/vouchers\/bulk-import",
                                    "query": [],
                                    "raw": "{{baseUrl}}\/api\/rewards\/:reward_id\/vouchers\/bulk-import",
                                    "variable": [
                                        {
                                            "id": "reward_id",
                                            "key": "reward_id",
                                            "value": "2",
                                            "description": "The ID of the reward."
                                        }
                                    ]
                                },
                                "method": "POST",
                                "header": [
                                    {
                                        "key": "Content-Type",
                                        "value": "application\/json"
                                    },
                                    {
                                        "key": "Accept",
                                        "value": "application\/json"
                                    }
                                ],
                                "body": {
                                    "mode": "raw",
                                    "raw": "{\"vouchers\":[{\"code\":\"REWARD123\",\"expired_at\":\"2024-12-31T23:59:59Z\"}],\"auto_reassign\":false}"
                                },
                                "description": "Import multiple vouchers for a reward asynchronously. The operation is queued and processed in chunks of 100 records.\nLimited to 10,000 vouchers per request and rate limited to 10 requests per minute."
                            },
                            "response": [
                                {
                                    "header": [],
                                    "code": 202,
                                    "body": "{\n  \"message\": \"Bulk voucher import has been queued and will be processed shortly\"\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 404,
                                    "body": "{\n   \"message\": \"Record not found.\"\n}",
                                    "name": "Record not found"
                                },
                                {
                                    "header": [],
                                    "code": 422,
                                    "body": "{\n  \"message\": \"The given data was invalid.\",\n  \"errors\": {\n    \"vouchers\": [\"The vouchers must not have more than 10000 items.\"],\n    \"vouchers.*.code\": [\"The vouchers.0.expired_at has already been taken.\"],\n    \"vouchers.*.expired_at\": [\"The vouchers.0.expired_at must be a date after now.\"]\n  }\n}",
                                    "name": ""
                                },
                                {
                                    "header": [],
                                    "code": 429,
                                    "body": "{\n   \"message\": \"Too Many Attempts.\"\n}",
                                    "name": "Too Many Requests"
                                }
                            ]
                        }
                    ]
                }
            ]
        },
        {
            "name": "Roles",
            "description": "",
            "item": [
                {
                    "name": "List Roles",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/roles",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Admin",
                                    "description": "Filter by role name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-id",
                                    "description": "Sort field. Allowed: id, name, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/roles?filter%5Bname%5D=Admin&sort=-id&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of all available roles."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Super Admin\",\n            \"guard_name\": \"web\",\n            \"created_at\": \"2024-01-01T00:00:00.000000Z\",\n            \"updated_at\": \"2024-01-01T00:00:00.000000Z\"\n        }\n    ],\n    \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n    \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show Role",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/roles\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/roles\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The role 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\": 1, \"name\": \"Admin\", \"guard_name\": \"web\" } }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{ \"message\": \"No query results for model [Role] 1\" }",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Spaces",
            "description": "",
            "item": [
                {
                    "name": "List Spaces",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/spaces",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "category%2Caddress",
                                    "description": "Comma-separated list of relationships to include.\nAvailable relationships:\n- category (Space category details)\n- address (Physical address details)",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bvisibility%5D",
                                    "value": "public",
                                    "description": "Filter by visibility status.\nAvailable options:\n- public (Listed and viewable by anyone)\n- private (Not listed, viewable with link)\n- hidden (Not listed, cannot be searched)\n- draft (Not listed, cannot be searched)",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcategory_id%5D",
                                    "value": "1",
                                    "description": "Filter by category ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Coworking",
                                    "description": "Filter by space name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bdescription%5D",
                                    "value": "modern",
                                    "description": "Filter by space description (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bemail%5D",
                                    "value": "space%40example.com",
                                    "description": "Filter by space email (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Borganisation_id%5D",
                                    "value": "1",
                                    "description": "Filter by organisation ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bhas_posts%5D",
                                    "value": "1",
                                    "description": "Filter spaces that have posts.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-visits",
                                    "description": "Sort field and direction.\nAvailable fields:\n- name (Sort by space name)\n- created_at (Sort by creation date)\n- updated_at (Sort by last update)\n- visits (Sort by number of visits)\nDefault: -created_at",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page. Default: 15.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/spaces?include=category%2Caddress&filter%5Bvisibility%5D=public&filter%5Bcategory_id%5D=1&filter%5Bname%5D=Coworking&filter%5Bdescription%5D=modern&filter%5Bemail%5D=space%40example.com&filter%5Borganisation_id%5D=1&filter%5Bhas_posts%5D=1&sort=-visits&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of spaces belonging to the authenticated user's organisation. <br>\nSupports filtering, sorting and relationship inclusion through query parameters. <br>"
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n      {\n        \"id\": 1,\n        \"uuid\": \"f2d75bf6-3cb8-305c-8f70-f71fe697cba3\",\n        \"name\": \"Modern Coworking Space\",\n        \"slug\": \"modern-coworking-space\",\n        \"matterport_model_id\": null,\n        \"description\": \"A modern coworking space in the heart of the city\",\n        \"visibility\": \"public\",\n        \"email\": \"space@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"website\": \"@{{$baseUrl}}\/spaces\/modern-coworking\",\n        \"social_media\": [\n          {\n            \"name\": \"Twitter\",\n            \"username\": \"@modernspace\"\n          },\n          {\n            \"name\": \"Facebook\",\n            \"username\": \"modernspacekl\"\n          }\n        ],\n        \"organisation_id\": 1,\n        \"category_id\": 2,\n        \"visits\": 1250,\n        \"created_at\": \"2024-01-15T08:00:00Z\",\n        \"updated_at\": \"2024-02-08T14:30:00Z\",\n        \"deleted_at\": null,\n        \"address\": {\n          \"id\": 1,\n          \"address_line_1\": \"123 Jalan Sultan Ismail\",\n          \"address_line_2\": \"Level 23\",\n          \"postal_code\": \"50250\",\n          \"city\": \"Kuala Lumpur\",\n          \"state\": \"Wilayah Persekutuan\",\n          \"country\": \"Malaysia\"\n        },\n        \"category\": {\n          \"id\": 2,\n          \"name\": \"Coworking Space\",\n          \"slug\": \"coworking-space\"\n        },\n        \"links\": {\n          \"public_url\": \"@{{$baseUrl}}\/spaces\/modern-coworking-space\"\n        }\n      },\n      {\n        \"id\": 2,\n        \"name\": \"Creative Studio\",\n        \"slug\": \"creative-studio\",\n        \"matterport_model_id\": \"abc123xyz\",\n        \"description\": \"A creative studio space perfect for photographers and content creators\",\n        \"visibility\": \"public\",\n        \"email\": \"studio@example.com\",\n        \"phone_number\": \"+60123456790\",\n        \"website\": \"@{{$baseUrl}}\/spaces\/creative-studio\",\n        \"social_media\": [\n          {\n            \"name\": \"Instagram\",\n            \"username\": \"@creativestudiomy\"\n          }\n        ],\n        \"organisation_id\": 1,\n        \"category_id\": 3,\n        \"visits\": 890,\n        \"created_at\": \"2024-01-20T10:00:00Z\",\n        \"updated_at\": \"2024-02-07T16:45:00Z\",\n        \"deleted_at\": null,\n        \"address\": {\n          \"id\": 2,\n          \"address_line_1\": \"45 Jalan Telawi\",\n          \"address_line_2\": null,\n          \"postal_code\": \"59100\",\n          \"city\": \"Bangsar\",\n          \"state\": \"Kuala Lumpur\",\n          \"country\": \"Malaysia\"\n        },\n        \"category\": {\n          \"id\": 3,\n          \"name\": \"Studio Space\",\n          \"slug\": \"studio-space\"\n        },\n        \"links\": {\n          \"public_url\": \"@{{$baseUrl}}\/spaces\/creative-studio\"\n        }\n      }\n    ],\n    \"links\": {\n      \"first\": \"@{{$baseUrl}}\/api\/v1\/spaces?page=1\",\n      \"last\": \"@{{$baseUrl}}\/api\/v1\/spaces?page=5\",\n      \"prev\": null,\n      \"next\": \"@{{$baseUrl}}\/api\/v1\/spaces?page=2\"\n    },\n    \"meta\": {\n      \"current_page\": 1,\n      \"from\": 1,\n      \"last_page\": 5,\n      \"path\": \"@{{$baseUrl}}\/api\/v1\/spaces\",\n      \"per_page\": 15,\n      \"to\": 15,\n      \"total\": 68\n    }\n  }",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Space",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/spaces",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/spaces"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Modern Coworking Space\",\"description\":\"A modern coworking space in the heart of the city\",\"visibility\":\"Public\",\"email\":\"space@example.com\",\"phone_number\":\"+60123456789\",\"website\":\"@{{$baseUrl}}\",\"category_id\":1,\"social_media\":[\"qui\"],\"address\":[\"aliquam\"],\"tags\":[\"Coworking\",\"24\\\/7\"],\"classification\":[\"Premium\",\"Featured\"]}"
                        },
                        "description": "Creates a new space in the system. <br>\nThe space will be associated with the authenticated user's organisation. <br>"
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n   \"data\": {\n     \"id\": 1,\n     \"uuid\": \"f2d75bf6-3cb8-305c-8f70-f71fe697cba3\",\n     \"name\": \"Modern Coworking Space\",\n     \"slug\": \"modern-coworking-space\",\n     \"matterport_model_id\": null,\n     \"description\": \"A modern coworking space in the heart of the city offering flexible workspace solutions for professionals and teams\",\n     \"visibility\": \"public\",\n     \"email\": \"space@example.com\",\n     \"phone_number\": \"+60123456789\",\n     \"website\": \"https:\/\/pixalink.io\/spaces\/modern-coworking\",\n     \"social_media\": [\n       {\n         \"name\": \"Twitter\",\n         \"username\": \"@modernspace\"\n       },\n       {\n         \"name\": \"Facebook\",\n         \"username\": \"modernspacekl\"\n       },\n       {\n         \"name\": \"Instagram\",\n         \"username\": \"@modernspace.kl\"\n       }\n     ],\n     \"organisation_id\": 1,\n     \"category_id\": 2,\n     \"visits\": 0,\n     \"created_at\": \"2024-02-08T15:00:00Z\",\n     \"updated_at\": \"2024-02-08T15:00:00Z\",\n     \"deleted_at\": null,\n     \"address\": {\n       \"id\": 1,\n       \"address_line_1\": \"123 Jalan Sultan Ismail\",\n       \"address_line_2\": \"Level 23\",\n       \"postal_code\": \"50250\",\n       \"city\": \"Kuala Lumpur\",\n       \"state\": \"Wilayah Persekutuan\",\n       \"country\": \"Malaysia\"\n     },\n     \"links\": {\n       \"public_url\": \"@{{$baseUrl}}\/spaces\/modern-coworking-space\"\n     }\n   }\n }",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n     \"name\": [\n       \"The name field is required.\"\n     ],\n     \"description\": [\n       \"The description field is required.\"\n     ],\n     \"visibility\": [\n       \"The visibility field is required.\",\n       \"The selected visibility is invalid.\"\n     ],\n     \"category_id\": [\n       \"The category id field is required.\",\n       \"The selected category id is invalid.\"\n     ],\n     \"address.address_line_1\": [\n       \"The address line 1 field is required.\"\n     ],\n     \"address.postal_code\": [\n       \"The postal code must be 5 digits.\"\n     ],\n     \"address.country\": [\n       \"The selected country is invalid.\"\n     ],\n     \"phone_number\": [\n       \"The phone number format is invalid.\"\n     ]\n   }",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Show Space Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/spaces\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "category%2Caddress",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- category\n- address\n- posts\n- widgets\n- activeWidgets\n- activeCalendars",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/spaces\/:id?include=category%2Caddress",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the space."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific space, including any requested relationships."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"uuid\": \"f2d75bf6-3cb8-305c-8f70-f71fe697cba3\",\n        \"name\": \"Modern Coworking Space\",\n        \"slug\": \"modern-coworking-space\",\n        \"matterport_model_id\": null,\n        \"description\": \"A modern coworking space in the heart of the city\",\n        \"visibility\": \"public\",\n        \"email\": \"space@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"website\": \"@{{$baseUrl}}\",\n        \"social_media\": [\n            {\n                \"name\": \"Twitter\",\n                \"username\": \"@modernspace\"\n            }\n        ],\n        \"tags\": [\"Coworking\", \"24\/7\"],\n        \"classification\": [\"Premium\", \"Featured\"],\n        \"category_id\": 1,\n        \"organisation_id\": 1,\n        \"visits\": 150,\n        \"created_at\": \"2024-02-02T12:00:00Z\",\n        \"updated_at\": \"2024-02-02T12:00:00Z\",\n        \"address\": {\n            \"id\": 1,\n            \"address_line_1\": \"123 Main Street\",\n            \"address_line_2\": \"Suite 45\",\n            \"postal_code\": \"50450\",\n            \"city\": \"Petaling Jaya\",\n            \"state\": \"Selangor\",\n            \"country\": \"Malaysia\"\n        },\n        \"media\": {\n            \"preview\": {\n                \"url\": \"@{{$baseUrl}}\/media\/preview.jpg\",\n                \"type\": \"image\"\n            },\n            \"featured_image\": {\n                \"url\": \"@{{$baseUrl}}\/media\/featured.jpg\"\n            },\n            \"gallery\": [\n                {\n                    \"url\": \"@{{$baseUrl}}\/media\/gallery1.jpg\"\n                }\n            ],\n            \"logo\": {\n                \"url\": \"@{{$baseUrl}}\/media\/logo.jpg\"\n            }\n        }\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Space",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/spaces\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/spaces\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the space."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Modern Coworking Space\",\"description\":\"A modern coworking space in the heart of the city\",\"visibility\":\"Public\",\"email\":\"space@example.com\",\"phone_number\":\"ipsum\",\"website\":\"@{{$baseUrl}}\",\"category_id\":1,\"social_media\":[\"amet\"],\"address\":[\"quasi\"],\"tags\":[\"Coworking\",\"24\\\/7\"],\"classification\":[\"Premium\",\"Featured\"]}"
                        },
                        "description": "Updates an existing space's information. <br> All fields are optional. <br>\nOmitted fields will retain their current values."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"uuid\": \"f2d75bf6-3cb8-305c-8f70-f71fe697cba3\",\n        \"name\": \"Modern Coworking Space\",\n        \"slug\": \"modern-coworking-space\",\n        \"matterport_model_id\": null,\n        \"description\": \"A modern coworking space in the heart of the city\",\n        \"visibility\": \"public\",\n        \"email\": \"space@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"website\": \"@{{$baseUrl}}\",\n        \"social_media\": [\n            {\n                \"name\": \"Twitter\",\n                \"username\": \"@modernspace\"\n            }\n        ],\n        \"tags\": [\"Coworking\", \"24\/7\"],\n        \"classification\": [\"Premium\", \"Featured\"],\n        \"category_id\": 1,\n        \"organisation_id\": 1,\n        \"visits\": 150,\n        \"created_at\": \"2024-02-02T12:00:00Z\",\n        \"updated_at\": \"2024-02-02T12:00:00Z\"\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"email\": [\"The email must be a valid email address.\"],\n        \"phone_number\": [\"The phone number must be a valid phone number.\"],\n        \"visibility\": [\"The selected visibility is invalid.\"],\n        \"address.country\": [\"The selected country is invalid. Only Malaysia and Singapore are allowed.\"],\n        \"media.preview\": [\"The preview must be an image file of type: png, jpg, jpeg, ico.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Space",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/spaces\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/spaces\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the space."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Deletes a space and all its associated data including:\n- Address\n- Media (preview, gallery, logo)\n- Tags and classifications\n- Widgets\n- Posts\n- POS integration settings"
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": "No Content"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n    \"message\": \"You are not authorized to delete this space\"\n}",
                            "name": "Not Authorized"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Transactions",
            "description": "",
            "item": [
                {
                    "name": "List Transactions",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/transactions",
                            "query": [
                                {
                                    "key": "filter%5Bcustomer_id%5D",
                                    "value": "1",
                                    "description": "Filter by customer ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Btype%5D",
                                    "value": "Purchase",
                                    "description": "Filter by transaction type. Available types:\n- Purchase: Points earned from purchases\n- Review: Points earned from reviews\n- Referral: Points earned from referrals\n- Point Reward Redeem: Points spent on reward redemption",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bamount%5D",
                                    "value": "%3E100",
                                    "description": "Filter by amount with operators (>, ",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcreated_at%5D",
                                    "value": "%3E2024-01-01",
                                    "description": "Filter by date with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bupdated_at%5D",
                                    "value": "%3E2024-01-01",
                                    "description": "Filter by updated date with operators.",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field (created_at, amount). Use -field for descending.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "customer%2Creward%2CcustomerRewards",
                                    "description": "Include relationships (customer, reward, space, customerRewards).",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/transactions?filter%5Bcustomer_id%5D=1&filter%5Btype%5D=Purchase&filter%5Bspace_id%5D=1&filter%5Bamount%5D=%3E100&filter%5Bcreated_at%5D=%3E2024-01-01&filter%5Bupdated_at%5D=%3E2024-01-01&sort=-created_at&include=customer%2Creward%2CcustomerRewards&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a paginated list of transactions for the organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n     \"data\": [\n         {\n             \"id\": 1,\n             \"amount\": 1000,\n             \"valid_amount\": 1000,\n             \"operation\": \"+\",\n             \"type\": \"Purchase\",\n             \"remarks\": \"Purchase at Store #123\",\n             \"customer_id\": 1,\n             \"space_id\": 1,\n             \"reward_id\": null,\n             \"custom_properties\": {\n                 \"purchase_amount\": 1000,\n                 \"receipt_number\": \"R12345\"\n             },\n             \"expired_at\": \"2024-02-10T23:59:59.000000Z\",\n             \"created_at\": \"2024-02-09T10:00:00.000000Z\",\n             \"updated_at\": \"2024-02-09T10:00:00.000000Z\",\n             \"customer\": {\n                 \"id\": 1,\n                 \"name\": \"John Smith\",\n                 \"email\": \"john.smith@example.com\",\n                 \"phone_number\": \"+60123456789\",\n                 \"current_point\": 2500,\n                 \"current_credits\": 150\n             }\n         },\n         {\n             \"id\": 2,\n             \"amount\": 500,\n             \"valid_amount\": 500,\n             \"operation\": \"-\",\n             \"type\": \"Point_Reward_Redeem\",\n             \"remarks\": \"Reward: Free Coffee\",\n             \"customer_id\": 1,\n             \"space_id\": 1,\n             \"reward_id\": 5,\n             \"custom_properties\": null,\n             \"expired_at\": null,\n             \"created_at\": \"2024-02-08T15:30:00.000000Z\",\n             \"updated_at\": \"2024-02-08T15:30:00.000000Z\",\n             \"reward\": {\n                 \"id\": 5,\n                 \"name\": \"Free Coffee\",\n                 \"amount\": 500,\n                 \"description\": \"Redeem a free coffee at any of our locations\"\n             },\n             \"customerRewards\": [\n                 {\n                     \"id\": 1,\n                     \"status\": \"Used\",\n                     \"code\": null,\n                     \"expired_at\": \"2024-02-08T15:30:00.000000Z\",\n                     \"used_at\": \"2024-02-08T15:30:00.000000Z\",\n                     \"customer_id\": 1,\n                     \"reward_id\": 5\n                 }\n             ]\n         }\n     ],\n     \"links\": {\n         \"first\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=1\",\n         \"last\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=5\",\n         \"prev\": null,\n         \"next\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=2\"\n     },\n     \"meta\": {\n         \"current_page\": 1,\n         \"from\": 1,\n         \"last_page\": 5,\n         \"links\": [\n             {\n                 \"url\": null,\n                 \"label\": \"&laquo; Previous\",\n                 \"active\": false\n             },\n             {\n                 \"url\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=1\",\n                 \"label\": \"1\",\n                 \"active\": true\n             },\n             {\n                 \"url\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=2\",\n                 \"label\": \"2\",\n                 \"active\": false\n             }\n         ],\n         \"path\": \"@{{$baseUrl}}\/api\/v1\/transactions\",\n         \"per_page\": 15,\n         \"to\": 15,\n         \"total\": 68\n     }\n }",
                            "name": "List of transactions"
                        },
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n     \"data\": [],\n     \"links\": {\n         \"first\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=1\",\n         \"last\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=1\",\n         \"prev\": null,\n         \"next\": null\n     },\n     \"meta\": {\n         \"current_page\": 1,\n         \"from\": null,\n         \"last_page\": 1,\n         \"links\": [\n             {\n                 \"url\": null,\n                 \"label\": \"&laquo; Previous\",\n                 \"active\": false\n             },\n             {\n                 \"url\": \"@{{$baseUrl}}\/api\/v1\/transactions?page=1\",\n                 \"label\": \"1\",\n                 \"active\": true\n             }\n         ],\n         \"path\": \"@{{$baseUrl}}\/api\/v1\/transactions\",\n         \"per_page\": 15,\n         \"to\": null,\n         \"total\": 0\n     }\n }",
                            "name": "No transactions found"
                        }
                    ]
                },
                {
                    "name": "Create Transaction",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/transactions",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/transactions"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_id\":1,\"phone_number\":\"+60123456789\",\"amount\":1000,\"space_id\":1,\"remarks\":\"Purchase at Store #123\",\"custom_properties\":[],\"customer_reward_ids\":[1,2,3]}"
                        },
                        "description": "Creates a new transaction record for tracking customer points\/rewards. If no existing customer is found,\na new customer will be automatically created with the provided phone number.\nKey features:\n- Points are multiplied by the customer's tier multiplier if applicable\n- Points may expire based on organisation settings\n- Handles referral tracking and rewards\n- Sends notifications if enabled in organisation settings\n- Can mark linked customer rewards as used during transaction"
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"amount\": 1000,\n        \"valid_amount\": 1000,\n        \"operation\": \"+\",\n        \"type\": \"Purchase\",\n        \"remarks\": \"Purchase at Store #123\",\n        \"customer_id\": 1,\n        \"space_id\": 1,\n        \"expired_at\": \"2024-02-10T23:59:59.000000Z\",\n        \"created_at\": \"2024-02-09T10:00:00.000000Z\",\n        \"updated_at\": \"2024-02-09T10:00:00.000000Z\",\n        \"customer_rewards\": [\n            {\n                \"id\": 1,\n                \"customer_id\": 1,\n                \"reward_id\": 5,\n                \"status\": \"Used\",\n                \"code\": \"REWARD123\",\n                \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n                \"used_at\": \"2024-02-09T10:00:00.000000Z\"\n            },\n            {\n                \"id\": 2,\n                \"customer_id\": 1,\n                \"reward_id\": 6,\n                \"status\": \"Used\",\n                \"code\": \"REWARD456\",\n                \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n                \"used_at\": \"2024-02-09T10:00:00.000000Z\"\n            }\n        ]\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"customer_id\": [\"The customer id field is required when phone number is not present.\"],\n        \"phone_number\": [\"The phone number field is required when customer id is not present.\"]\n    }\n}",
                            "name": "Validation Error"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"customer_reward_ids.0\": [\"One or more of the selected customer rewards are invalid, used, or expired.\"]\n    }\n}",
                            "name": "Invalid Customer Rewards"
                        }
                    ]
                },
                {
                    "name": "Get Transaction Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/transactions\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "customer%2Creward%2CcustomerRewards",
                                    "description": "Relationships to include (customer, reward, space, customerRewards).",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/transactions\/:id?include=customer%2Creward%2CcustomerRewards",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the transaction."
                                },
                                {
                                    "id": "transaction",
                                    "key": "transaction",
                                    "value": "1",
                                    "description": "The ID of the transaction."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieve detailed information about a specific transaction."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"data\": {\n    \"id\": 1,\n    \"amount\": 1000,\n    \"valid_amount\": 1000,\n    \"operation\": \"+\",\n    \"type\": \"Purchase\",\n    \"remarks\": \"Purchase at Store #123\",\n    \"customer_id\": 1,\n    \"space_id\": 1,\n    \"reward_id\": null,\n    \"expired_at\": \"2024-12-31T23:59:59.000000Z\",\n    \"created_at\": \"2024-02-09T10:00:00.000000Z\",\n    \"updated_at\": \"2024-02-09T10:00:00.000000Z\"\n  }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{ \"message\": \"Record not found.\" }",
                            "name": "Not found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Users",
            "description": "",
            "item": [
                {
                    "name": "List Users",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/users",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Alice",
                                    "description": "Filter by user name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bemail%5D",
                                    "value": "alice%40example.com",
                                    "description": "Filter by email (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-id",
                                    "description": "Sort field. Allowed: id, name, created_at.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/users?filter%5Bname%5D=Alice&filter%5Bemail%5D=alice%40example.com&sort=-id&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of users belonging to the authenticated user's organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Alice Tan\",\n            \"email\": \"alice@acme.com\",\n            \"organisation_id\": 1,\n            \"roles\": [\"Super Admin\"],\n            \"last_login_at\": \"2024-06-01T08:00:00.000000Z\",\n            \"created_at\": \"2024-01-01T00:00:00.000000Z\",\n            \"updated_at\": \"2024-01-01T00:00:00.000000Z\"\n        }\n    ],\n    \"links\": { \"first\": \"...\", \"last\": \"...\", \"prev\": null, \"next\": null },\n    \"meta\": { \"current_page\": 1, \"from\": 1, \"last_page\": 1, \"per_page\": 15, \"to\": 1, \"total\": 1 }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Show User",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/users\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/users\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The user 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\": 1, \"name\": \"Alice\", \"email\": \"alice@example.com\" } }",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{ \"message\": \"This action is unauthorized.\" }",
                            "name": "Forbidden"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Calendars",
            "description": "",
            "item": [
                {
                    "name": "List Calendars",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/calendars",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "space%2Creservations",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- space\n- reservations",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bspace_id%5D",
                                    "value": "1",
                                    "description": "Filter by space ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bis_active%5D",
                                    "value": "1",
                                    "description": "Filter by active status.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bvisibility%5D",
                                    "value": "Public",
                                    "description": "Filter by visibility. Must be one of: Public, Private.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Meeting+Room",
                                    "description": "Filter by calendar name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-created_at",
                                    "description": "Sort field and direction. Note: Prefix with `-` for descending order.\nAvailable sort fields:\n- name\n- created_at\n- updated_at",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page. Defaults to 15.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/calendars?include=space%2Creservations&filter%5Bspace_id%5D=1&filter%5Bis_active%5D=1&filter%5Bvisibility%5D=Public&filter%5Bname%5D=Meeting+Room&sort=-created_at&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of calendars belonging to the authenticated user's organisation spaces.<br>\nSupports filtering, sorting and relationship inclusion through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": [\n        {\n            \"id\": 1,\n            \"name\": \"Meeting Room A\",\n            \"slug\": \"meeting-room-a\",\n            \"description\": \"Large meeting room for up to 20 people\",\n            \"is_active\": true,\n            \"space_id\": 1,\n            \"visibility\": \"Public\",\n            \"min_capacity\": 1,\n            \"max_capacity\": 20,\n            \"is_required_approval\": false,\n            \"is_auto_approval\": true,\n            \"cancel_before_minutes\": 60,\n            \"book_before_minutes\": 30,\n            \"reminder_minutes\": 15,\n            \"crm_auto_import\": true,\n            \"is_unavailable_timeslots_visible\": false,\n            \"is_qr_code_visible\": true,\n            \"default_timeslots\": [\n                {\n                    \"start_time\": \"09:00\",\n                    \"end_time\": \"10:00\",\n                    \"days\": [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n                }\n            ],\n            \"block_dates\": [],\n            \"notification_settings\": {\n                \"new_reservation\": {\n                    \"enabled\": true,\n                    \"message\": \"Your reservation has been confirmed\"\n                }\n            },\n            \"custom_properties\": {},\n            \"channels\": [\"WhatsApp\", \"Sms\"],\n            \"terms\": \"Please arrive 5 minutes before your scheduled time\",\n            \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n            \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n        }\n    ],\n    \"links\": {\n        \"first\": \"@{{$baseUrl}}\/api\/calendars?page=1\",\n        \"last\": \"@{{$baseUrl}}\/api\/calendars?page=1\",\n        \"prev\": null,\n        \"next\": null\n    },\n    \"meta\": {\n        \"current_page\": 1,\n        \"from\": 1,\n        \"last_page\": 1,\n        \"path\": \"@{{$baseUrl}}\/api\/calendars\",\n        \"per_page\": 15,\n        \"to\": 1,\n        \"total\": 1\n    }\n}",
                            "name": "Success"
                        }
                    ]
                },
                {
                    "name": "Create Calendar",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/calendars",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/calendars"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Meeting Room A\",\"slug\":\"meeting-room-a\",\"description\":\"Large meeting room for up to 20 people\",\"space_id\":1,\"is_active\":true,\"visibility\":\"Public\",\"min_capacity\":1,\"max_capacity\":20,\"is_required_approval\":false,\"is_auto_approval\":true,\"cancel_before_minutes\":60,\"book_before_minutes\":30,\"is_max_advance_booking_enabled\":false,\"max_advance_booking_days\":30,\"reminder_minutes\":15,\"crm_auto_import\":true,\"is_unavailable_timeslots_visible\":false,\"is_qr_code_visible\":true,\"default_timeslots\":[\"eos\"],\"block_dates\":[\"autem\"],\"notification_settings\":{\"new_reservation\":{\"enabled\":true,\"message\":\"Your reservation has been confirmed\"}},\"custom_properties\":[],\"channels\":[\"WhatsApp\",\"Sms\"],\"terms\":\"Please arrive 5 minutes before your scheduled time\"}"
                        },
                        "description": "Creates a new calendar in the system. <br>\nThe calendar will be associated with the specified space in the authenticated user's organisation."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Meeting Room A\",\n        \"slug\": \"meeting-room-a\",\n        \"description\": \"Large meeting room for up to 20 people\",\n        \"is_active\": true,\n        \"space_id\": 1,\n        \"visibility\": \"Public\",\n        \"min_capacity\": 1,\n        \"max_capacity\": 20,\n        \"is_required_approval\": false,\n        \"is_auto_approval\": true,\n        \"cancel_before_minutes\": 60,\n        \"book_before_minutes\": 30,\n        \"reminder_minutes\": 15,\n        \"crm_auto_import\": true,\n        \"is_unavailable_timeslots_visible\": false,\n        \"is_qr_code_visible\": true,\n        \"default_timeslots\": [\n            {\n                \"start_time\": \"09:00\",\n                \"end_time\": \"10:00\",\n                \"days\": [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n            }\n        ],\n        \"block_dates\": [],\n        \"notification_settings\": {\n            \"new_reservation\": {\n                \"enabled\": true,\n                \"message\": \"Your reservation has been confirmed\"\n            }\n        },\n        \"custom_properties\": {},\n        \"channels\": [\"WhatsApp\", \"Sms\"],\n        \"terms\": \"Please arrive 5 minutes before your scheduled time\",\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    },\n    \"message\": \"Calendar created successfully\"\n}",
                            "name": "Created successfully"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"name\": [\"The name field is required.\"],\n        \"space_id\": [\"The selected space id is invalid.\"],\n        \"max_capacity\": [\"The max capacity must be greater than min capacity.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Show Calendar Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/calendars\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "space%2Creservations",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- space\n- reservations",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/calendars\/:id?include=space%2Creservations",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the calendar."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific calendar, including any requested relationships."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Meeting Room A\",\n        \"slug\": \"meeting-room-a\",\n        \"description\": \"Large meeting room for up to 20 people\",\n        \"is_active\": true,\n        \"space_id\": 1,\n        \"visibility\": \"Public\",\n        \"min_capacity\": 1,\n        \"max_capacity\": 20,\n        \"is_required_approval\": false,\n        \"is_auto_approval\": true,\n        \"cancel_before_minutes\": 60,\n        \"book_before_minutes\": 30,\n        \"reminder_minutes\": 15,\n        \"crm_auto_import\": true,\n        \"is_unavailable_timeslots_visible\": false,\n        \"is_qr_code_visible\": true,\n        \"default_timeslots\": [\n            {\n                \"start_time\": \"09:00\",\n                \"end_time\": \"10:00\",\n                \"days\": [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n            }\n        ],\n        \"block_dates\": [],\n        \"notification_settings\": {\n            \"new_reservation\": {\n                \"enabled\": true,\n                \"message\": \"Your reservation has been confirmed\"\n            }\n        },\n        \"custom_properties\": {},\n        \"channels\": [\"WhatsApp\", \"Sms\"],\n        \"terms\": \"Please arrive 5 minutes before your scheduled time\",\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Calendar",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/calendars\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/calendars\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the calendar."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"name\":\"Meeting Room A\",\"slug\":\"meeting-room-a\",\"description\":\"Large meeting room for up to 20 people\",\"space_id\":1,\"is_active\":true,\"visibility\":\"Public\",\"min_capacity\":1,\"max_capacity\":20,\"is_required_approval\":false,\"is_auto_approval\":true,\"cancel_before_minutes\":60,\"book_before_minutes\":30,\"is_max_advance_booking_enabled\":false,\"max_advance_booking_days\":30,\"reminder_minutes\":15,\"crm_auto_import\":true,\"is_unavailable_timeslots_visible\":false,\"is_qr_code_visible\":true,\"default_timeslots\":[\"et\"],\"block_dates\":[\"deleniti\"],\"notification_settings\":{\"new_reservation\":{\"enabled\":true,\"message\":\"Your reservation has been confirmed.\"}},\"custom_properties\":[],\"channels\":[\"WhatsApp\",\"Sms\"],\"terms\":\"Please arrive 5 minutes before your scheduled time\"}"
                        },
                        "description": "Updates an existing calendar's information. <br>\nAll fields are optional."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"name\": \"Meeting Room A\",\n        \"slug\": \"meeting-room-a\",\n        \"description\": \"Large meeting room for up to 20 people\",\n        \"is_active\": true,\n        \"space_id\": 1,\n        \"visibility\": \"Public\",\n        \"min_capacity\": 1,\n        \"max_capacity\": 20,\n        \"is_required_approval\": false,\n        \"is_auto_approval\": true,\n        \"cancel_before_minutes\": 60,\n        \"book_before_minutes\": 30,\n        \"reminder_minutes\": 15,\n        \"crm_auto_import\": true,\n        \"is_unavailable_timeslots_visible\": false,\n        \"is_qr_code_visible\": true,\n        \"default_timeslots\": [\n            {\n                \"start_time\": \"09:00\",\n                \"end_time\": \"10:00\",\n                \"days\": [\"monday\", \"tuesday\", \"wednesday\", \"thursday\", \"friday\"]\n            }\n        ],\n        \"block_dates\": [],\n        \"notification_settings\": {\n            \"new_reservation\": {\n                \"enabled\": true,\n                \"message\": \"Your reservation has been confirmed\"\n            }\n        },\n        \"custom_properties\": {},\n        \"channels\": [\"WhatsApp\", \"Sms\"],\n        \"terms\": \"Please arrive 5 minutes before your scheduled time\",\n        \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n        \"updated_at\": \"2025-01-31T21:16:49.000000Z\"\n    },\n    \"message\": \"Calendar updated successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"name\": [\"The name field is required.\"],\n        \"space_id\": [\"The selected space id is invalid.\"],\n        \"max_capacity\": [\"The max capacity must be greater than min capacity.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Calendar",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/calendars\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/calendars\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the calendar."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Deletes a calendar from the system. <br>\nOnly calendars without active reservations can be deleted."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 204,
                            "body": "{}",
                            "name": "No Content"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"Cannot delete calendar with active reservations\"\n}",
                            "name": "Cannot Delete"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Reservations",
            "description": "",
            "item": [
                {
                    "name": "List Reservations",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reservations",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "calendar%2Ccustomer",
                                    "description": "Comma-separated list of relationships to include:\n- calendar\n- customer\n- calendar.space",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcalendar_id%5D",
                                    "value": "1",
                                    "description": "Filter by calendar ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcustomer_id%5D",
                                    "value": "1",
                                    "description": "Filter by customer ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bstatus%5D",
                                    "value": "reserved",
                                    "description": "Filter by reservation status. Must be one of:\n- pending\n- rejected\n- reserved\n- cancelled\n- no_show",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bdate%5D",
                                    "value": "2024-01-01",
                                    "description": "Filter by reservation date. Use ISO 8601 format (YYYY-MM-DD).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bdate_from%5D",
                                    "value": "2024-01-01",
                                    "description": "Filter reservations from this date onwards (inclusive). Use ISO 8601 format (YYYY-MM-DD).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bdate_to%5D",
                                    "value": "2024-01-31",
                                    "description": "Filter reservations up to this date (inclusive). Use ISO 8601 format (YYYY-MM-DD).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "John",
                                    "description": "Filter by customer name (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bemail%5D",
                                    "value": "john%40example.com",
                                    "description": "Filter by customer email (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bphone_number%5D",
                                    "value": "%2B60123",
                                    "description": "Filter by customer phone number (partial match).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-date",
                                    "description": "Sort field and direction. Allowed fields: date, start_at, created_at, status, name.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/reservations?include=calendar%2Ccustomer&filter%5Bcalendar_id%5D=1&filter%5Bcustomer_id%5D=1&filter%5Bstatus%5D=reserved&filter%5Bdate%5D=2024-01-01&filter%5Bdate_from%5D=2024-01-01&filter%5Bdate_to%5D=2024-01-31&filter%5Bname%5D=John&filter%5Bemail%5D=john%40example.com&filter%5Bphone_number%5D=%2B60123&sort=-date&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Returns a paginated list of reservations belonging to the authenticated user's organisation.<br>\nResults can be filtered, sorted and include related data through query parameters."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n   \"data\": [\n     {\n       \"id\": 1,\n       \"ref_id\": \"RSV001234\",\n       \"date\": \"2024-03-15\",\n       \"start_at\": \"2024-03-15T14:30:00.000000Z\",\n       \"end_at\": \"2024-03-15T16:00:00.000000Z\",\n       \"name\": \"John Smith\",\n       \"email\": \"john.smith@example.com\",\n       \"phone_number\": \"+60123456789\",\n       \"number_of_guests\": 4,\n       \"status\": \"reserved\",\n       \"remarks\": \"Birthday celebration\",\n       \"custom_fields\": {\n         \"dietary_requirements\": \"Vegetarian\",\n         \"special_requests\": \"Window seat preferred\"\n       },\n       \"timeslot_id\": 5,\n       \"calendar_id\": 1,\n       \"customer_id\": 123,\n       \"reminder_sent_at\": \"2024-03-14T14:30:00.000000Z\",\n       \"rejection_reason\": null,\n       \"created_at\": \"2024-03-01T10:15:30.000000Z\",\n       \"updated_at\": \"2024-03-10T16:22:45.000000Z\",\n       \"calendar\": {\n         \"id\": 1,\n         \"name\": \"Restaurant Reservations\",\n         \"slug\": \"restaurant-reservations\",\n         \"description\": \"Main dining room reservations\",\n         \"is_active\": true,\n         \"space_id\": 1,\n         \"visibility\": \"public\",\n         \"min_capacity\": 1,\n         \"max_capacity\": 8,\n         \"is_required_approval\": true,\n         \"is_auto_approval\": false,\n         \"cancel_before_minutes\": 60,\n         \"book_before_minutes\": 30,\n         \"reminder_minutes\": 1440,\n         \"crm_auto_import\": true,\n         \"is_unavailable_timeslots_visible\": false,\n         \"is_qr_code_visible\": true,\n         \"space\": {\n           \"id\": 1,\n           \"name\": \"Main Branch\",\n           \"slug\": \"main-branch\",\n           \"description\": \"Our flagship restaurant location\"\n         }\n       },\n       \"customer\": {\n         \"id\": 123,\n         \"name\": \"John Smith\",\n         \"email\": \"john.smith@example.com\",\n         \"phone_number\": \"+60123456789\",\n         \"current_point\": 2500,\n         \"tier_id\": 2\n       }\n     }\n   ],\n   \"links\": {\n     \"first\": \"@{{$baseUrl}}\/reservations?page=1\",\n     \"last\": \"@{{$baseUrl}}\/reservations?page=5\",\n     \"prev\": null,\n     \"next\": \"@{{$baseUrl}}\/reservations?page=2\"\n   },\n   \"meta\": {\n     \"current_page\": 1,\n     \"from\": 1,\n     \"last_page\": 5,\n     \"links\": [\n       {\n         \"url\": null,\n         \"label\": \"&laquo; Previous\",\n         \"active\": false\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/reservations?page=1\",\n         \"label\": \"1\",\n         \"active\": true\n       },\n       {\n         \"url\": \"@{{$baseUrl}}\/reservations?page=2\",\n         \"label\": \"Next &raquo;\",\n         \"active\": false\n       }\n     ],\n     \"path\": \"@{{$baseUrl}}\/reservations\",\n     \"per_page\": 15,\n     \"to\": 15,\n     \"total\": 68\n   }\n }",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "Create Reservation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reservations",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/reservations"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date\":\"2024-03-15\",\"start_at\":\"2024-03-15T14:30:00Z\",\"end_at\":\"2024-03-15T16:00:00Z\",\"name\":\"John Smith\",\"email\":\"john.smith@example.com\",\"phone_number\":\"+60123456789\",\"number_of_guests\":4,\"status\":\"pending\",\"remarks\":\"Birthday celebration, window seat preferred\",\"custom_fields\":{\"dietary_requirements\":\"Vegetarian\",\"special_requests\":\"Birthday cake arrangement\"},\"timeslot_id\":5,\"calendar_id\":1,\"customer_id\":123,\"rejection_reason\":\"Fully booked on requested date\"}"
                        },
                        "description": "Creates a new reservation in the system. <br>\nThe reservation will be associated with a calendar and optionally with a customer. <br>\nAuto-generates a unique reference ID."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 201,
                            "body": "{\n   \"data\": {\n       \"id\": 1,\n       \"ref_id\": \"RSV001234\",\n       \"date\": \"2024-03-15\",\n       \"start_at\": \"2024-03-15T14:30:00.000000Z\",\n       \"end_at\": \"2024-03-15T16:00:00.000000Z\",\n       \"name\": \"John Smith\",\n       \"email\": \"john.smith@example.com\",\n       \"phone_number\": \"+60123456789\",\n       \"number_of_guests\": 4,\n       \"status\": \"pending\",\n       \"remarks\": \"Birthday celebration\",\n       \"custom_fields\": {\n         \"dietary_requirements\": \"Vegetarian\"\n       },\n       \"timeslot_id\": null,\n       \"calendar_id\": 1,\n       \"customer_id\": null,\n       \"reminder_sent_at\": null,\n       \"rejection_reason\": null,\n       \"created_at\": \"2024-03-01T10:15:30.000000Z\",\n       \"updated_at\": \"2024-03-01T10:15:30.000000Z\"\n   },\n   \"message\": \"Reservation created successfully\"\n}",
                            "name": "Created successfully"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n   \"message\": \"The given data was invalid.\",\n   \"errors\": {\n       \"date\": [\"The date must be a valid date after today.\"],\n       \"start_at\": [\"The start at field is required.\"],\n       \"calendar_id\": [\"The selected calendar id is invalid.\"],\n       \"number_of_guests\": [\"The number of guests must be at least 1.\"]\n   }\n}",
                            "name": "Validation failed"
                        }
                    ]
                },
                {
                    "name": "Show Reservation Details",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reservations\/:id",
                            "query": [
                                {
                                    "key": "include",
                                    "value": "calendar%2Ccustomer",
                                    "description": "Comma-separated list of relationships to include. Available relationships:\n- calendar\n- customer\n- calendar.space",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/reservations\/:id?include=calendar%2Ccustomer",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reservation to show."
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves detailed information about a specific reservation, including any requested relationships."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"ref_id\": \"RSV001234\",\n        \"date\": \"2024-03-15\",\n        \"start_at\": \"2024-03-15T14:30:00.000000Z\",\n        \"end_at\": \"2024-03-15T16:00:00.000000Z\",\n        \"name\": \"John Smith\",\n        \"email\": \"john.smith@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"number_of_guests\": 4,\n        \"status\": \"reserved\",\n        \"remarks\": \"Birthday celebration\",\n        \"custom_fields\": {\n          \"dietary_requirements\": \"Vegetarian\"\n        },\n        \"timeslot_id\": 5,\n        \"calendar_id\": 1,\n        \"customer_id\": 123,\n        \"reminder_sent_at\": \"2024-03-14T14:30:00.000000Z\",\n        \"rejection_reason\": null,\n        \"created_at\": \"2024-03-01T10:15:30.000000Z\",\n        \"updated_at\": \"2024-03-10T16:22:45.000000Z\",\n        \"calendar\": {\n            \"id\": 1,\n            \"name\": \"Restaurant Reservations\",\n            \"space_id\": 1\n        }\n    }\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                },
                {
                    "name": "Update Reservation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reservations\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/reservations\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reservation to update."
                                }
                            ]
                        },
                        "method": "PUT",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"date\":\"2024-03-15\",\"start_at\":\"2024-03-15T14:30:00Z\",\"end_at\":\"2024-03-15T16:00:00Z\",\"name\":\"John Smith\",\"email\":\"john.smith@example.com\",\"phone_number\":\"+60123456789\",\"number_of_guests\":4,\"status\":\"pending\",\"remarks\":\"Birthday celebration, window seat preferred\",\"custom_fields\":{\"dietary_requirements\":\"Vegetarian\",\"special_requests\":\"Birthday cake arrangement\"},\"timeslot_id\":5,\"calendar_id\":1,\"customer_id\":123,\"rejection_reason\":\"Fully booked on requested date\"}"
                        },
                        "description": "Updates an existing reservation's information. <br> All fields are optional.<br>\nStatus transitions are validated according to business rules."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"data\": {\n        \"id\": 1,\n        \"ref_id\": \"RSV001234\",\n        \"date\": \"2024-03-15\",\n        \"start_at\": \"2024-03-15T14:30:00.000000Z\",\n        \"end_at\": \"2024-03-15T16:00:00.000000Z\",\n        \"name\": \"John Smith\",\n        \"email\": \"john.smith@example.com\",\n        \"phone_number\": \"+60123456789\",\n        \"number_of_guests\": 6,\n        \"status\": \"reserved\",\n        \"remarks\": \"Anniversary celebration - updated guest count\",\n        \"custom_fields\": {\n          \"dietary_requirements\": \"Vegetarian, Gluten-free\"\n        },\n        \"timeslot_id\": 5,\n        \"calendar_id\": 1,\n        \"customer_id\": 123,\n        \"reminder_sent_at\": \"2024-03-14T14:30:00.000000Z\",\n        \"rejection_reason\": null,\n        \"created_at\": \"2024-03-01T10:15:30.000000Z\",\n        \"updated_at\": \"2024-03-10T16:22:45.000000Z\"\n    },\n    \"message\": \"Reservation updated successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Reservation not found\"\n}",
                            "name": "Not Found"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n    \"message\": \"The given data was invalid.\",\n    \"errors\": {\n        \"status\": [\"Invalid status transition from reserved to pending.\"],\n        \"number_of_guests\": [\"The number of guests must be at least 1.\"]\n    }\n}",
                            "name": "Validation Error"
                        }
                    ]
                },
                {
                    "name": "Delete Reservation",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/reservations\/:id",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/reservations\/:id",
                            "variable": [
                                {
                                    "id": "id",
                                    "key": "id",
                                    "value": "1",
                                    "description": "The ID of the reservation to delete."
                                }
                            ]
                        },
                        "method": "DELETE",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Soft deletes a reservation from the system. <br>\nThe reservation can be restored later if needed."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"message\": \"Reservation deleted successfully\"\n}",
                            "name": "Success"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n    \"message\": \"Record not found\"\n}",
                            "name": "Not Found"
                        }
                    ]
                }
            ]
        },
        {
            "name": "Endpoints",
            "description": "",
            "item": [
                {
                    "name": "Get authenticated user",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/user",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/user"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Retrieves the currently authenticated user's information."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n    \"id\": 3,\n    \"organisation_id\": 2,\n    \"name\": \"User\",\n    \"email\": \"vendor@pixalink.io\",\n    \"email_verified_at\": \"2025-01-31T21:16:49.000000Z\",\n    \"created_at\": \"2025-01-31T21:16:49.000000Z\",\n    \"updated_at\": \"2025-01-31T21:16:49.000000Z\",\n    \"deleted_at\": null\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "Location Management",
            "description": "",
            "item": [
                {
                    "name": "List all countries",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/countries",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Malaysia",
                                    "description": "Filter countries by name.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bnationality%5D",
                                    "value": "Malaysian",
                                    "description": "Filter countries by nationality.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Biso%5D",
                                    "value": "MY",
                                    "description": "Filter countries by ISO code.",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records to display per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/countries?filter%5Bname%5D=Malaysia&filter%5Bnationality%5D=Malaysian&filter%5Biso%5D=MY&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a list of all countries with their details."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n \"data\": [\n   {\n     \"id\": 1,\n     \"name\": \"Malaysia\",\n     \"nationality\": \"Malaysian\",\n     \"iso\": \"MY\",\n     \"iso3\": \"MYS\"\n   }\n ],\n \"links\": {\n   \"first\": \"@{{$baseUrl}}\/api\/countries?page=1\",\n   \"last\": \"@{{$baseUrl}}\/api\/countries?page=1\",\n   \"prev\": null,\n   \"next\": null\n },\n \"meta\": {\n   \"current_page\": 1,\n   \"from\": 1,\n   \"last_page\": 1,\n   \"links\": [\n     {\n       \"url\": null,\n       \"label\": \"&laquo; Previous\",\n       \"active\": false\n     },\n     {\n       \"url\": \"@{{$baseUrl}}\/api\/countries?page=1\",\n       \"label\": \"1\",\n       \"active\": true\n     },\n     {\n       \"url\": null,\n       \"label\": \"Next &raquo;\",\n       \"active\": false\n     }\n   ],\n   \"path\": \"@{{$baseUrl}}\/api\/countries\",\n   \"per_page\": 15,\n   \"to\": 1,\n   \"total\": 1\n }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List all states",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/states",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Selangor",
                                    "description": "Filter states by name.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bcountry_id%5D",
                                    "value": "1",
                                    "description": "Filter states by country ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "country",
                                    "description": "Include related models (Possible values: country).",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records to display per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/states?filter%5Bname%5D=Selangor&filter%5Bcountry_id%5D=1&include=country&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a list of all states with their associated countries."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n \"data\": [\n   {\n     \"id\": 1,\n     \"name\": \"Selangor\",\n     \"country\": {\n       \"id\": 1,\n       \"name\": \"Malaysia\",\n       \"nationality\": \"Malaysian\",\n       \"iso\": \"MY\",\n       \"iso3\": \"MYS\",\n       \"phone_code\": \"60\"\n     }\n   }\n  ],\n  \"links\": {\n    \"first\": \"@{{$baseUrl}}\/api\/states?page=1\",\n    \"last\": \"@{{$baseUrl}}\/api\/states?page=5\",\n    \"prev\": null,\n    \"next\": \"@{{$baseUrl}}\/api\/states?page=2\"\n  },\n  \"meta\": {\n    \"current_page\": 1,\n    \"from\": 1,\n    \"last_page\": 5,\n    \"path\": \"@{{$baseUrl}}\/api\/states\",\n    \"per_page\": 15,\n    \"to\": 15,\n    \"total\": 75\n  }\n}",
                            "name": ""
                        }
                    ]
                },
                {
                    "name": "List all cities",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/cities",
                            "query": [
                                {
                                    "key": "filter%5Bname%5D",
                                    "value": "Petaling+Jaya",
                                    "description": "Filter cities by name.",
                                    "disabled": false
                                },
                                {
                                    "key": "filter%5Bstate_id%5D",
                                    "value": "1",
                                    "description": "Filter cities by state ID.",
                                    "disabled": false
                                },
                                {
                                    "key": "include",
                                    "value": "state%2Cstate.country",
                                    "description": "Include related models (Possible values: state, state.country).",
                                    "disabled": false
                                },
                                {
                                    "key": "sort",
                                    "value": "-name",
                                    "description": "Sort by specified field. Prefix with `-` for descending sort. Possible values: name",
                                    "disabled": false
                                },
                                {
                                    "key": "per_page",
                                    "value": "15",
                                    "description": "Number of records to display per page.",
                                    "disabled": false
                                }
                            ],
                            "raw": "{{baseUrl}}\/api\/cities?filter%5Bname%5D=Petaling+Jaya&filter%5Bstate_id%5D=1&include=state%2Cstate.country&sort=-name&per_page=15"
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": null,
                        "description": "Get a list of all cities with their associated states."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n \"data\": [\n   {\n     \"id\": 1,\n     \"name\": \"Petaling Jaya\",\n     \"state\": {\n       \"id\": 1,\n       \"name\": \"Selangor\",\n       \"country\": {\n         \"id\": 1,\n         \"name\": \"Malaysia\",\n         \"nationality\": \"Malaysian\",\n         \"iso\": \"MY\",\n         \"iso3\": \"MYS\",\n         \"phone_code\": \"60\"\n       }\n     }\n   }\n ],\n \"links\": {\n   \"first\": \"@{{$baseUrl}}\/api\/cities?page=1\",\n   \"last\": \"@{{$baseUrl}}\/api\/cities?page=1\",\n   \"prev\": null,\n   \"next\": null\n },\n \"meta\": {\n   \"current_page\": 1,\n   \"from\": 1,\n   \"last_page\": 1,\n   \"links\": [\n     {\n       \"url\": null,\n       \"label\": \"&laquo; Previous\",\n       \"active\": false\n     },\n     {\n       \"url\": \"@{{$baseUrl}}\/api\/cities?page=1\",\n       \"label\": \"1\",\n       \"active\": true\n     },\n     {\n       \"url\": null,\n       \"label\": \"Next &raquo;\",\n       \"active\": false\n     }\n   ],\n\"path\": \"@{{$baseUrl}}\/api\/cities\",\n\"per_page\": 15,\n\"to\": 1,\n\"total\": 1\n }\n}",
                            "name": ""
                        }
                    ]
                }
            ]
        },
        {
            "name": "SSO",
            "description": "",
            "item": [
                {
                    "name": "Generate a signed SSO login URL for a customer.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/sso\/redirect",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/sso\/redirect"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"customer_phone\":\"+60123456789\",\"space_id\":42,\"timestamp\":1746518400,\"redirect_to\":\"rewards\"}"
                        },
                        "description": "Verifies the HMAC-signed request, finds or creates the customer by phone number,\nthen returns a temporary signed URL that logs the customer into the loyalty portal.\nThe signed URL is valid for 10 minutes."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"redirect_url\": \"https:\/\/explore.pixalink.io\/space\/1\/loyalty\/login\/42?expires=1746518400&signature=abc123...\"\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Invalid signature.\"\n}",
                            "name": "Missing or invalid authentication credentials"
                        },
                        {
                            "header": [],
                            "code": 403,
                            "body": "{\n  \"message\": \"Client is not configured for SSO.\"\n}",
                            "name": "Client is not configured for SSO or OAuth2 is disabled"
                        },
                        {
                            "header": [],
                            "code": 404,
                            "body": "{\n  \"message\": \"Not Found\"\n}",
                            "name": "SSO feature disabled for this deployment"
                        },
                        {
                            "header": [],
                            "code": 422,
                            "body": "{\n  \"message\": \"The customer phone field is required.\",\n  \"errors\": {\n    \"customer_phone\": [\"The customer phone field is required.\"]\n  }\n}",
                            "name": "Validation failed"
                        }
                    ]
                },
                {
                    "name": "Resolve an outbound SSO ticket.",
                    "request": {
                        "url": {
                            "host": "{{baseUrl}}",
                            "path": "api\/sso\/resolve",
                            "query": [],
                            "raw": "{{baseUrl}}\/api\/sso\/resolve"
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application\/json"
                            },
                            {
                                "key": "Accept",
                                "value": "application\/json"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\"ticket\":\"kP3x\u2026opaque\u20269Qz\",\"timestamp\":1746518400}"
                        },
                        "description": "Verifies the HMAC-signed request, then exchanges a single-use ticket for the customer\nidentity it was minted against. The ticket is consumed on first use, so a second call\nwith the same ticket returns 410. Only the organisation that owns the ticket may resolve it."
                    },
                    "response": [
                        {
                            "header": [],
                            "code": 200,
                            "body": "{\n  \"customer\": {\n    \"id\": 42,\n    \"name\": \"Jane Doe\",\n    \"phone_number\": \"+60123456789\",\n    \"email\": \"jane@example.com\",\n    \"space_id\": 1,\n    \"organisation_id\": 7\n  },\n  \"context\": {}\n}",
                            "name": ""
                        },
                        {
                            "header": [],
                            "code": 401,
                            "body": "{\n  \"message\": \"Invalid signature.\"\n}",
                            "name": "Missing or invalid HMAC credentials"
                        },
                        {
                            "header": [],
                            "code": 410,
                            "body": "{\n  \"message\": \"Ticket not found, already used, or expired.\"\n}",
                            "name": "Ticket not found, already used, or expired"
                        }
                    ]
                }
            ]
        }
    ],
    "auth": {
        "type": "bearer",
        "bearer": [
            {
                "key": "key",
                "type": "string"
            }
        ]
    }
}