{
    "schemes": [
        "http"
    ],
    "swagger": "2.0",
    "info": {
        "description": "API REST B2B para marketplace farmacêutico com split de pagamento e rastreabilidade.",
        "title": "SaveInMed Performance Core API",
        "contact": {
            "name": "Engenharia SaveInMed",
            "email": "devops@saveinmed.com"
        },
        "version": "1.0"
    },
    "basePath": "/",
    "paths": {
        "/api/v1/auth/login": {
            "post": {
                "description": "Autentica usuário e retorna token JWT.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Login",
                "parameters": [
                    {
                        "description": "Credenciais",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.loginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.authResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/logout": {
            "post": {
                "description": "Endpoint para logout (invalidação client-side).",
                "tags": [
                    "Autenticação"
                ],
                "summary": "Logout",
                "responses": {
                    "204": {
                        "description": "No Content",
                        "schema": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "/api/v1/auth/password/forgot": {
            "post": {
                "description": "Gera um token de redefinição de senha.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Solicitar redefinição de senha",
                "parameters": [
                    {
                        "description": "Email do usuário",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.forgotPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "202": {
                        "description": "Accepted",
                        "schema": {
                            "$ref": "#/definitions/handler.resetTokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/password/reset": {
            "post": {
                "description": "Atualiza a senha usando o token de redefinição.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Redefinir senha",
                "parameters": [
                    {
                        "description": "Token e nova senha",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.resetPasswordRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.messageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/refresh-token": {
            "post": {
                "description": "Gera um novo JWT a partir de um token válido.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Atualizar token",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Bearer token",
                        "name": "Authorization",
                        "in": "header",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.authResponse"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/register": {
            "post": {
                "description": "Cria um usuário e opcionalmente uma empresa, retornando token JWT.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Cadastro de usuário",
                "parameters": [
                    {
                        "description": "Dados do usuário e empresa",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.registerAuthRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.authResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/register/customer": {
            "post": {
                "description": "Cria um usuário do tipo cliente e opcionalmente uma empresa, retornando token JWT.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Cadastro de cliente",
                "parameters": [
                    {
                        "description": "Dados do usuário e empresa",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.registerAuthRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.authResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/register/tenant": {
            "post": {
                "description": "Cria um usuário do tipo tenant e opcionalmente uma empresa, retornando token JWT.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Cadastro de tenant",
                "parameters": [
                    {
                        "description": "Dados do usuário e empresa",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.registerAuthRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/handler.authResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/verify-email": {
            "post": {
                "description": "Marca o email como verificado usando um token JWT.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Autenticação"
                ],
                "summary": "Verificar email",
                "parameters": [
                    {
                        "description": "Token de verificação",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.verifyEmailRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/handler.messageResponse"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/cart": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Carrinho"
                ],
                "summary": "Obter carrinho",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.CartSummary"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Carrinho"
                ],
                "summary": "Adicionar item ao carrinho",
                "parameters": [
                    {
                        "description": "Item do carrinho",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.addCartItemRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.CartSummary"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/cart/{id}": {
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "tags": [
                    "Carrinho"
                ],
                "summary": "Remover item do carrinho",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Cart item ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.CartSummary"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/companies": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Lista empresas",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.Company"
                            }
                        }
                    }
                }
            },
            "post": {
                "description": "Cadastra farmácia, distribuidora ou administrador com CNPJ e licença sanitária.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Registro de empresas",
                "parameters": [
                    {
                        "description": "Dados da empresa",
                        "name": "company",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.registerCompanyRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.Company"
                        }
                    }
                }
            }
        },
        "/api/v1/companies/me": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Obter minha empresa",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Company"
                        }
                    }
                }
            }
        },
        "/api/v1/companies/{id}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Obter empresa",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Company ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Company"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Empresas"
                ],
                "summary": "Remover empresa",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Company ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": ""
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "patch": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Atualizar empresa",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Company ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Campos para atualização",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.updateCompanyRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Company"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/companies/{id}/rating": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Obter avaliação da empresa",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Company ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.CompanyRating"
                        }
                    }
                }
            }
        },
        "/api/v1/companies/{id}/verify": {
            "patch": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "tags": [
                    "Empresas"
                ],
                "summary": "Verificar empresa",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Company ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Company"
                        }
                    }
                }
            }
        },
        "/api/v1/dashboard/admin": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Dashboard"
                ],
                "summary": "Dashboard do administrador",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.AdminDashboard"
                        }
                    }
                }
            }
        },
        "/api/v1/dashboard/seller": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Dashboard"
                ],
                "summary": "Dashboard do vendedor",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Seller ID",
                        "name": "seller_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.SellerDashboard"
                        }
                    }
                }
            }
        },
        "/api/v1/inventory": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Estoque"
                ],
                "summary": "Listar estoque",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Dias para expiração",
                        "name": "expires_in_days",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.InventoryItem"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/inventory/adjust": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Estoque"
                ],
                "summary": "Ajustar estoque",
                "parameters": [
                    {
                        "description": "Ajuste de estoque",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.inventoryAdjustRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.InventoryItem"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/marketplace/records": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Marketplace"
                ],
                "summary": "Busca avançada no marketplace",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Busca textual",
                        "name": "query",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Campo de ordenação (created_at|updated_at)",
                        "name": "sort_by",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Direção (asc|desc)",
                        "name": "sort_order",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Data mínima (RFC3339)",
                        "name": "created_after",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Data máxima (RFC3339)",
                        "name": "created_before",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Página",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Itens por página",
                        "name": "page_size",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.ProductPaginationResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/orders": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pedidos"
                ],
                "summary": "Listar pedidos",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.Order"
                            }
                        }
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pedidos"
                ],
                "summary": "Criação de pedido com split",
                "parameters": [
                    {
                        "description": "Pedido",
                        "name": "order",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.createOrderRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.Order"
                        }
                    }
                }
            }
        },
        "/api/v1/orders/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pedidos"
                ],
                "summary": "Consulta pedido",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Order"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "tags": [
                    "Pedidos"
                ],
                "summary": "Remover pedido",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": ""
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/orders/{id}/payment": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pagamentos"
                ],
                "summary": "Cria preferência de pagamento Mercado Pago com split nativo",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.PaymentPreference"
                        }
                    }
                }
            }
        },
        "/api/v1/orders/{id}/status": {
            "patch": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pedidos"
                ],
                "summary": "Atualiza status do pedido",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Novo status",
                        "name": "status",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.updateStatusRequest"
                        }
                    }
                ],
                "responses": {
                    "204": {
                        "description": ""
                    }
                }
            }
        },
        "/api/v1/payments/webhook": {
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Pagamentos"
                ],
                "summary": "Recebe notificações do Mercado Pago",
                "parameters": [
                    {
                        "description": "Evento do gateway",
                        "name": "notification",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/domain.PaymentWebhookEvent"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.PaymentSplitResult"
                        }
                    }
                }
            }
        },
        "/api/v1/products": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Produtos"
                ],
                "summary": "Lista catálogo com lote e validade",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.Product"
                            }
                        }
                    }
                }
            },
            "post": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Produtos"
                ],
                "summary": "Cadastro de produto com rastreabilidade de lote",
                "parameters": [
                    {
                        "description": "Produto",
                        "name": "product",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.registerProductRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.Product"
                        }
                    }
                }
            }
        },
        "/api/v1/products/search": {
            "get": {
                "description": "Retorna produtos ordenados por validade, com distância aproximada. Vendedor anônimo até checkout.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Produtos"
                ],
                "summary": "Busca avançada de produtos com filtros e distância",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Termo de busca",
                        "name": "search",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Preço mínimo em centavos",
                        "name": "min_price",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Preço máximo em centavos",
                        "name": "max_price",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Distância máxima em km",
                        "name": "max_distance",
                        "in": "query"
                    },
                    {
                        "type": "number",
                        "description": "Latitude do comprador",
                        "name": "lat",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "number",
                        "description": "Longitude do comprador",
                        "name": "lng",
                        "in": "query",
                        "required": true
                    },
                    {
                        "type": "integer",
                        "description": "Página",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Itens por página",
                        "name": "page_size",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.ProductSearchPage"
                        }
                    }
                }
            }
        },
        "/api/v1/products/{id}": {
            "get": {
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Produtos"
                ],
                "summary": "Obter produto",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Product"
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "Produtos"
                ],
                "summary": "Remover produto",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": ""
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "patch": {
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Produtos"
                ],
                "summary": "Atualizar produto",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Product ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Campos para atualização",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.updateProductRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Product"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/reviews": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Avaliações"
                ],
                "summary": "Criar avaliação",
                "parameters": [
                    {
                        "description": "Dados da avaliação",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.createReviewRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.Review"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/shipments": {
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Logistica"
                ],
                "summary": "Gera guia de postagem/transporte",
                "parameters": [
                    {
                        "description": "Dados de envio",
                        "name": "shipment",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.createShipmentRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.Shipment"
                        }
                    }
                }
            }
        },
        "/api/v1/shipments/{order_id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Logistica"
                ],
                "summary": "Rastreia entrega",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Order ID",
                        "name": "order_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.Shipment"
                        }
                    }
                }
            }
        },
        "/api/v1/shipping/calculate": {
            "post": {
                "description": "Calculates shipping or pickup options based on vendor config and buyer location.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Shipping"
                ],
                "summary": "Calculate shipping options",
                "parameters": [
                    {
                        "description": "Calculation inputs",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.shippingCalculateRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.ShippingOption"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/shipping/settings/{vendor_id}": {
            "get": {
                "description": "Returns pickup and delivery settings for a vendor.",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Shipping"
                ],
                "summary": "Get vendor shipping settings",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vendor ID",
                        "name": "vendor_id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.ShippingMethod"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "put": {
                "description": "Stores pickup and delivery settings for a vendor.",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Shipping"
                ],
                "summary": "Update vendor shipping settings",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Vendor ID",
                        "name": "vendor_id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Shipping settings",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.shippingSettingsRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "type": "array",
                            "items": {
                                "$ref": "#/definitions/domain.ShippingMethod"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/users": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Usuários"
                ],
                "summary": "Listar usuários",
                "parameters": [
                    {
                        "type": "integer",
                        "description": "Página",
                        "name": "page",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "description": "Tamanho da página",
                        "name": "page_size",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filtro por empresa",
                        "name": "company_id",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.UserPage"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Usuários"
                ],
                "summary": "Criar usuário",
                "parameters": [
                    {
                        "description": "Novo usuário",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.createUserRequest"
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "$ref": "#/definitions/domain.User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/users/{id}": {
            "get": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Usuários"
                ],
                "summary": "Obter usuário",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "put": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Usuários"
                ],
                "summary": "Atualizar usuário",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Campos para atualização",
                        "name": "payload",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/handler.updateUserRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/domain.User"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "BearerAuth": []
                    }
                ],
                "tags": [
                    "Usuários"
                ],
                "summary": "Excluir usuário",
                "parameters": [
                    {
                        "type": "string",
                        "description": "User ID",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "responses": {
                    "204": {
                        "description": "No Content",
                        "schema": {
                            "type": "string"
                        }
                    },
                    "400": {
                        "description": "Bad Request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "403": {
                        "description": "Forbidden",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "404": {
                        "description": "Not Found",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "500": {
                        "description": "Internal Server Error",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "domain.AdminDashboard": {
            "type": "object",
            "properties": {
                "gmv_cents": {
                    "type": "integer"
                },
                "new_companies": {
                    "type": "integer"
                },
                "window_start_at": {
                    "type": "string"
                }
            }
        },
        "domain.CartItem": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "buyer_id": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "product_id": {
                    "type": "string"
                },
                "product_name": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                },
                "unit_cents": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.CartSummary": {
            "type": "object",
            "properties": {
                "discount_cents": {
                    "type": "integer"
                },
                "discount_reason": {
                    "type": "string"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.CartItem"
                    }
                },
                "subtotal_cents": {
                    "type": "integer"
                },
                "total_cents": {
                    "type": "integer"
                }
            }
        },
        "domain.Company": {
            "type": "object",
            "properties": {
                "category": {
                    "description": "farmacia, distribuidora",
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "cnpj": {
                    "type": "string"
                },
                "corporate_name": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "is_verified": {
                    "type": "boolean"
                },
                "latitude": {
                    "description": "Location",
                    "type": "number"
                },
                "license_number": {
                    "type": "string"
                },
                "longitude": {
                    "type": "number"
                },
                "state": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.CompanyRating": {
            "type": "object",
            "properties": {
                "average_score": {
                    "type": "number"
                },
                "company_id": {
                    "type": "string"
                },
                "total_reviews": {
                    "type": "integer"
                }
            }
        },
        "domain.InventoryItem": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price_cents": {
                    "type": "integer"
                },
                "product_id": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.Order": {
            "type": "object",
            "properties": {
                "buyer_id": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.OrderItem"
                    }
                },
                "seller_id": {
                    "type": "string"
                },
                "shipping": {
                    "$ref": "#/definitions/domain.ShippingAddress"
                },
                "status": {
                    "$ref": "#/definitions/domain.OrderStatus"
                },
                "total_cents": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.OrderItem": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "order_id": {
                    "type": "string"
                },
                "product_id": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                },
                "unit_cents": {
                    "type": "integer"
                }
            }
        },
        "domain.OrderStatus": {
            "type": "string",
            "enum": [
                "Pendente",
                "Pago",
                "Faturado",
                "Entregue"
            ],
            "x-enum-varnames": [
                "OrderStatusPending",
                "OrderStatusPaid",
                "OrderStatusInvoiced",
                "OrderStatusDelivered"
            ]
        },
        "domain.PaymentPreference": {
            "type": "object",
            "properties": {
                "commission_pct": {
                    "type": "number"
                },
                "gateway": {
                    "type": "string"
                },
                "marketplace_fee": {
                    "type": "integer"
                },
                "order_id": {
                    "type": "string"
                },
                "payment_url": {
                    "type": "string"
                },
                "seller_receivable": {
                    "type": "integer"
                }
            }
        },
        "domain.PaymentSplitResult": {
            "type": "object",
            "properties": {
                "marketplace_fee": {
                    "type": "integer"
                },
                "order_id": {
                    "type": "string"
                },
                "payment_id": {
                    "type": "string"
                },
                "seller_receivable": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total_paid_amount": {
                    "type": "integer"
                }
            }
        },
        "domain.PaymentWebhookEvent": {
            "type": "object",
            "properties": {
                "marketplace_fee": {
                    "type": "integer"
                },
                "order_id": {
                    "type": "string"
                },
                "payment_id": {
                    "type": "string"
                },
                "seller_amount": {
                    "type": "integer"
                },
                "status": {
                    "type": "string"
                },
                "total_paid_amount": {
                    "type": "integer"
                }
            }
        },
        "domain.Product": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price_cents": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "stock": {
                    "type": "integer"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.ProductPaginationResponse": {
            "type": "object",
            "properties": {
                "current_page": {
                    "type": "integer"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.Product"
                    }
                },
                "total_count": {
                    "type": "integer"
                },
                "total_pages": {
                    "type": "integer"
                }
            }
        },
        "domain.ProductSearchPage": {
            "type": "object",
            "properties": {
                "page": {
                    "type": "integer"
                },
                "page_size": {
                    "type": "integer"
                },
                "products": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.ProductWithDistance"
                    }
                },
                "total": {
                    "type": "integer"
                }
            }
        },
        "domain.ProductWithDistance": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "distance_km": {
                    "type": "number"
                },
                "expires_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price_cents": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "stock": {
                    "type": "integer"
                },
                "tenant_city": {
                    "type": "string"
                },
                "tenant_state": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.Review": {
            "type": "object",
            "properties": {
                "buyer_id": {
                    "type": "string"
                },
                "comment": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "order_id": {
                    "type": "string"
                },
                "rating": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                }
            }
        },
        "domain.SellerDashboard": {
            "type": "object",
            "properties": {
                "low_stock_alerts": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.Product"
                    }
                },
                "orders_count": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "top_products": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.TopProduct"
                    }
                },
                "total_sales_cents": {
                    "type": "integer"
                }
            }
        },
        "domain.Shipment": {
            "type": "object",
            "properties": {
                "carrier": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "external_tracking": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "order_id": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "tracking_code": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                }
            }
        },
        "domain.ShippingAddress": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string"
                },
                "complement": {
                    "type": "string"
                },
                "country": {
                    "type": "string"
                },
                "district": {
                    "type": "string"
                },
                "number": {
                    "type": "string"
                },
                "recipient_name": {
                    "type": "string"
                },
                "state": {
                    "type": "string"
                },
                "street": {
                    "type": "string"
                },
                "zip_code": {
                    "type": "string"
                }
            }
        },
        "domain.ShippingMethod": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "created_at": {
                    "type": "string"
                },
                "free_shipping_threshold_cents": {
                    "type": "integer"
                },
                "id": {
                    "type": "string"
                },
                "max_radius_km": {
                    "type": "number"
                },
                "min_fee_cents": {
                    "type": "integer"
                },
                "pickup_address": {
                    "type": "string"
                },
                "pickup_hours": {
                    "type": "string"
                },
                "preparation_minutes": {
                    "type": "integer"
                },
                "price_per_km_cents": {
                    "type": "integer"
                },
                "type": {
                    "$ref": "#/definitions/domain.ShippingMethodType"
                },
                "updated_at": {
                    "type": "string"
                },
                "vendor_id": {
                    "type": "string"
                }
            }
        },
        "domain.ShippingMethodType": {
            "type": "string",
            "enum": [
                "pickup",
                "own_delivery",
                "third_party_delivery"
            ],
            "x-enum-varnames": [
                "ShippingMethodPickup",
                "ShippingMethodOwnDelivery",
                "ShippingMethodThirdParty"
            ]
        },
        "domain.ShippingOption": {
            "type": "object",
            "properties": {
                "description": {
                    "type": "string"
                },
                "distance_km": {
                    "type": "number"
                },
                "estimated_minutes": {
                    "type": "integer"
                },
                "type": {
                    "type": "string"
                },
                "value_cents": {
                    "type": "integer"
                }
            }
        },
        "domain.TopProduct": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string"
                },
                "product_id": {
                    "type": "string"
                },
                "revenue_cents": {
                    "type": "integer"
                },
                "total_quantity": {
                    "type": "integer"
                }
            }
        },
        "domain.User": {
            "type": "object",
            "properties": {
                "company_id": {
                    "type": "string"
                },
                "created_at": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "email_verified": {
                    "type": "boolean"
                },
                "id": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "updated_at": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "domain.UserPage": {
            "type": "object",
            "properties": {
                "page": {
                    "type": "integer"
                },
                "page_size": {
                    "type": "integer"
                },
                "total": {
                    "type": "integer"
                },
                "users": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.User"
                    }
                }
            }
        },
        "handler.addCartItemRequest": {
            "type": "object",
            "properties": {
                "product_id": {
                    "type": "string"
                },
                "quantity": {
                    "type": "integer"
                }
            }
        },
        "handler.authResponse": {
            "type": "object",
            "properties": {
                "expires_at": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "handler.createOrderRequest": {
            "type": "object",
            "properties": {
                "buyer_id": {
                    "type": "string"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/domain.OrderItem"
                    }
                },
                "seller_id": {
                    "type": "string"
                },
                "shipping": {
                    "$ref": "#/definitions/domain.ShippingAddress"
                }
            }
        },
        "handler.createReviewRequest": {
            "type": "object",
            "properties": {
                "comment": {
                    "type": "string"
                },
                "order_id": {
                    "type": "string"
                },
                "rating": {
                    "type": "integer"
                }
            }
        },
        "handler.createShipmentRequest": {
            "type": "object",
            "properties": {
                "carrier": {
                    "type": "string"
                },
                "external_tracking": {
                    "type": "string"
                },
                "order_id": {
                    "type": "string"
                },
                "tracking_code": {
                    "type": "string"
                }
            }
        },
        "handler.createUserRequest": {
            "type": "object",
            "properties": {
                "company_id": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "handler.forgotPasswordRequest": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                }
            }
        },
        "handler.inventoryAdjustRequest": {
            "type": "object",
            "properties": {
                "delta": {
                    "type": "integer"
                },
                "product_id": {
                    "type": "string"
                },
                "reason": {
                    "type": "string"
                }
            }
        },
        "handler.loginRequest": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "handler.messageResponse": {
            "type": "object",
            "properties": {
                "message": {
                    "type": "string"
                }
            }
        },
        "handler.registerAuthRequest": {
            "type": "object",
            "properties": {
                "company": {
                    "$ref": "#/definitions/handler.registerCompanyTarget"
                },
                "company_id": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "handler.registerCompanyRequest": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "cnpj": {
                    "type": "string"
                },
                "corporate_name": {
                    "type": "string"
                },
                "latitude": {
                    "type": "number"
                },
                "license_number": {
                    "type": "string"
                },
                "longitude": {
                    "type": "number"
                },
                "state": {
                    "type": "string"
                }
            }
        },
        "handler.registerCompanyTarget": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "cnpj": {
                    "type": "string"
                },
                "corporate_name": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "latitude": {
                    "type": "number"
                },
                "license_number": {
                    "type": "string"
                },
                "longitude": {
                    "type": "number"
                },
                "state": {
                    "type": "string"
                }
            }
        },
        "handler.registerProductRequest": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price_cents": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "stock": {
                    "type": "integer"
                }
            }
        },
        "handler.resetPasswordRequest": {
            "type": "object",
            "properties": {
                "password": {
                    "type": "string"
                },
                "token": {
                    "type": "string"
                }
            }
        },
        "handler.resetTokenResponse": {
            "type": "object",
            "properties": {
                "expires_at": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "reset_token": {
                    "type": "string"
                }
            }
        },
        "handler.shippingCalculateRequest": {
            "type": "object",
            "properties": {
                "address_id": {
                    "type": "string"
                },
                "buyer_latitude": {
                    "type": "number"
                },
                "buyer_longitude": {
                    "type": "number"
                },
                "cart_total_cents": {
                    "type": "integer"
                },
                "postal_code": {
                    "type": "string"
                },
                "vendor_id": {
                    "type": "string"
                }
            }
        },
        "handler.shippingMethodRequest": {
            "type": "object",
            "properties": {
                "active": {
                    "type": "boolean"
                },
                "free_shipping_threshold_cents": {
                    "type": "integer"
                },
                "max_radius_km": {
                    "type": "number"
                },
                "min_fee_cents": {
                    "type": "integer"
                },
                "pickup_address": {
                    "type": "string"
                },
                "pickup_hours": {
                    "type": "string"
                },
                "preparation_minutes": {
                    "type": "integer"
                },
                "price_per_km_cents": {
                    "type": "integer"
                },
                "type": {
                    "type": "string"
                }
            }
        },
        "handler.shippingSettingsRequest": {
            "type": "object",
            "properties": {
                "methods": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/handler.shippingMethodRequest"
                    }
                }
            }
        },
        "handler.updateCompanyRequest": {
            "type": "object",
            "properties": {
                "category": {
                    "type": "string"
                },
                "city": {
                    "type": "string"
                },
                "cnpj": {
                    "type": "string"
                },
                "corporate_name": {
                    "type": "string"
                },
                "is_verified": {
                    "type": "boolean"
                },
                "latitude": {
                    "type": "number"
                },
                "license_number": {
                    "type": "string"
                },
                "longitude": {
                    "type": "number"
                },
                "state": {
                    "type": "string"
                }
            }
        },
        "handler.updateProductRequest": {
            "type": "object",
            "properties": {
                "batch": {
                    "type": "string"
                },
                "description": {
                    "type": "string"
                },
                "expires_at": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "price_cents": {
                    "type": "integer"
                },
                "seller_id": {
                    "type": "string"
                },
                "stock": {
                    "type": "integer"
                }
            }
        },
        "handler.updateStatusRequest": {
            "type": "object",
            "properties": {
                "status": {
                    "type": "string"
                }
            }
        },
        "handler.updateUserRequest": {
            "type": "object",
            "properties": {
                "company_id": {
                    "type": "string"
                },
                "email": {
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "password": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "handler.verifyEmailRequest": {
            "type": "object",
            "properties": {
                "token": {
                    "type": "string"
                }
            }
        }
    },
    "securityDefinitions": {
        "BearerAuth": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header"
        }
    }
}