{
    "schemes": [],
    "swagger": "2.0",
    "info": {
        "description": "API oficial para gerenciamento e pedidos da plataforma Abre Cardápio.",
        "title": "Abre Cardápio API",
        "contact": {},
        "version": ""
    },
    "host": "",
    "basePath": "",
    "paths": {
        "/addToCart/{id}": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Add a dish to the user's cart",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Cart"
                ],
                "summary": "Add to Cart",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully added to cart",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/addToFavourite/{id}": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Adds a dish to the user's favourites",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Favourites"
                ],
                "summary": "Add item to favourites",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Dish added to favourites successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Item already added / Failed to add to favourites",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized: Invalid or expired token",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/campaigns": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: list ad campaigns",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Audited. A campaign only serves once it has an active creative targeting an allowed placement.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: create an ad campaign",
                "parameters": [
                    {
                        "description": "Campaign",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdCampaignReq"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/campaigns/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: a single ad campaign",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Campaign ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: edit an ad campaign",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Campaign ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Campaign",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdCampaignReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/campaigns/{id}/creatives": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Placements are attached to the creative. A placement that must never carry advertising is refused.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: add a creative to a campaign",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Campaign ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Creative",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdCreativeReq"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/campaigns/{id}/status": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: pause/resume/archive a campaign",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Campaign ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "New status",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdCampaignStatusReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/creatives/{id}": {
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: edit a creative",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Creative ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Creative",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdCreativeReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/metrics": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Impressions, clicks and CTR per campaign.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: ad metrics",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/ads/placements": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Ads"
                ],
                "summary": "Admin: allowed ad placements",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/audit": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Audit"
                ],
                "summary": "Audit log",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Exact action, e.g. seller.block",
                        "name": "action",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "seller, user, category, coupon, order, dish",
                        "name": "targetType",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminAuditListRes"
                        }
                    }
                }
            }
        },
        "/admin/categories/addCategory": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Create a new category",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Category"
                ],
                "summary": "Add a category",
                "parameters": [
                    {
                        "description": "Category creation request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.CreateCategoryReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category successfully created",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/categories/{id}": {
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Category"
                ],
                "summary": "Delete a category",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "Category still in use",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/categories/{id}/edit": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Update an existing category by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Category"
                ],
                "summary": "Edit a category",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Category update request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateCategoryReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Category successfully updated",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/coupons": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches all available coupons",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Coupons"
                ],
                "summary": "Get all coupons",
                "responses": {
                    "200": {
                        "description": "Success: No coupons are available",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access: User is not authenticated",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch coupons",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/coupons/add": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Adds a new coupon to the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Coupons"
                ],
                "summary": "Create a new coupon",
                "parameters": [
                    {
                        "description": "Coupon creation request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.CreateCouponReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Coupon created successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Invalid fields in the request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "Conflict: Coupon with the same code already exists",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to create coupon",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/coupons/{id}": {
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Updates the description, type, discount and limits of a coupon (the code is immutable)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Coupons"
                ],
                "summary": "Edit a coupon",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Coupon update request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateCouponReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Archives a coupon: it disappears from every listing and can no longer be used",
                "tags": [
                    "Admin Coupons"
                ],
                "summary": "Delete a coupon",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Updates the status of a coupon in the system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Coupons"
                ],
                "summary": "Update coupon status",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "New status for the coupon",
                        "name": "status",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Coupon status updated successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Invalid fields in the request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Not Found: Coupon with the given ID not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to update coupon status",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/dishes": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Dish"
                ],
                "summary": "List dishes",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish or restaurant name",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size",
                        "name": "l",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminDishListRes"
                        }
                    }
                }
            }
        },
        "/admin/dishes/{id}/availability": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Dish"
                ],
                "summary": "Show or hide a dish",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Availability",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateDishAvailabilityReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/login": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin"
                ],
                "summary": "Admin login",
                "parameters": [
                    {
                        "description": "Admin Login Request",
                        "name": "adminLoginReq",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdminLoginReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful login",
                        "schema": {
                            "$ref": "#/definitions/res.AdminLoginRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/me": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Account"
                ],
                "summary": "Current admin",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminMeRes"
                        }
                    }
                }
            }
        },
        "/admin/orders": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Paginated list of every order on the platform, newest first, with an optional status filter.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Order"
                ],
                "summary": "List all orders",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Page number (default 1; alias: page)",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size (default 20, max 100; alias: limit)",
                        "name": "l",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search by order id, restaurant, customer name or e-mail",
                        "name": "q",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Orders from this date (YYYY-MM-DD or RFC3339)",
                        "name": "from",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Orders until this date, inclusive",
                        "name": "to",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by order status (case-insensitive): PENDING, ORDERED, PLACED, CONFIRMED, PREPARING, COOKING, READY, FOOD READY, OUT_FOR_DELIVERY, DELIVERED, CANCELLED",
                        "name": "status",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched orders",
                        "schema": {
                            "$ref": "#/definitions/res.AdminOrderListRes"
                        }
                    },
                    "400": {
                        "description": "Invalid status filter",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/orders/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Order"
                ],
                "summary": "Order detail",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminOrderDetailRes"
                        }
                    }
                }
            }
        },
        "/admin/orders/{id}/status": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Order"
                ],
                "summary": "Update order status",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "New status",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateOrderStatusReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/password": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "tags": [
                    "Admin Account"
                ],
                "summary": "Change admin password",
                "parameters": [
                    {
                        "description": "Passwords",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.ChangeAdminPasswordReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/plans": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Every plan with how many restaurants are on it, for /admin/plans.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Plans"
                ],
                "summary": "Admin: plan catalogue",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminPlansRes"
                        }
                    }
                }
            }
        },
        "/admin/reports/sales": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Total revenue (orders that are neither PENDING nor CANCELLED), order counts per status and the top 5 sellers by revenue, over an optional window. Dates are YYYY-MM-DD (UTC, \"to\" includes the whole day) or RFC3339.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Report"
                ],
                "summary": "Platform sales report",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Window start (inclusive)",
                        "name": "from",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Window end (inclusive)",
                        "name": "to",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched report",
                        "schema": {
                            "$ref": "#/definitions/res.AdminSalesReportRes"
                        }
                    },
                    "400": {
                        "description": "Invalid date range",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Get a list of all sellers",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "Get all sellers",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "schema": {
                            "$ref": "#/definitions/res.SellerListRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Registers a restaurant on behalf of the admin (created Verified)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "Create a restaurant",
                "parameters": [
                    {
                        "description": "Restaurant data",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.SellerSignUpReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Restaurant created",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Invalid data",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "E-mail already registered",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers/{id}/block": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Block a specific seller by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "Block a seller",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Seller successfully blocked",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers/{id}/dishes": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Every non-deleted dish of the given restaurant, available or not",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "List a restaurant's dishes",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Restaurant not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers/{id}/plan": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Current plan, how it was granted, ads status, partner and account manager, plus the assignment history.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Plans"
                ],
                "summary": "Admin: a restaurant's plan",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdminSellerPlanRes"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "The only path that grants a non-default plan. Audited. There is no seller-facing equivalent.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Plans"
                ],
                "summary": "Admin: assign a plan to a restaurant",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Plan slug",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/res.AssignPlanReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers/{id}/unblock": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Unblock a specific seller by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "Unblock a seller",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Seller successfully unblocked",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/sellers/{id}/verify": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Verify a specific seller by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin Seller"
                ],
                "summary": "Verify a seller",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Seller successfully verified",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/users": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Get a list of all users",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin User"
                ],
                "summary": "Get all users",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "schema": {
                            "$ref": "#/definitions/res.UserListRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/users/{id}/block": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Block a specific user by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin User"
                ],
                "summary": "Block a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User successfully blocked",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/admin/users/{id}/unblock": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Unblock a specific user by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Admin User"
                ],
                "summary": "Unblock a user",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "User successfully unblocked",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/ads": {
            "get": {
                "description": "Returns the creatives to render for a placement. Empty when the placement may not carry ads or the restaurant's plan removes them — the backend is the authority, the UI only renders what it receives.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Ads"
                ],
                "summary": "Resolve an ad slot",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Placement key",
                        "name": "placement",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Restaurant (omit for marketplace placements)",
                        "name": "sellerId",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.AdSlotsRes"
                        }
                    }
                }
            }
        },
        "/ads/clicks": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Ads"
                ],
                "summary": "Report ad clicks",
                "parameters": [
                    {
                        "description": "Events",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdTrackReq"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/ads/impressions": {
            "post": {
                "description": "Batch impression report. Only a pseudonymous visitor token is accepted — never a user id or any PII.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Ads"
                ],
                "summary": "Report ad impressions",
                "parameters": [
                    {
                        "description": "Events",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.AdTrackReq"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/cart": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetch the user's cart",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Cart"
                ],
                "summary": "View Cart",
                "responses": {
                    "200": {
                        "description": "Cart is empty",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/cart/checkout": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Place a new order for the user. For paymentMethod=ONLINE the response result carries what the Razorpay checkout needs: key (public key id), orderId (the razorpay order id), amount (minor units) and currency; after payment the client must call POST /order/verifyPayment with the razorpay_* values.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Order"
                ],
                "summary": "Place an order",
                "parameters": [
                    {
                        "description": "New order request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.NewOrderReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully placed order",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/cart/empty": {
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Empty the user's cart",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Cart"
                ],
                "summary": "Empty Cart",
                "responses": {
                    "200": {
                        "description": "Successfully emptied cart",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/cart/{id}/decrement": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Decrement the quantity of a dish in the user's cart",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Cart"
                ],
                "summary": "Decrement Cart Item",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully decremented cart item",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/cart/{id}/deleteItem": {
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Delete a dish from the user's cart",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Cart"
                ],
                "summary": "Delete Cart Item",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted cart item",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/categories": {
            "get": {
                "description": "Retrieve a list of all categories",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get all categories",
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "schema": {
                            "$ref": "#/definitions/res.AllCategoriesRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/categories/{id}": {
            "get": {
                "description": "Retrieve a list of all categories",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get all categories",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Category ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successful operation",
                        "schema": {
                            "$ref": "#/definitions/res.AllCategoriesRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/coupons": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches all available coupons for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Coupons"
                ],
                "summary": "Get all coupons for the user",
                "responses": {
                    "200": {
                        "description": "Success: No coupons are available",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access: User is not authenticated",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch coupons",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/coupons/available": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches the coupons available for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Coupons"
                ],
                "summary": "Get available coupons for user",
                "responses": {
                    "200": {
                        "description": "Success: No coupons available",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch available coupons",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/coupons/redeemed": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches the coupons redeemed by the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Coupons"
                ],
                "summary": "Get redeemed coupons by user",
                "responses": {
                    "200": {
                        "description": "Success: No coupons are redeemed",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch redeemed coupons",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/dishes": {
            "get": {
                "description": "Retrieve a paginated list of dishes for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get paginated list of dishes",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Page number (default: 1)",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Number of items per page",
                        "name": "l",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Item category",
                        "name": "category",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Item by seller",
                        "name": "seller",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched dishes",
                        "schema": {
                            "$ref": "#/definitions/res.DishListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/dishes/{id}": {
            "get": {
                "description": "Retrieve a specific dish by ID for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get a dish",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched dish",
                        "schema": {
                            "$ref": "#/definitions/res.SingleDishRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/facets/restaurants": {
            "get": {
                "description": "Return the distinct cuisines and cities of verified restaurants\nso the web can build category pages. Body shape:\n{ data: { cuisines: [], cities: [] } }.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Restaurant"
                ],
                "summary": "Restaurant facets",
                "responses": {
                    "200": {
                        "description": "{ data: { cuisines: string[], cities: string[] } }",
                        "schema": {
                            "type": "object"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/favourites": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches the list of user's favourite dishes",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Favourites"
                ],
                "summary": "View favourite items",
                "responses": {
                    "200": {
                        "description": "Success: Favourites are empty",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized: Invalid or expired token",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/favourites/{id}/delete": {
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Deletes a dish from the user's favourites",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Favourites"
                ],
                "summary": "Delete item from favourites",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Dish deleted from favourites successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Item already deleted / Failed to delete from favourites",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized: Invalid or expired token",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/forgotPassword": {
            "post": {
                "description": "Forgot user password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Forgot Password",
                "parameters": [
                    {
                        "description": "Forgot password request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.ForgotPasswordReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully sent otp to number related to the given email",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/login": {
            "post": {
                "description": "Authenticate and log in as a user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "User Login",
                "parameters": [
                    {
                        "description": "User login request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UserLoginReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully logged in",
                        "schema": {
                            "$ref": "#/definitions/res.UserLoginRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/logout": {
            "post": {
                "description": "Ends the session: the bearer token (any role) is added to a server-side denylist until its natural expiry, so a copied token stops working. Unauthenticated on purpose so an expired token can still \"log out\"; invalid or expired tokens are ignored.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Logout",
                "responses": {
                    "200": {
                        "description": "Logged out",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/offers": {
            "get": {
                "description": "Fetches a list of all offers",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get all offers",
                "responses": {
                    "200": {
                        "description": "Success: List of offers fetched successfully",
                        "schema": {
                            "$ref": "#/definitions/res.OfferListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch offers",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/order/verifyPayment": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Verifies a Razorpay payment signature (HMAC-SHA256, constant time) and marks the caller's own order as paid. Idempotent: repeating a successful verification returns success without changing anything. Only the order's owner can verify.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Order"
                ],
                "summary": "Verify payment",
                "parameters": [
                    {
                        "description": "Payment verification details",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.VerifyPaymentReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Payment successfully verified",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: invalid fields or signature",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Order not found (or not the caller's)",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "Order can no longer be paid (cancelled; refund pending)",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/orders": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of all orders for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Order"
                ],
                "summary": "View all orders for the user",
                "responses": {
                    "200": {
                        "description": "Successfully fetched orders",
                        "schema": {
                            "$ref": "#/definitions/res.ViewAllOrdersRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/orders/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of one of the caller's own orders (another user's order yields 404)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Order"
                ],
                "summary": "View a specific order",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched order",
                        "schema": {
                            "$ref": "#/definitions/res.ViewOrderRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Order not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/orders/{id}/cancel": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Cancels the caller's own order while it is still PENDING/ORDERED/PLACED/CONFIRMED (before preparation starts) and restores the dishes' stock in the same transaction. If the order was paid online its paymentStatus becomes \"Refund Pending\": no refund is issued automatically (no gateway refund integration exists) and must be processed out of band.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Order"
                ],
                "summary": "Cancel an order",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Order cancelled",
                        "schema": {
                            "$ref": "#/definitions/res.CancelOrderRes"
                        }
                    },
                    "400": {
                        "description": "Invalid order id",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Order not found (or not the caller's)",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "422": {
                        "description": "Order status does not allow cancellation",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/plans": {
            "get": {
                "description": "Returns the commercial plans shown on /planos. Only public fields; the backend decides the CTA and whether a plan is available.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Plans"
                ],
                "summary": "Public plan catalogue",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.PlansRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/plans/waitlist": {
            "post": {
                "description": "Records interest (\"Quero ser avisado\") in a coming-soon plan. Public and rate limited; duplicates are ignored.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Plans"
                ],
                "summary": "Join a plan waitlist",
                "parameters": [
                    {
                        "description": "Waitlist request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.WaitlistReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.WaitlistRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Get user details",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "View User Details",
                "responses": {
                    "200": {
                        "description": "Successfully fetched user details",
                        "schema": {
                            "$ref": "#/definitions/res.UserDetailsRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile/addAddress": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Add a new address for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "Add an address",
                "parameters": [
                    {
                        "description": "New address request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.NewAddressReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully added address",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile/address": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of all addresses for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "View all addresses",
                "responses": {
                    "200": {
                        "description": "Successfully fetched addresses",
                        "schema": {
                            "$ref": "#/definitions/res.ViewAddressListRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile/address/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of a specific address for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "View a specific address",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Address ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched address",
                        "schema": {
                            "$ref": "#/definitions/res.ViewAddressRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Address not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Update existing address for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "Update address",
                "parameters": [
                    {
                        "description": "Update address request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateAddressReq"
                        }
                    },
                    {
                        "type": "string",
                        "description": "Address ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully updated address",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile/changePassword": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Change existing password of user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "Change Password",
                "parameters": [
                    {
                        "description": "Change user password request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.ChangePasswordReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully changed user password details",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/profile/edit": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Update user name, email details",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User Profile"
                ],
                "summary": "Update User Details",
                "parameters": [
                    {
                        "description": "Edit user details request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateUserDetailsReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully updated user details",
                        "schema": {
                            "$ref": "#/definitions/res.UserDetailsRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/resetPassword": {
            "post": {
                "description": "Reset user password",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Reset Password",
                "parameters": [
                    {
                        "description": "Reset password request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.ResetPasswordReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Reset Password Successfull",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/restaurants": {
            "get": {
                "description": "Return a page of verified restaurants, optionally filtered by\ncity, neighborhood and/or cuisine. Body shape: { data: PublicRestaurantDetail[] }.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Restaurant"
                ],
                "summary": "List restaurants",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filter by city (case-insensitive)",
                        "name": "city",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by neighborhood (case-insensitive)",
                        "name": "neighborhood",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by cuisine (case-insensitive)",
                        "name": "cuisine",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page number (default 1)",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Page size (default 20, max 100)",
                        "name": "limit",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.RestaurantListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/restaurants/{slug}": {
            "get": {
                "description": "Return the full public detail for one verified restaurant by\nits slug. Body shape: { data: PublicRestaurantDetail }.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Restaurant"
                ],
                "summary": "Restaurant by slug",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Restaurant slug",
                        "name": "slug",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.RestaurantDetailRes"
                        }
                    },
                    "404": {
                        "description": "Restaurant not found",
                        "schema": {
                            "type": "object"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/search/dishes": {
            "get": {
                "description": "Search for dishes based on a query",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Search dishes",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "seller",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched dishes",
                        "schema": {
                            "$ref": "#/definitions/res.DishListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/search/sellers": {
            "get": {
                "description": "Search for sellers based on a query",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Search sellers",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Search query",
                        "name": "q",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched sellers",
                        "schema": {
                            "$ref": "#/definitions/res.SellerListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/addDish": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Add a new dish for the seller",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Dish"
                ],
                "summary": "Create a dish",
                "parameters": [
                    {
                        "type": "file",
                        "description": "Image file for the dish (optional)",
                        "name": "image",
                        "in": "formData"
                    },
                    {
                        "type": "string",
                        "name": "categoryId",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "name": "description",
                        "in": "formData"
                    },
                    {
                        "type": "boolean",
                        "name": "isAvailable",
                        "in": "formData"
                    },
                    {
                        "type": "boolean",
                        "name": "isVeg",
                        "in": "formData"
                    },
                    {
                        "minLength": 3,
                        "type": "string",
                        "name": "name",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "minimum": 0,
                        "type": "number",
                        "name": "price",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "minimum": 0,
                        "type": "integer",
                        "name": "quantity",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "number",
                        "name": "salePrice",
                        "in": "formData"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully created dish",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/coupons": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Returns the coupons owned by the authenticated restaurant plus the platform coupons that apply to it.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Coupons"
                ],
                "summary": "List the restaurant's coupons",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.SellerCouponsRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Creates a coupon scoped to the authenticated restaurant. The scope is bound to the token, never to the body.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Coupons"
                ],
                "summary": "Create a coupon for the restaurant",
                "parameters": [
                    {
                        "description": "Coupon",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.CreateCouponReq"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/res.CouponRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "Conflict",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/coupons/{id}": {
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Updates the terms of a coupon owned by the authenticated restaurant. The code is immutable.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Coupons"
                ],
                "summary": "Edit a restaurant coupon",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Coupon",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateCouponReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Archives the coupon; redemption history is preserved.",
                "tags": [
                    "Seller Coupons"
                ],
                "summary": "Archive a restaurant coupon",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/coupons/{id}/status": {
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Coupons"
                ],
                "summary": "Pause or resume a restaurant coupon",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Coupon ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "New status",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateCouponStatusReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/dishes": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Retrieve a list of all dishes for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Dish"
                ],
                "summary": "Get all dishes",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Category Id",
                        "name": "category",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched dishes",
                        "schema": {
                            "$ref": "#/definitions/res.DishListRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/dishes/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Retrieve a specific dish by ID for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Dish"
                ],
                "summary": "Get a dish",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched dish",
                        "schema": {
                            "$ref": "#/definitions/res.SingleDishRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Modify an existing dish by ID for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Dish"
                ],
                "summary": "Update a dish",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Dish update request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateDishReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully updated dish",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Remove a specific dish by ID for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Dish"
                ],
                "summary": "Delete a dish",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Dish ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted dish",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/login": {
            "post": {
                "description": "Authenticate and log in as a seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller"
                ],
                "summary": "Seller Login",
                "parameters": [
                    {
                        "description": "Seller login request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.SellerLoginReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully logged in",
                        "schema": {
                            "$ref": "#/definitions/res.SellerLoginRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/offers": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches a list of offers associated with the seller",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Offer"
                ],
                "summary": "Get offers by seller",
                "responses": {
                    "200": {
                        "description": "Success: List of offers fetched successfully",
                        "schema": {
                            "$ref": "#/definitions/res.OfferListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch offers",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/offers/addOffer": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Create new offer for the seller",
                "consumes": [
                    "multipart/form-data"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Offer"
                ],
                "summary": "Create an offer",
                "parameters": [
                    {
                        "type": "file",
                        "description": "Image file for the dish",
                        "name": "image",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "name": "categoryId",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "name": "endDate",
                        "in": "formData"
                    },
                    {
                        "maximum": 100,
                        "type": "integer",
                        "name": "offerPercentage",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "name": "offerTitle",
                        "in": "formData",
                        "required": true
                    },
                    {
                        "type": "string",
                        "name": "startDate",
                        "in": "formData"
                    },
                    {
                        "enum": [
                            "ACTIVE",
                            "CLOSED"
                        ],
                        "type": "string",
                        "name": "status",
                        "in": "formData",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Offer updated successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Invalid inputs",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Error occurred while updating offer",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/offers/{id}": {
            "put": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Updates details of a specific offer for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Offer"
                ],
                "summary": "Update an offer",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Offer ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update Offer Request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateOfferReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Offer updated successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request: Invalid inputs",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Error occurred while updating offer",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Updates the status of a specific offer",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Offer"
                ],
                "summary": "Update offer status",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Offer ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "type": "string",
                        "description": "New offer status",
                        "name": "status",
                        "in": "query",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Offer status updated successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Error occurred while updating offer status",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/orders": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of all orders for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Order"
                ],
                "summary": "View all orders for the seller",
                "responses": {
                    "200": {
                        "description": "Successfully fetched orders",
                        "schema": {
                            "$ref": "#/definitions/res.ViewAllOrdersRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/orders/{id}": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "View details of an order of the seller's own restaurant (another seller's order yields 404)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Order"
                ],
                "summary": "View a specific order (seller)",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched order",
                        "schema": {
                            "$ref": "#/definitions/res.ViewOrderRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Order not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Advance the status of one of the seller's orders along the allowed state machine (payment fields are never touched)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Order"
                ],
                "summary": "Update order status",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Update order status request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateOrderStatusReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully updated order",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Order not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "422": {
                        "description": "Invalid status transition",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/plan": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Returns the authenticated seller's plan, its features and how it was granted. Server-side authority for /seller/plan.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Plans"
                ],
                "summary": "Seller's current plan",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/res.SellerPlanRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/profile": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Retrieve the authenticated seller's profile (current database values)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller"
                ],
                "summary": "Get seller profile",
                "responses": {
                    "200": {
                        "description": "Successfully fetched seller profile",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            },
            "patch": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Partially update the authenticated seller's own profile. Only the fields sent are changed. Editable: name, description, phone, whatsapp, pinCode, street, number, complement, neighborhood, city, state, postalCode, latitude, longitude, priceRange ($..$$$$), minimumOrder, deliveryFee, averageDeliveryMinutes, deliveryRadiusKm, supportsDelivery, supportsPickup, timezone (IANA), seoTitle, seoDescription. Any other key (status, email, password, slug, ...) is rejected with 400.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller"
                ],
                "summary": "Update seller profile",
                "parameters": [
                    {
                        "description": "Fields to update",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UpdateSellerProfileReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Updated profile in result",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Invalid or unknown fields / empty body",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "403": {
                        "description": "Seller is blocked or rejected",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "404": {
                        "description": "Seller not found",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/register": {
            "post": {
                "description": "Register a new seller (restaurant owner) and return a JWT. The seller is created Verified when AUTO_VERIFY_SELLERS is on (default in development) and Pending otherwise; Pending sellers can log in and edit profile/menu but are not listed publicly until an admin verifies them. A public slug is generated from the name (and city). Required: email, password (6-72), confirmPassword, name (2-120), pinCode (CEP, 8 digits). Optional: description, phone, whatsapp (E.164), street, number, neighborhood, city, state.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller"
                ],
                "summary": "Seller Sign Up",
                "parameters": [
                    {
                        "description": "Seller sign-up request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.SellerSignUpReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully signed up",
                        "schema": {
                            "$ref": "#/definitions/res.SellerLoginRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "409": {
                        "description": "E-mail already registered",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/seller/sales": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Fetches the daily sales report for the seller",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Seller Sales"
                ],
                "summary": "Get daily sales report",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Time intervals",
                        "name": "filter",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Success: Daily sales fetched successfully",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error: Failed to fetch daily sales",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/sendOtp": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Send OTP to the user's registered phone number",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Send OTP",
                "responses": {
                    "200": {
                        "description": "Successfully sent OTP",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/signup": {
            "post": {
                "description": "Register a new user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Sign up as a user",
                "parameters": [
                    {
                        "description": "User sign-up request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UserSignUpReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully signed up",
                        "schema": {
                            "$ref": "#/definitions/res.UserLoginRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/user/sellers": {
            "get": {
                "description": "Retrieve a paginated list of sellers for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get paginated list of sellers",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Page number (default: 1)",
                        "name": "p",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Number of items per page",
                        "name": "l",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched sellers",
                        "schema": {
                            "$ref": "#/definitions/res.SellerListRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/user/sellers/{id}": {
            "get": {
                "description": "Retrieve a specific seller by ID for the user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Common"
                ],
                "summary": "Get a seller",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully fetched seller",
                        "schema": {
                            "$ref": "#/definitions/res.SingleSellerRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        },
        "/verifyOtp": {
            "post": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Verify OTP for the user's registered phone number",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "User"
                ],
                "summary": "Verify OTP",
                "parameters": [
                    {
                        "description": "User OTP verification request",
                        "name": "req",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/req.UserVerifyOtpReq"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully verified OTP",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "401": {
                        "description": "Unauthorized Access",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "$ref": "#/definitions/res.CommonRes"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "entities.AdSlot": {
            "type": "object",
            "properties": {
                "advertiserName": {
                    "type": "string"
                },
                "altText": {
                    "type": "string"
                },
                "campaignId": {
                    "type": "string"
                },
                "creativeId": {
                    "type": "string"
                },
                "destinationUrl": {
                    "type": "string"
                },
                "height": {
                    "type": "integer"
                },
                "imageUrl": {
                    "type": "string"
                },
                "mobileImageUrl": {
                    "type": "string"
                },
                "placement": {
                    "type": "string"
                },
                "title": {
                    "type": "string"
                },
                "width": {
                    "type": "integer"
                }
            }
        },
        "entities.Address": {
            "type": "object",
            "properties": {
                "addressId": {
                    "type": "string"
                },
                "district": {
                    "type": "string"
                },
                "houseName": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "state": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                },
                "userId": {
                    "type": "string"
                }
            }
        },
        "entities.AdminContact": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                }
            }
        },
        "entities.AdminDish": {
            "type": "object",
            "properties": {
                "categoryName": {
                    "type": "string"
                },
                "dishId": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "isAvailable": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "price": {
                    "type": "number"
                },
                "salePrice": {
                    "type": "number"
                },
                "sellerId": {
                    "type": "string"
                },
                "sellerName": {
                    "type": "string"
                }
            }
        },
        "entities.AdminOrderDetail": {
            "type": "object",
            "properties": {
                "address": {
                    "$ref": "#/definitions/entities.Address"
                },
                "customer": {
                    "$ref": "#/definitions/entities.AdminContact"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.AdminOrderLine"
                    }
                },
                "order": {
                    "$ref": "#/definitions/entities.AdminOrderRow"
                }
            }
        },
        "entities.AdminOrderLine": {
            "type": "object",
            "properties": {
                "dishId": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                },
                "salePrice": {
                    "type": "number"
                }
            }
        },
        "entities.AdminOrderRow": {
            "type": "object",
            "properties": {
                "addressId": {
                    "description": "AddressID is nil for a pickup order (there is no delivery address). It is\na pointer because the column is a nullable uuid: writing \"\" would raise a\nuuid cast error.",
                    "type": "string"
                },
                "couponCode": {
                    "type": "string"
                },
                "couponId": {
                    "description": "CouponID is the structured reference to the applied coupon. CouponCode is\nkept as the literal text the customer typed, so an order stays readable\neven if the coupon is renamed or archived.",
                    "type": "string"
                },
                "customerName": {
                    "type": "string"
                },
                "deliveryCharge": {
                    "type": "number"
                },
                "deliveryDate": {
                    "type": "string"
                },
                "discount": {
                    "type": "number"
                },
                "itemCount": {
                    "type": "integer"
                },
                "orderDate": {
                    "type": "string"
                },
                "orderId": {
                    "type": "string"
                },
                "orderStatus": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "paymentStatus": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "sellerName": {
                    "type": "string"
                },
                "totalPrice": {
                    "type": "number"
                },
                "transactionId": {
                    "type": "string"
                },
                "userId": {
                    "type": "string"
                }
            }
        },
        "entities.AdminSalesReport": {
            "type": "object",
            "properties": {
                "from": {
                    "type": "string"
                },
                "ordersByStatus": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.StatusCount"
                    }
                },
                "to": {
                    "type": "string"
                },
                "topSellers": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.TopSeller"
                    }
                },
                "totalOrders": {
                    "type": "integer"
                },
                "totalRevenue": {
                    "type": "number"
                }
            }
        },
        "entities.AuditRow": {
            "type": "object",
            "properties": {
                "action": {
                    "type": "string"
                },
                "actorId": {
                    "type": "string"
                },
                "actorName": {
                    "type": "string"
                },
                "actorType": {
                    "type": "string"
                },
                "createdAt": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "ip": {
                    "type": "string"
                },
                "targetId": {
                    "type": "string"
                },
                "targetType": {
                    "type": "string"
                }
            }
        },
        "entities.Cart": {
            "type": "object",
            "properties": {
                "cartId": {
                    "type": "string"
                },
                "dishes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.CartItem"
                    }
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "entities.CartItem": {
            "type": "object",
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "dishId": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "isAvailable": {
                    "type": "boolean"
                },
                "isVeg": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "price": {
                    "type": "number"
                },
                "quantity": {
                    "type": "integer"
                },
                "salePrice": {
                    "type": "number"
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "entities.Category": {
            "type": "object",
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "iconUrl": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            }
        },
        "entities.CategoryOffer": {
            "type": "object",
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "endDate": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "offerId": {
                    "type": "string"
                },
                "offerPercentage": {
                    "type": "integer"
                },
                "offerTitle": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "startDate": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "entities.Coupon": {
            "type": "object",
            "properties": {
                "couponCode": {
                    "type": "string"
                },
                "couponId": {
                    "type": "string"
                },
                "couponType": {
                    "description": "DiscountType: AMOUNT | PERCENTAGE | FREE_DELIVERY",
                    "type": "string"
                },
                "createdAt": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "discount": {
                    "$ref": "#/definitions/money.Amount"
                },
                "endDate": {
                    "type": "string"
                },
                "firstOrderOnly": {
                    "description": "FirstOrderOnly restricts the coupon to a customer's first order.",
                    "type": "boolean"
                },
                "freeDelivery": {
                    "description": "FreeDelivery waives the delivery fee (independent of the discount type).",
                    "type": "boolean"
                },
                "maximumAmtAllowed": {
                    "$ref": "#/definitions/money.Amount"
                },
                "minimumAmtRequired": {
                    "$ref": "#/definitions/money.Amount"
                },
                "scope": {
                    "description": "Computed for listings, never stored.",
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "sellerName": {
                    "type": "string"
                },
                "startDate": {
                    "description": "StartAt is always set; EndAt nil means the coupon never expires.",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "updatedAt": {
                    "type": "string"
                },
                "usageLimit": {
                    "description": "UsageLimit caps total redemptions (nil = unlimited).",
                    "type": "integer"
                },
                "usageLimitPerCustomer": {
                    "description": "UsageLimitPerCustomer caps redemptions per customer (nil = unlimited).",
                    "type": "integer"
                },
                "usedCount": {
                    "description": "UsedCount is maintained atomically at checkout.",
                    "type": "integer"
                }
            }
        },
        "entities.Dish": {
            "type": "object",
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "dishId": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "isAvailable": {
                    "type": "boolean"
                },
                "isVeg": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "price": {
                    "type": "number"
                },
                "quantity": {
                    "type": "integer"
                },
                "salePrice": {
                    "type": "number"
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "entities.Order": {
            "type": "object",
            "properties": {
                "addressId": {
                    "description": "AddressID is nil for a pickup order (there is no delivery address). It is\na pointer because the column is a nullable uuid: writing \"\" would raise a\nuuid cast error.",
                    "type": "string"
                },
                "couponCode": {
                    "type": "string"
                },
                "couponId": {
                    "description": "CouponID is the structured reference to the applied coupon. CouponCode is\nkept as the literal text the customer typed, so an order stays readable\neven if the coupon is renamed or archived.",
                    "type": "string"
                },
                "deliveryCharge": {
                    "type": "number"
                },
                "deliveryDate": {
                    "type": "string"
                },
                "discount": {
                    "type": "number"
                },
                "itemCount": {
                    "type": "integer"
                },
                "orderDate": {
                    "type": "string"
                },
                "orderId": {
                    "type": "string"
                },
                "orderStatus": {
                    "type": "string"
                },
                "paymentMethod": {
                    "type": "string"
                },
                "paymentStatus": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "totalPrice": {
                    "type": "number"
                },
                "transactionId": {
                    "type": "string"
                },
                "userId": {
                    "type": "string"
                }
            }
        },
        "entities.OrderItem": {
            "type": "object",
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "dishId": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "isAvailable": {
                    "type": "boolean"
                },
                "isVeg": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "price": {
                    "type": "number"
                },
                "quantity": {
                    "type": "integer"
                },
                "salePrice": {
                    "type": "number"
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "entities.RedeemedCoupon": {
            "type": "object",
            "properties": {
                "couponCode": {
                    "description": "CodeSnapshot is the literal code at redemption time (legacy column name\nkept: coupon_code).",
                    "type": "string"
                },
                "couponId": {
                    "type": "string"
                },
                "discountAmount": {
                    "$ref": "#/definitions/money.Amount"
                },
                "orderId": {
                    "type": "string"
                },
                "redeemedAt": {
                    "type": "string"
                },
                "redeemedId": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "userId": {
                    "type": "string"
                }
            }
        },
        "entities.StatusCount": {
            "type": "object",
            "properties": {
                "count": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "entities.TopSeller": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "orders": {
                    "type": "integer"
                },
                "revenue": {
                    "type": "number"
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "entities.User": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "firstName": {
                    "type": "string"
                },
                "lastName": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "userId": {
                    "type": "string"
                }
            }
        },
        "money.Amount": {
            "type": "integer",
            "enum": [
                0
            ],
            "x-enum-varnames": [
                "Zero"
            ]
        },
        "req.AdCampaignReq": {
            "type": "object",
            "required": [
                "advertiserName",
                "title"
            ],
            "properties": {
                "advertiserName": {
                    "type": "string",
                    "maxLength": 120
                },
                "destinationUrl": {
                    "type": "string",
                    "maxLength": 500
                },
                "endsAt": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "priority": {
                    "type": "integer",
                    "maximum": 1000,
                    "minimum": 0
                },
                "startsAt": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "PAUSED",
                        "ARCHIVED"
                    ]
                },
                "targetingMetadata": {
                    "type": "object",
                    "additionalProperties": {}
                },
                "title": {
                    "type": "string",
                    "maxLength": 120
                }
            }
        },
        "req.AdCampaignStatusReq": {
            "type": "object",
            "required": [
                "status"
            ],
            "properties": {
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "PAUSED",
                        "ARCHIVED"
                    ]
                }
            }
        },
        "req.AdCreativeReq": {
            "type": "object",
            "required": [
                "imageUrl"
            ],
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "altText": {
                    "type": "string",
                    "maxLength": 200
                },
                "height": {
                    "type": "integer",
                    "maximum": 10000,
                    "minimum": 0
                },
                "imageUrl": {
                    "type": "string",
                    "maxLength": 500
                },
                "mobileImageUrl": {
                    "type": "string",
                    "maxLength": 500
                },
                "placements": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                        "$ref": "#/definitions/req.AdPlacementReq"
                    }
                },
                "width": {
                    "type": "integer",
                    "maximum": 10000,
                    "minimum": 0
                }
            }
        },
        "req.AdPlacementReq": {
            "type": "object",
            "required": [
                "placement"
            ],
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "placement": {
                    "type": "string",
                    "maxLength": 60
                },
                "sellerId": {
                    "type": "string",
                    "maxLength": 36
                },
                "weight": {
                    "type": "integer",
                    "maximum": 1000,
                    "minimum": 1
                }
            }
        },
        "req.AdTrackEvent": {
            "type": "object",
            "required": [
                "campaignId",
                "creativeId"
            ],
            "properties": {
                "campaignId": {
                    "type": "string",
                    "maxLength": 36
                },
                "creativeId": {
                    "type": "string",
                    "maxLength": 36
                }
            }
        },
        "req.AdTrackReq": {
            "type": "object",
            "required": [
                "events",
                "placement"
            ],
            "properties": {
                "events": {
                    "type": "array",
                    "maxItems": 20,
                    "minItems": 1,
                    "items": {
                        "$ref": "#/definitions/req.AdTrackEvent"
                    }
                },
                "placement": {
                    "type": "string",
                    "maxLength": 60
                },
                "sellerId": {
                    "type": "string",
                    "maxLength": 36
                },
                "visitorId": {
                    "type": "string",
                    "maxLength": 64
                }
            }
        },
        "req.AdminLoginReq": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.ChangeAdminPasswordReq": {
            "type": "object",
            "required": [
                "currentPassword",
                "newPassword"
            ],
            "properties": {
                "currentPassword": {
                    "type": "string"
                },
                "newPassword": {
                    "type": "string",
                    "maxLength": 72,
                    "minLength": 8
                }
            }
        },
        "req.ChangePasswordReq": {
            "type": "object",
            "properties": {
                "confirmNewPassword": {
                    "type": "string"
                },
                "newPassword": {
                    "type": "string",
                    "minLength": 3
                },
                "password": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.CreateCategoryReq": {
            "type": "object",
            "required": [
                "name"
            ],
            "properties": {
                "iconUrl": {
                    "type": "string",
                    "maxLength": 255
                },
                "name": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.CreateCouponReq": {
            "type": "object",
            "required": [
                "couponCode"
            ],
            "properties": {
                "couponCode": {
                    "type": "string",
                    "maxLength": 40,
                    "minLength": 3
                },
                "couponType": {
                    "description": "couponType: AMOUNT | PERCENTAGE | FREE_DELIVERY (defaults to AMOUNT).",
                    "type": "string",
                    "enum": [
                        "AMOUNT",
                        "PERCENTAGE",
                        "FREE_DELIVERY"
                    ]
                },
                "description": {
                    "type": "string",
                    "maxLength": 280
                },
                "discount": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "endDate": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "firstOrderOnly": {
                    "type": "boolean"
                },
                "freeDelivery": {
                    "type": "boolean"
                },
                "maximumAmtAllowed": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "minimumAmtRequired": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "startDate": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "INACTIVE"
                    ]
                },
                "usageLimit": {
                    "type": "integer",
                    "minimum": 1
                },
                "usageLimitPerCustomer": {
                    "type": "integer",
                    "minimum": 1
                }
            }
        },
        "req.ForgotPasswordReq": {
            "type": "object",
            "required": [
                "phone"
            ],
            "properties": {
                "phone": {
                    "type": "string"
                }
            }
        },
        "req.NewAddressReq": {
            "type": "object",
            "required": [
                "district",
                "houseName",
                "name",
                "phone",
                "pinCode",
                "state",
                "street"
            ],
            "properties": {
                "district": {
                    "type": "string"
                },
                "houseName": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "state": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                }
            }
        },
        "req.NewOrderReq": {
            "type": "object",
            "required": [
                "paymentMethod"
            ],
            "properties": {
                "addressId": {
                    "description": "AddressID is required for DELIVERY and ignored for PICKUP; the usecase\nenforces that. Address ids are UUIDs, so the tag must not require digits —\nit only bounds the length, and the usecase validates the uuid itself.",
                    "type": "string",
                    "maxLength": 36
                },
                "couponCode": {
                    "type": "string"
                },
                "fulfillment": {
                    "description": "Fulfillment: DELIVERY (default) or PICKUP.",
                    "type": "string",
                    "enum": [
                        "DELIVERY",
                        "PICKUP"
                    ]
                },
                "paymentMethod": {
                    "type": "string",
                    "enum": [
                        "COD",
                        "ONLINE"
                    ]
                }
            }
        },
        "req.OptionalTime": {
            "type": "object",
            "properties": {
                "time": {
                    "type": "string"
                },
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "req.ResetPasswordReq": {
            "type": "object",
            "required": [
                "otp",
                "phone"
            ],
            "properties": {
                "newPassword": {
                    "type": "string",
                    "minLength": 3
                },
                "otp": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                }
            }
        },
        "req.SellerLoginReq": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.SellerSignUpReq": {
            "type": "object",
            "required": [
                "confirmPassword",
                "email",
                "name",
                "password",
                "pinCode"
            ],
            "properties": {
                "city": {
                    "type": "string",
                    "maxLength": 80
                },
                "confirmPassword": {
                    "type": "string"
                },
                "description": {
                    "type": "string",
                    "maxLength": 2000
                },
                "email": {
                    "type": "string",
                    "maxLength": 160
                },
                "name": {
                    "type": "string",
                    "maxLength": 120,
                    "minLength": 2
                },
                "neighborhood": {
                    "type": "string",
                    "maxLength": 80
                },
                "number": {
                    "type": "string",
                    "maxLength": 20
                },
                "password": {
                    "type": "string",
                    "maxLength": 72,
                    "minLength": 6
                },
                "phone": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "state": {
                    "type": "string",
                    "maxLength": 40
                },
                "street": {
                    "type": "string",
                    "maxLength": 160
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "req.UpdateAddressReq": {
            "type": "object",
            "required": [
                "district",
                "houseName",
                "name",
                "phone",
                "pinCode",
                "state",
                "street"
            ],
            "properties": {
                "district": {
                    "type": "string"
                },
                "houseName": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "state": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                }
            }
        },
        "req.UpdateCategoryReq": {
            "type": "object",
            "required": [
                "name"
            ],
            "properties": {
                "iconUrl": {
                    "description": "nil keeps the current icon; \"\" clears it.",
                    "type": "string",
                    "maxLength": 255
                },
                "name": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.UpdateCouponReq": {
            "type": "object",
            "properties": {
                "couponType": {
                    "description": "couponType: AMOUNT | PERCENTAGE | FREE_DELIVERY (defaults to AMOUNT).",
                    "type": "string",
                    "enum": [
                        "AMOUNT",
                        "PERCENTAGE",
                        "FREE_DELIVERY"
                    ]
                },
                "description": {
                    "type": "string",
                    "maxLength": 280
                },
                "discount": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "endDate": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "firstOrderOnly": {
                    "type": "boolean"
                },
                "freeDelivery": {
                    "type": "boolean"
                },
                "maximumAmtAllowed": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "minimumAmtRequired": {
                    "minimum": 0,
                    "allOf": [
                        {
                            "$ref": "#/definitions/money.Amount"
                        }
                    ]
                },
                "startDate": {
                    "$ref": "#/definitions/req.OptionalTime"
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "INACTIVE"
                    ]
                },
                "usageLimit": {
                    "type": "integer",
                    "minimum": 1
                },
                "usageLimitPerCustomer": {
                    "type": "integer",
                    "minimum": 1
                }
            }
        },
        "req.UpdateCouponStatusReq": {
            "type": "object",
            "required": [
                "status"
            ],
            "properties": {
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "INACTIVE"
                    ]
                }
            }
        },
        "req.UpdateDishAvailabilityReq": {
            "type": "object",
            "required": [
                "isAvailable"
            ],
            "properties": {
                "isAvailable": {
                    "type": "boolean"
                }
            }
        },
        "req.UpdateDishReq": {
            "type": "object",
            "required": [
                "categoryId",
                "name",
                "price",
                "quantity"
            ],
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "isAvailable": {
                    "type": "boolean"
                },
                "isVeg": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string",
                    "minLength": 3
                },
                "price": {
                    "type": "number",
                    "minimum": 0
                },
                "quantity": {
                    "type": "integer",
                    "minimum": 0
                },
                "salePrice": {
                    "type": "number",
                    "minimum": 0
                }
            }
        },
        "req.UpdateOfferReq": {
            "type": "object",
            "required": [
                "categoryId",
                "offerPercentage",
                "offerTitle",
                "status"
            ],
            "properties": {
                "categoryId": {
                    "type": "string"
                },
                "endDate": {
                    "type": "string"
                },
                "offerPercentage": {
                    "type": "integer",
                    "maximum": 100
                },
                "offerTitle": {
                    "type": "string"
                },
                "startDate": {
                    "type": "string"
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "ACTIVE",
                        "CLOSED",
                        "DELETED"
                    ]
                }
            }
        },
        "req.UpdateOrderStatusReq": {
            "type": "object",
            "required": [
                "orderStatus"
            ],
            "properties": {
                "orderStatus": {
                    "description": "Accepts both the canonical fulfilment states and the historical\ndisplay names (COOKING, FOOD READY). The usecase state machine\n(allowedSellerTransitions) enforces which transitions are legal.",
                    "type": "string",
                    "enum": [
                        "CONFIRMED",
                        "PREPARING",
                        "COOKING",
                        "READY",
                        "FOOD READY",
                        "OUT_FOR_DELIVERY",
                        "DELIVERED",
                        "CANCELLED"
                    ]
                }
            }
        },
        "req.UpdateSellerProfileReq": {
            "type": "object",
            "properties": {
                "averageDeliveryMinutes": {
                    "type": "integer",
                    "maximum": 1440,
                    "minimum": 1
                },
                "city": {
                    "type": "string",
                    "maxLength": 80
                },
                "complement": {
                    "type": "string",
                    "maxLength": 80
                },
                "deliveryFee": {
                    "type": "number",
                    "maximum": 100000,
                    "minimum": 0
                },
                "deliveryRadiusKm": {
                    "type": "number",
                    "maximum": 999,
                    "minimum": 0
                },
                "description": {
                    "type": "string",
                    "maxLength": 2000
                },
                "latitude": {
                    "type": "number",
                    "maximum": 90,
                    "minimum": -90
                },
                "longitude": {
                    "type": "number",
                    "maximum": 180,
                    "minimum": -180
                },
                "minimumOrder": {
                    "type": "number",
                    "maximum": 100000,
                    "minimum": 0
                },
                "name": {
                    "type": "string",
                    "maxLength": 120
                },
                "neighborhood": {
                    "type": "string",
                    "maxLength": 80
                },
                "number": {
                    "type": "string",
                    "maxLength": 20
                },
                "phone": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "postalCode": {
                    "type": "string",
                    "maxLength": 16
                },
                "priceRange": {
                    "type": "string",
                    "enum": [
                        "$",
                        "$$",
                        "$$$",
                        "$$$$"
                    ]
                },
                "seoDescription": {
                    "type": "string",
                    "maxLength": 320
                },
                "seoTitle": {
                    "type": "string",
                    "maxLength": 120
                },
                "state": {
                    "type": "string",
                    "maxLength": 40
                },
                "street": {
                    "type": "string",
                    "maxLength": 160
                },
                "supportsDelivery": {
                    "type": "boolean"
                },
                "supportsPickup": {
                    "type": "boolean"
                },
                "timezone": {
                    "type": "string",
                    "maxLength": 64
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "req.UpdateUserDetailsReq": {
            "type": "object",
            "required": [
                "email",
                "firstName"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "firstName": {
                    "type": "string",
                    "minLength": 3
                },
                "lastName": {
                    "type": "string"
                }
            }
        },
        "req.UserLoginReq": {
            "type": "object",
            "required": [
                "email",
                "password"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 3
                }
            }
        },
        "req.UserSignUpReq": {
            "type": "object",
            "required": [
                "email",
                "firstName",
                "phone"
            ],
            "properties": {
                "confirmPassword": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "firstName": {
                    "type": "string",
                    "minLength": 3
                },
                "lastName": {
                    "type": "string"
                },
                "password": {
                    "type": "string",
                    "minLength": 3
                },
                "phone": {
                    "type": "string"
                }
            }
        },
        "req.UserVerifyOtpReq": {
            "type": "object",
            "required": [
                "otp"
            ],
            "properties": {
                "otp": {
                    "type": "string"
                }
            }
        },
        "req.VerifyPaymentReq": {
            "type": "object",
            "required": [
                "razorpay_order_id",
                "razorpay_payment_id",
                "razorpay_signature"
            ],
            "properties": {
                "razorpay_order_id": {
                    "type": "string"
                },
                "razorpay_payment_id": {
                    "type": "string"
                },
                "razorpay_signature": {
                    "type": "string"
                }
            }
        },
        "req.WaitlistReq": {
            "type": "object",
            "required": [
                "email",
                "plan"
            ],
            "properties": {
                "email": {
                    "type": "string"
                },
                "plan": {
                    "type": "string"
                },
                "source": {
                    "type": "string",
                    "maxLength": 64
                }
            }
        },
        "res.AdSlotsRes": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.AdSlot"
                    }
                }
            }
        },
        "res.AdminAuditListRes": {
            "type": "object",
            "properties": {
                "entries": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.AuditRow"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "message": {
                    "type": "string"
                },
                "page": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total": {
                    "type": "integer"
                },
                "totalPages": {
                    "type": "integer"
                }
            }
        },
        "res.AdminDishListRes": {
            "type": "object",
            "properties": {
                "dishes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.AdminDish"
                    }
                },
                "limit": {
                    "type": "integer"
                },
                "message": {
                    "type": "string"
                },
                "page": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total": {
                    "type": "integer"
                },
                "totalPages": {
                    "type": "integer"
                }
            }
        },
        "res.AdminLoginRes": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "res.AdminMeRes": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AdminOrderDetailRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "result": {
                    "$ref": "#/definitions/entities.AdminOrderDetail"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AdminOrderListRes": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "message": {
                    "type": "string"
                },
                "orders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.AdminOrderRow"
                    }
                },
                "page": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total": {
                    "type": "integer"
                },
                "totalPages": {
                    "type": "integer"
                }
            }
        },
        "res.AdminPlan": {
            "type": "object",
            "properties": {
                "accountManagerEnabled": {
                    "type": "boolean"
                },
                "adsEnabled": {
                    "type": "boolean"
                },
                "available": {
                    "type": "boolean"
                },
                "cta": {
                    "type": "string"
                },
                "customDomainEnabled": {
                    "description": "Structural capabilities the marketing cards highlight.",
                    "type": "boolean"
                },
                "description": {
                    "type": "string"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicPlanFeature"
                    }
                },
                "isDefault": {
                    "type": "boolean"
                },
                "name": {
                    "type": "string"
                },
                "platformBrandingShown": {
                    "type": "boolean"
                },
                "publicStatus": {
                    "type": "string"
                },
                "recommended": {
                    "type": "boolean"
                },
                "resellerEnabled": {
                    "type": "boolean"
                },
                "sellerCount": {
                    "type": "integer"
                },
                "slug": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "whiteLabelEnabled": {
                    "type": "boolean"
                }
            }
        },
        "res.AdminPlansRes": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.AdminPlan"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AdminSalesReportRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "result": {
                    "$ref": "#/definitions/entities.AdminSalesReport"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AdminSellerPlan": {
            "type": "object",
            "properties": {
                "accountManagerId": {
                    "type": "string"
                },
                "adsEnabled": {
                    "type": "boolean"
                },
                "endsAt": {
                    "type": "string"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicPlanFeature"
                    }
                },
                "history": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PlanAssignment"
                    }
                },
                "partnerId": {
                    "type": "string"
                },
                "partnerName": {
                    "type": "string"
                },
                "planName": {
                    "type": "string"
                },
                "planSlug": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "startedAt": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "usingFallback": {
                    "type": "boolean"
                }
            }
        },
        "res.AdminSellerPlanRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "result": {
                    "$ref": "#/definitions/res.AdminSellerPlan"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AllCategoriesRes": {
            "type": "object",
            "properties": {
                "categories": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Category"
                    }
                },
                "error": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.AssignPlanReq": {
            "type": "object",
            "required": [
                "planSlug"
            ],
            "properties": {
                "planSlug": {
                    "type": "string"
                }
            }
        },
        "res.CancelOrderRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "orderId": {
                    "type": "string"
                },
                "orderStatus": {
                    "type": "string"
                },
                "paymentStatus": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.CommonRes": {
            "type": "object",
            "properties": {
                "error": {},
                "message": {
                    "type": "string"
                },
                "result": {},
                "status": {
                    "type": "string"
                }
            }
        },
        "res.CouponRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "result": {
                    "$ref": "#/definitions/entities.Coupon"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.DishListRes": {
            "type": "object",
            "properties": {
                "dishList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Dish"
                    }
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.GetAllCouponsForUserRes": {
            "type": "object",
            "properties": {
                "coupons": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Coupon"
                    }
                },
                "error": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.GetRedeemedCouponsRes": {
            "type": "object",
            "properties": {
                "error": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "redeemedCoupons": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.RedeemedCoupon"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.OfferListRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "offerList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.CategoryOffer"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.PlanAssignment": {
            "type": "object",
            "properties": {
                "endsAt": {
                    "type": "string"
                },
                "planName": {
                    "type": "string"
                },
                "planSlug": {
                    "type": "string"
                },
                "source": {
                    "type": "string"
                },
                "startedAt": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.PlansRes": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicPlan"
                    }
                }
            }
        },
        "res.PublicDish": {
            "type": "object",
            "properties": {
                "availability": {
                    "type": "boolean"
                },
                "description": {
                    "type": "string"
                },
                "dishId": {
                    "type": "string"
                },
                "imageUrl": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price": {
                    "type": "number"
                },
                "salePrice": {
                    "type": "number"
                }
            }
        },
        "res.PublicPlan": {
            "type": "object",
            "properties": {
                "accountManagerEnabled": {
                    "type": "boolean"
                },
                "adsEnabled": {
                    "type": "boolean"
                },
                "available": {
                    "type": "boolean"
                },
                "cta": {
                    "type": "string"
                },
                "customDomainEnabled": {
                    "description": "Structural capabilities the marketing cards highlight.",
                    "type": "boolean"
                },
                "description": {
                    "type": "string"
                },
                "features": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicPlanFeature"
                    }
                },
                "name": {
                    "type": "string"
                },
                "platformBrandingShown": {
                    "type": "boolean"
                },
                "publicStatus": {
                    "type": "string"
                },
                "recommended": {
                    "type": "boolean"
                },
                "resellerEnabled": {
                    "type": "boolean"
                },
                "slug": {
                    "type": "string"
                },
                "whiteLabelEnabled": {
                    "type": "boolean"
                }
            }
        },
        "res.PublicPlanFeature": {
            "type": "object",
            "properties": {
                "enabled": {
                    "type": "boolean"
                },
                "key": {
                    "type": "string"
                },
                "limitValue": {
                    "type": "integer"
                }
            }
        },
        "res.PublicRestaurantAddress": {
            "type": "object",
            "properties": {
                "complement": {
                    "type": "string"
                },
                "number": {
                    "type": "string"
                },
                "postalCode": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                }
            }
        },
        "res.PublicRestaurantDeliveryArea": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string"
                },
                "neighborhood": {
                    "type": "string"
                }
            }
        },
        "res.PublicRestaurantDetail": {
            "type": "object",
            "properties": {
                "address": {
                    "$ref": "#/definitions/res.PublicRestaurantAddress"
                },
                "averageDeliveryMinutes": {
                    "type": "integer"
                },
                "city": {
                    "type": "string"
                },
                "coverUrl": {
                    "type": "string"
                },
                "cuisines": {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                "deliveryAreas": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicRestaurantDeliveryArea"
                    }
                },
                "deliveryFee": {
                    "type": "number"
                },
                "description": {
                    "type": "string"
                },
                "dishes": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicDish"
                    }
                },
                "geo": {
                    "$ref": "#/definitions/res.PublicRestaurantGeo"
                },
                "hours": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicRestaurantHours"
                    }
                },
                "isOpenNow": {
                    "type": "boolean"
                },
                "logoUrl": {
                    "type": "string"
                },
                "minimumOrder": {
                    "type": "number"
                },
                "name": {
                    "type": "string"
                },
                "neighborhood": {
                    "type": "string"
                },
                "nextOpening": {
                    "type": "string"
                },
                "phone": {
                    "type": "string"
                },
                "priceRange": {
                    "type": "string"
                },
                "rating": {
                    "type": "number"
                },
                "ratingCount": {
                    "type": "integer"
                },
                "sellerId": {
                    "type": "string"
                },
                "slug": {
                    "type": "string"
                },
                "state": {
                    "type": "string"
                },
                "supportsDelivery": {
                    "type": "boolean"
                },
                "supportsPickup": {
                    "type": "boolean"
                },
                "whatsapp": {
                    "type": "string"
                }
            }
        },
        "res.PublicRestaurantGeo": {
            "type": "object",
            "properties": {
                "lat": {
                    "type": "number"
                },
                "lng": {
                    "type": "number"
                }
            }
        },
        "res.PublicRestaurantHourPeriod": {
            "type": "object",
            "properties": {
                "close": {
                    "type": "string"
                },
                "open": {
                    "type": "string"
                }
            }
        },
        "res.PublicRestaurantHours": {
            "type": "object",
            "properties": {
                "day": {
                    "type": "integer"
                },
                "periods": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicRestaurantHourPeriod"
                    }
                }
            }
        },
        "res.PublicSeller": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "pinCode": {
                    "type": "string"
                },
                "sellerId": {
                    "type": "string"
                }
            }
        },
        "res.RestaurantDetailRes": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/res.PublicRestaurantDetail"
                }
            }
        },
        "res.RestaurantListRes": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicRestaurantDetail"
                    }
                }
            }
        },
        "res.SellerCouponsRes": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Coupon"
                    }
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.SellerListRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "sellerList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/res.PublicSeller"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.SellerLoginRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "sellerStatus": {
                    "description": "SellerStatus is set by /seller/register only (\"Verified\" or \"Pending\").",
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "res.SellerPlan": {
            "type": "object",
            "properties": {
                "endsAt": {
                    "type": "string"
                },
                "plan": {
                    "$ref": "#/definitions/res.PublicPlan"
                },
                "source": {
                    "type": "string"
                },
                "startedAt": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "usingFallback": {
                    "description": "MigrationFree is true when the seller is on the fallback default plan\nbecause no subscription row was found (legacy row).",
                    "type": "boolean"
                }
            }
        },
        "res.SellerPlanRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "result": {
                    "$ref": "#/definitions/res.SellerPlan"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.SingleDishRes": {
            "type": "object",
            "properties": {
                "dish": {
                    "$ref": "#/definitions/entities.Dish"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.SingleSellerRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "seller": {
                    "$ref": "#/definitions/res.PublicSeller"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.UserDetailsRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "user": {
                    "$ref": "#/definitions/entities.User"
                }
            }
        },
        "res.UserListRes": {
            "type": "object",
            "properties": {
                "limit": {
                    "type": "integer"
                },
                "message": {
                    "type": "string"
                },
                "page": {
                    "description": "Pagination (GET /admin/users?p=\u0026l=).",
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total": {
                    "type": "integer"
                },
                "totalPages": {
                    "type": "integer"
                },
                "userList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.User"
                    }
                }
            }
        },
        "res.UserLoginRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "res.ViewAddressListRes": {
            "type": "object",
            "properties": {
                "addressList": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Address"
                    }
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.ViewAddressRes": {
            "type": "object",
            "properties": {
                "address": {
                    "$ref": "#/definitions/entities.Address"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.ViewAllOrdersRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "orders": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.Order"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.ViewCartRes": {
            "type": "object",
            "properties": {
                "cart": {
                    "$ref": "#/definitions/entities.Cart"
                },
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.ViewOrderRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "order": {
                    "$ref": "#/definitions/entities.Order"
                },
                "orderItems": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/entities.OrderItem"
                    }
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "res.WaitlistRes": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "Bearer": {
            "description": "Authentication using a JSON Web Token (JWT). The token should be included in the request header named \"Authorization\". The format of the header is: Authorization: Bearer \u003ctoken\u003e. Replace `\u003ctoken\u003e` with the actual JWT token.",
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}