{"openapi":"3.1.0","info":{"title":"API E-Commerce Didática - Treinamento Postman","description":"\n    ## 🚀 API para Treinamento de Integração com Postman\n    \n    Esta API foi mapeada diretamente com o banco de dados PostgreSQL da sua VPS para ensinar:\n    - **Autenticação JWT**: Endpoint `POST /api/v1/auth/login` para geração de Bearer Token.\n    - **Clientes**: CRUD Completo (GET, POST, PUT, PATCH, DELETE protegido por Token).\n    - **Produtos e Categorias**: Filtros e atualizações de estoque.\n    - **Pedidos e Itens**: Payloads JSON Aninhados e regras de negócio.\n    \n    ### 📥 Importação no Postman\n    Importe a especificação diretamente no Postman inserindo o link:\n    `http://localhost:8000/openapi.json`\n    ","version":"2.0.0"},"paths":{"/api/v1/auth/me":{"get":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Obter dados do usuário autenticado","operationId":"get_me_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auth/register":{"post":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Cadastrar novo usuário e enviar OTP de verificação via Resend","operationId":"register_user_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UsuarioCreate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/verify-email":{"post":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Validar código OTP de 6 dígitos enviado por e-mail","operationId":"verify_email_api_v1_auth_verify_email_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Efetuar login e obter Token JWT","operationId":"login_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/forgot-password":{"post":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Solicitar código de recuperação de senha por e-mail via Resend","operationId":"forgot_password_api_v1_auth_forgot_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/reset-password":{"post":{"tags":["0. Autenticação & Gateway de Usuários"],"summary":"Redefinir senha com código OTP","operationId":"reset_password_api_v1_auth_reset_password_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clientes":{"get":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Listar todos os clientes","operationId":"list_clientes_api_v1_clientes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Busca por nome, CPF ou email","title":"Search"},"description":"Busca por nome, CPF ou email"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteListEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Cadastrar novo cliente","operationId":"create_cliente_api_v1_clientes_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/clientes/{cliente_id}":{"get":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Obter cliente por ID","operationId":"get_cliente_api_v1_clientes__cliente_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cliente_id","in":"path","required":true,"schema":{"type":"integer","title":"Cliente Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Atualização completa de cliente (PUT)","operationId":"update_cliente_full_api_v1_clientes__cliente_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cliente_id","in":"path","required":true,"schema":{"type":"integer","title":"Cliente Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Atualização parcial de cliente (PATCH)","operationId":"update_cliente_partial_api_v1_clientes__cliente_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cliente_id","in":"path","required":true,"schema":{"type":"integer","title":"Cliente Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientePatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClienteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["1. Clientes (CRUD Básico)"],"summary":"Deletar cliente (Exige Token JWT)","operationId":"delete_cliente_api_v1_clientes__cliente_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cliente_id","in":"path","required":true,"schema":{"type":"integer","title":"Cliente Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/produtos/categorias":{"get":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Listar categorias de produtos","operationId":"list_categorias_api_v1_produtos_categorias_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaListEnvelope"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Criar categoria de produto","operationId":"create_categoria_api_v1_produtos_categorias_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/produtos/categorias/{categoria_id}":{"put":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Editar categoria de produto","operationId":"update_categoria_api_v1_produtos_categorias__categoria_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"categoria_id","in":"path","required":true,"schema":{"type":"integer","title":"Categoria Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Deletar categoria de produto","operationId":"delete_categoria_api_v1_produtos_categorias__categoria_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"categoria_id","in":"path","required":true,"schema":{"type":"integer","title":"Categoria Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/produtos":{"get":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Listar produtos com filtros","operationId":"list_produtos_api_v1_produtos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Busca por nome ou descrição","title":"Search"},"description":"Busca por nome ou descrição"},{"name":"categoria_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filtrar por ID da categoria","title":"Categoria Id"},"description":"Filtrar por ID da categoria"},{"name":"ativo","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Filtrar por status ativo","title":"Ativo"},"description":"Filtrar por status ativo"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoListEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Criar produto","operationId":"create_produto_api_v1_produtos_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/produtos/{produto_id}":{"get":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Obter produto por ID","operationId":"get_produto_api_v1_produtos__produto_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"produto_id","in":"path","required":true,"schema":{"type":"integer","title":"Produto Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Atualização completa do produto (PUT)","operationId":"update_produto_full_api_v1_produtos__produto_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"produto_id","in":"path","required":true,"schema":{"type":"integer","title":"Produto Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Atualização parcial do produto (PATCH)","operationId":"update_produto_partial_api_v1_produtos__produto_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"produto_id","in":"path","required":true,"schema":{"type":"integer","title":"Produto Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProdutoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["2. Produtos & Categorias (Filtros e Relacionamentos)"],"summary":"Deletar produto (Exige Token JWT)","operationId":"delete_produto_api_v1_produtos__produto_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"produto_id","in":"path","required":true,"schema":{"type":"integer","title":"Produto Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pedidos":{"get":{"tags":["3. Pedidos & Pagamentos (Payloads Aninhados e Regras de Negócio)"],"summary":"Listar todos os pedidos","operationId":"list_pedidos_api_v1_pedidos_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"cliente_id","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Filtrar por ID do cliente","title":"Cliente Id"},"description":"Filtrar por ID do cliente"},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrar por status (ABERTO, PAGO, ENVIADO, CANCELADO)","title":"Status"},"description":"Filtrar por status (ABERTO, PAGO, ENVIADO, CANCELADO)"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoListEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["3. Pedidos & Pagamentos (Payloads Aninhados e Regras de Negócio)"],"summary":"Criar novo pedido (com itens aninhados)","operationId":"create_pedido_api_v1_pedidos_post","security":[{"HTTPBearer":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pedidos/{pedido_id}":{"get":{"tags":["3. Pedidos & Pagamentos (Payloads Aninhados e Regras de Negócio)"],"summary":"Obter detalhes de um pedido por ID","operationId":"get_pedido_api_v1_pedidos__pedido_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pedido_id","in":"path","required":true,"schema":{"type":"integer","title":"Pedido Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pedidos/{pedido_id}/status":{"patch":{"tags":["3. Pedidos & Pagamentos (Payloads Aninhados e Regras de Negócio)"],"summary":"Atualizar status de um pedido","operationId":"update_pedido_status_api_v1_pedidos__pedido_id__status_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"pedido_id","in":"path","required":true,"schema":{"type":"integer","title":"Pedido Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoStatusUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PedidoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/pedidos/pagamentos":{"post":{"tags":["3. Pedidos & Pagamentos (Payloads Aninhados e Regras de Negócio)"],"summary":"Registrar pagamento de um pedido","operationId":"create_pagamento_api_v1_pedidos_pagamentos_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagamentoCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PagamentoResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/api/v1/auditoria":{"get":{"tags":["4. Trilha de Auditoria (Logs & Governança)"],"summary":"Listar registros de auditoria","operationId":"list_logs_auditoria_api_v1_auditoria_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"search","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Busca nos detalhes ou usuário","title":"Search"},"description":"Busca nos detalhes ou usuário"},{"name":"entidade","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrar por tipo de entidade (Cliente, Produto, Categoria, Pedido, Pagamento)","title":"Entidade"},"description":"Filtrar por tipo de entidade (Cliente, Produto, Categoria, Pedido, Pagamento)"},{"name":"acao","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filtrar por tipo de ação (CRIAR, ATUALIZAR, DELETAR, PAGAMENTO)","title":"Acao"},"description":"Filtrar por tipo de ação (CRIAR, ATUALIZAR, DELETAR, PAGAMENTO)"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":500,"minimum":1,"description":"Quantidade limite de registros","default":100,"title":"Limit"},"description":"Quantidade limite de registros"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogAuditoriaListEnvelope"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/":{"get":{"tags":["Status"],"summary":"Root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"CategoriaCreate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome da categoria","example":"Informática"}},"type":"object","required":["nome"],"title":"CategoriaCreate"},"CategoriaListEnvelope":{"properties":{"total":{"type":"integer","title":"Total","description":"Total de categorias encontradas","example":3},"data":{"items":{"$ref":"#/components/schemas/CategoriaResponse"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"CategoriaListEnvelope"},"CategoriaResponse":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome da categoria","example":"Informática"},"id":{"type":"integer","title":"Id"}},"type":"object","required":["nome","id"],"title":"CategoriaResponse"},"CategoriaUpdate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome da categoria","example":"Informática"}},"type":"object","required":["nome"],"title":"CategoriaUpdate"},"ClienteCreate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome completo do cliente","example":"João da Silva"},"cpf":{"type":"string","title":"Cpf","description":"CPF (11 dígitos numéricos)","example":"11122233344"},"email":{"type":"string","title":"Email","description":"E-mail de contato","example":"joao.silva@email.com"},"telefone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefone","description":"Telefone com DDD","example":"11999998888"},"data_nascimento":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Nascimento","description":"Data de nascimento","example":"1995-08-20"}},"type":"object","required":["nome","cpf","email"],"title":"ClienteCreate"},"ClienteListEnvelope":{"properties":{"total":{"type":"integer","title":"Total","description":"Total de clientes encontrados","example":3},"data":{"items":{"$ref":"#/components/schemas/ClienteResponse"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"ClienteListEnvelope"},"ClientePatch":{"properties":{"nome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nome"},"cpf":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cpf"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"telefone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefone"},"data_nascimento":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Nascimento"}},"type":"object","title":"ClientePatch"},"ClienteResponse":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome completo do cliente","example":"João da Silva"},"cpf":{"type":"string","title":"Cpf","description":"CPF (11 dígitos numéricos)","example":"11122233344"},"email":{"type":"string","title":"Email","description":"E-mail de contato","example":"joao.silva@email.com"},"telefone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefone","description":"Telefone com DDD","example":"11999998888"},"data_nascimento":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Nascimento","description":"Data de nascimento","example":"1995-08-20"},"id":{"type":"integer","title":"Id"},"criado_em":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Criado Em"}},"type":"object","required":["nome","cpf","email","id"],"title":"ClienteResponse"},"ClienteUpdate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome completo do cliente","example":"João da Silva"},"cpf":{"type":"string","title":"Cpf","description":"CPF (11 dígitos numéricos)","example":"11122233344"},"email":{"type":"string","title":"Email","description":"E-mail de contato","example":"joao.silva@email.com"},"telefone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Telefone","description":"Telefone com DDD","example":"11999998888"},"data_nascimento":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Data Nascimento","description":"Data de nascimento","example":"1995-08-20"}},"type":"object","required":["nome","cpf","email"],"title":"ClienteUpdate"},"ForgotPasswordRequest":{"properties":{"email":{"type":"string","title":"Email","example":"ana@empresa.com"}},"type":"object","required":["email"],"title":"ForgotPasswordRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ItemPedidoCreate":{"properties":{"produto_id":{"type":"integer","title":"Produto Id","description":"ID do produto a ser comprado","example":1},"quantidade":{"type":"integer","minimum":1.0,"title":"Quantidade","description":"Quantidade de itens","example":2}},"type":"object","required":["produto_id","quantidade"],"title":"ItemPedidoCreate"},"ItemPedidoResponse":{"properties":{"pedido_id":{"type":"integer","title":"Pedido Id"},"produto_id":{"type":"integer","title":"Produto Id"},"quantidade":{"type":"integer","title":"Quantidade"},"preco_unitario":{"type":"number","title":"Preco Unitario"},"produto":{"anyOf":[{"$ref":"#/components/schemas/ProdutoResponse"},{"type":"null"}]}},"type":"object","required":["pedido_id","produto_id","quantidade","preco_unitario"],"title":"ItemPedidoResponse"},"LogAuditoriaListEnvelope":{"properties":{"total":{"type":"integer","title":"Total","description":"Total de registros de auditoria encontrados","example":10},"data":{"items":{"$ref":"#/components/schemas/LogAuditoriaResponse"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"LogAuditoriaListEnvelope"},"LogAuditoriaResponse":{"properties":{"id":{"type":"integer","title":"Id"},"usuario":{"type":"string","title":"Usuario"},"acao":{"type":"string","title":"Acao"},"entidade":{"type":"string","title":"Entidade"},"entidade_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Entidade Id"},"detalhes":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detalhes"},"criado_em":{"type":"string","format":"date-time","title":"Criado Em"}},"type":"object","required":["id","usuario","acao","entidade","criado_em"],"title":"LogAuditoriaResponse"},"LoginRequest":{"properties":{"username":{"type":"string","title":"Username","description":"E-mail de acesso","example":"usuario@exemplo.com"},"password":{"type":"string","title":"Password","description":"Senha de acesso","example":"SuaSenhaSegura123"}},"type":"object","required":["username","password"],"title":"LoginRequest"},"PagamentoCreate":{"properties":{"pedido_id":{"type":"integer","title":"Pedido Id","description":"ID do pedido pago","example":1},"valor":{"type":"number","exclusiveMinimum":0.0,"title":"Valor","description":"Valor pago","example":6000.0},"forma_pagamento":{"type":"string","title":"Forma Pagamento","description":"Forma de pagamento (PIX, CARTAO, BOLETO, DINHEIRO)","example":"PIX"}},"type":"object","required":["pedido_id","valor","forma_pagamento"],"title":"PagamentoCreate"},"PagamentoResponse":{"properties":{"id":{"type":"integer","title":"Id"},"pedido_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Pedido Id"},"valor":{"type":"number","title":"Valor"},"forma_pagamento":{"type":"string","title":"Forma Pagamento"},"data_pagamento":{"type":"string","format":"date-time","title":"Data Pagamento"}},"type":"object","required":["id","pedido_id","valor","forma_pagamento","data_pagamento"],"title":"PagamentoResponse"},"PedidoCreate":{"properties":{"cliente_id":{"type":"integer","title":"Cliente Id","description":"ID do cliente que fez o pedido","example":1},"itens":{"items":{"$ref":"#/components/schemas/ItemPedidoCreate"},"type":"array","minItems":1,"title":"Itens","description":"Lista de produtos do pedido"}},"type":"object","required":["cliente_id","itens"],"title":"PedidoCreate"},"PedidoListEnvelope":{"properties":{"total":{"type":"integer","title":"Total","description":"Total de pedidos encontrados","example":2},"data":{"items":{"$ref":"#/components/schemas/PedidoResponse"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"PedidoListEnvelope"},"PedidoResponse":{"properties":{"id":{"type":"integer","title":"Id"},"cliente_id":{"type":"integer","title":"Cliente Id"},"data_pedido":{"type":"string","format":"date-time","title":"Data Pedido"},"status":{"type":"string","title":"Status"},"cliente":{"anyOf":[{"$ref":"#/components/schemas/ClienteResponse"},{"type":"null"}]},"itens":{"items":{"$ref":"#/components/schemas/ItemPedidoResponse"},"type":"array","title":"Itens","default":[]},"pagamentos":{"items":{"$ref":"#/components/schemas/PagamentoResponse"},"type":"array","title":"Pagamentos","default":[]}},"type":"object","required":["id","cliente_id","data_pedido","status"],"title":"PedidoResponse"},"PedidoStatusUpdate":{"properties":{"status":{"type":"string","title":"Status","description":"Novo status do pedido (ABERTO, PAGO, ENVIADO, CANCELADO)","example":"PAGO"},"forma_pagamento":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Forma Pagamento","description":"Forma de pagamento (PIX, CARTAO, BOLETO, DINHEIRO) ao alterar para PAGO","example":"PIX"}},"type":"object","required":["status"],"title":"PedidoStatusUpdate"},"ProdutoCreate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome do produto","example":"Notebook Dell XPS 15"},"descricao":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descricao","description":"Descrição do produto","example":"Intel i7 16GB SSD 512GB"},"preco":{"type":"number","exclusiveMinimum":0.0,"title":"Preco","description":"Preço unitário","example":5500.0},"estoque":{"type":"integer","minimum":0.0,"title":"Estoque","description":"Quantidade em estoque","example":20},"categoria_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Categoria Id","description":"ID da categoria","example":1},"ativo":{"type":"boolean","title":"Ativo","description":"Status ativo/inativo","default":true,"example":true}},"type":"object","required":["nome","preco","estoque"],"title":"ProdutoCreate"},"ProdutoListEnvelope":{"properties":{"total":{"type":"integer","title":"Total","description":"Total de produtos encontrados","example":5},"data":{"items":{"$ref":"#/components/schemas/ProdutoResponse"},"type":"array","title":"Data"}},"type":"object","required":["total","data"],"title":"ProdutoListEnvelope"},"ProdutoPatch":{"properties":{"nome":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nome"},"descricao":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descricao"},"preco":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Preco"},"estoque":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Estoque"},"categoria_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Categoria Id"},"ativo":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ativo"}},"type":"object","title":"ProdutoPatch"},"ProdutoResponse":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome do produto","example":"Notebook Dell XPS 15"},"descricao":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descricao","description":"Descrição do produto","example":"Intel i7 16GB SSD 512GB"},"preco":{"type":"number","exclusiveMinimum":0.0,"title":"Preco","description":"Preço unitário","example":5500.0},"estoque":{"type":"integer","minimum":0.0,"title":"Estoque","description":"Quantidade em estoque","example":20},"categoria_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Categoria Id","description":"ID da categoria","example":1},"ativo":{"type":"boolean","title":"Ativo","description":"Status ativo/inativo","default":true,"example":true},"id":{"type":"integer","title":"Id"},"categoria":{"anyOf":[{"$ref":"#/components/schemas/CategoriaResponse"},{"type":"null"}]}},"type":"object","required":["nome","preco","estoque","id"],"title":"ProdutoResponse"},"ProdutoUpdate":{"properties":{"nome":{"type":"string","title":"Nome"},"descricao":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Descricao"},"preco":{"type":"number","title":"Preco"},"estoque":{"type":"integer","title":"Estoque"},"categoria_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Categoria Id"},"ativo":{"type":"boolean","title":"Ativo"}},"type":"object","required":["nome","preco","estoque","ativo"],"title":"ProdutoUpdate"},"ResetPasswordRequest":{"properties":{"email":{"type":"string","title":"Email","example":"ana@empresa.com"},"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code","description":"Código OTP de 6 dígitos","example":"123456"},"nova_senha":{"type":"string","minLength":6,"title":"Nova Senha","description":"Nova senha de acesso","example":"novaSenha123"}},"type":"object","required":["email","code","nova_senha"],"title":"ResetPasswordRequest"},"TokenResponse":{"properties":{"access_token":{"type":"string","title":"Access Token"},"token_type":{"type":"string","title":"Token Type","default":"bearer"},"expires_in_hours":{"type":"integer","title":"Expires In Hours","default":24},"user":{"anyOf":[{"$ref":"#/components/schemas/UsuarioResponse"},{"type":"null"}]}},"type":"object","required":["access_token"],"title":"TokenResponse"},"UsuarioCreate":{"properties":{"nome":{"type":"string","title":"Nome","description":"Nome completo do usuário","example":"Ana Silva"},"email":{"type":"string","title":"Email","description":"Endereço de e-mail","example":"ana@empresa.com"},"senha":{"type":"string","minLength":6,"title":"Senha","description":"Senha de acesso (mín. 6 caracteres)","example":"123456"}},"type":"object","required":["nome","email","senha"],"title":"UsuarioCreate"},"UsuarioResponse":{"properties":{"id":{"type":"integer","title":"Id"},"nome":{"type":"string","title":"Nome"},"email":{"type":"string","title":"Email"},"is_verified":{"type":"boolean","title":"Is Verified"},"criado_em":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Criado Em"}},"type":"object","required":["id","nome","email","is_verified"],"title":"UsuarioResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyEmailRequest":{"properties":{"email":{"type":"string","title":"Email","example":"ana@empresa.com"},"code":{"type":"string","maxLength":6,"minLength":6,"title":"Code","description":"Código OTP de 6 dígitos","example":"123456"}},"type":"object","required":["email","code"],"title":"VerifyEmailRequest"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}