{"openapi":"3.1.0","info":{"title":"FinRise API v1","version":"3.8.1","description":"API pública do FinRise para integração com agentes IA e ferramentas externas.\n\nAutenticação: forneça `x-api-key` e `x-api-scope` (BUSINESS | PERSONAL) em todo request.\n\nVeja [error-codes.md](/docs/api/error-codes) para o catálogo completo de códigos de erro.","contact":{"name":"FinRise","url":"https://financeiro.jcplussize.com"}},"servers":[{"url":"https://app.finrise.com.br","description":"Production"},{"url":"http://localhost:3000","description":"Local dev"}],"security":[{"ApiKeyAuth":[]}],"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Chave de API gerada em /api/v1/api-keys. Inclua também o header x-api-scope (BUSINESS|PERSONAL)."}},"schemas":{"AgentSetup":{"type":"object","properties":{"apiVersion":{"type":"string","enum":["v1"]},"baseUrl":{"type":"string","format":"uri"},"auth":{"type":"object","properties":{"type":{"type":"string","enum":["header"]},"keyHeader":{"type":"string","enum":["x-api-key"]},"scopeHeader":{"type":"string","enum":["x-api-scope"]},"activeScope":{"type":"string","enum":["BUSINESS","PERSONAL"]}},"required":["type","keyHeader","scopeHeader","activeScope"]},"docs":{"type":"object","properties":{"openapi":{"type":"string","format":"uri"},"interactive":{"type":"string","format":"uri"},"skill":{"type":"string","format":"uri"},"errorCodes":{"type":"string","format":"uri"}},"required":["openapi","interactive","skill","errorCodes"]},"conventions":{"type":"object","additionalProperties":{}},"rateLimits":{"type":"object","properties":{"perMinute":{"type":"number"},"dailyDefault":{"type":"number"},"headers":{"type":"array","items":{"type":"string"}}},"required":["perMinute","dailyDefault","headers"]},"errorCatalog":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"http":{"type":"number"},"message":{"type":"string"}},"required":["code","http","message"]}},"canonicalRecipes":{"type":"array","items":{}},"antiPatterns":{"type":"array","items":{"type":"string"}}},"required":["apiVersion","baseUrl","auth","docs","conventions","rateLimits","errorCatalog","canonicalRecipes","antiPatterns"]}},"parameters":{}},"paths":{"/api/v1/agents/setup":{"get":{"tags":["Agents"],"summary":"One-shot agent configuration","description":"Returns everything an AI agent needs to operate against this API: doc URLs, conventions, error catalog, rate limits, and canonical recipes. Designed to be the agent's first call after authentication.","parameters":[{"schema":{"type":"string","description":"API key gerada em /api/v1/api-keys","example":"frs_abc123..."},"required":true,"description":"API key gerada em /api/v1/api-keys","name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"],"description":"Escopo da operação"},"required":true,"description":"Escopo da operação","name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Agent setup configuration","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/AgentSetup"}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"Rate limit / quota exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/api-keys":{"get":{"tags":["API Keys"],"summary":"Listar chaves de API","description":"Retorna todas as chaves de API do usuário autenticado via sessão Clerk.","responses":{"200":{"description":"Lista de chaves","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"clx1234abcd"},"name":{"type":"string","example":"Minha chave de integração"},"keyPrefix":{"type":"string","example":"frs_abc1"},"scopes":{"type":"array","items":{"type":"string","enum":["BUSINESS","PERSONAL"]},"example":["BUSINESS"]},"isActive":{"type":"boolean","example":true},"lastUsedAt":{"type":["string","null"],"example":"2026-05-01T12:00:00Z"},"expiresAt":{"type":["string","null"],"example":"2027-01-01T00:00:00Z"},"dailyQuota":{"type":["number","null"],"example":1000},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","name","keyPrefix","scopes","isActive","lastUsedAt","expiresAt","dailyQuota","createdAt"]}}},"required":["success","data"]}}}},"401":{"description":"Não autorizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"Erro interno","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["API Keys"],"summary":"Criar chave de API","description":"Cria uma nova chave de API. O valor completo da chave (`key`) é retornado apenas nesta resposta e não pode ser recuperado depois.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Integração n8n","description":"Nome descritivo da chave"},"scopes":{"type":"array","items":{"type":"string","enum":["BUSINESS","PERSONAL"]},"example":["BUSINESS"],"description":"Escopos permitidos"},"expiresAt":{"type":["string","null"],"example":"2027-01-01T00:00:00Z","description":"Data de expiração ISO 8601 (null = sem expiração)"},"dailyQuota":{"type":["number","null"],"exclusiveMinimum":0,"example":1000,"description":"Limite diário de requisições (null = ilimitado)"}},"required":["name","scopes"]}}}},"responses":{"201":{"description":"Chave criada — o campo `key` é exibido apenas uma vez","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"apiKey":{"type":"object","properties":{"id":{"type":"string","example":"clx1234abcd"},"name":{"type":"string","example":"Minha chave de integração"},"keyPrefix":{"type":"string","example":"frs_abc1"},"scopes":{"type":"array","items":{"type":"string","enum":["BUSINESS","PERSONAL"]},"example":["BUSINESS"]},"isActive":{"type":"boolean","example":true},"lastUsedAt":{"type":["string","null"],"example":"2026-05-01T12:00:00Z"},"expiresAt":{"type":["string","null"],"example":"2027-01-01T00:00:00Z"},"dailyQuota":{"type":["number","null"],"example":1000},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","name","keyPrefix","scopes","isActive","lastUsedAt","expiresAt","dailyQuota","createdAt"]},"key":{"type":"string","example":"frs_abc123..."}},"required":["apiKey","key"]}},"required":["success","data"]}}}},"400":{"description":"Parâmetros inválidos","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"Não autorizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"Erro interno","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/api-keys/{id}":{"get":{"tags":["API Keys"],"summary":"Detalhes de uma chave","parameters":[{"schema":{"type":"string","example":"clx1234abcd"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Chave encontrada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"clx1234abcd"},"name":{"type":"string","example":"Minha chave de integração"},"keyPrefix":{"type":"string","example":"frs_abc1"},"scopes":{"type":"array","items":{"type":"string","enum":["BUSINESS","PERSONAL"]},"example":["BUSINESS"]},"isActive":{"type":"boolean","example":true},"lastUsedAt":{"type":["string","null"],"example":"2026-05-01T12:00:00Z"},"expiresAt":{"type":["string","null"],"example":"2027-01-01T00:00:00Z"},"dailyQuota":{"type":["number","null"],"example":1000},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","name","keyPrefix","scopes","isActive","lastUsedAt","expiresAt","dailyQuota","createdAt"]}},"required":["success","data"]}}}},"401":{"description":"Não autorizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"Erro interno","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"patch":{"tags":["API Keys"],"summary":"Atualizar chave de API","parameters":[{"schema":{"type":"string","example":"clx1234abcd"},"required":true,"name":"id","in":"path"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Nova descrição"},"isActive":{"type":"boolean","example":false,"description":"false = revogar chave"},"expiresAt":{"type":["string","null"],"example":"2027-06-01T00:00:00Z"},"dailyQuota":{"type":["number","null"],"exclusiveMinimum":0,"example":500}}}}}},"responses":{"200":{"description":"Chave atualizada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"clx1234abcd"},"name":{"type":"string","example":"Minha chave de integração"},"keyPrefix":{"type":"string","example":"frs_abc1"},"scopes":{"type":"array","items":{"type":"string","enum":["BUSINESS","PERSONAL"]},"example":["BUSINESS"]},"isActive":{"type":"boolean","example":true},"lastUsedAt":{"type":["string","null"],"example":"2026-05-01T12:00:00Z"},"expiresAt":{"type":["string","null"],"example":"2027-01-01T00:00:00Z"},"dailyQuota":{"type":["number","null"],"example":1000},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","name","keyPrefix","scopes","isActive","lastUsedAt","expiresAt","dailyQuota","createdAt"]}},"required":["success","data"]}}}},"401":{"description":"Não autorizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"Erro interno","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["API Keys"],"summary":"Remover chave de API","parameters":[{"schema":{"type":"string","example":"clx1234abcd"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Chave removida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"401":{"description":"Não autorizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"Não encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"Erro interno","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/bank-accounts":{"get":{"tags":["Bank Accounts"],"summary":"Listar contas bancárias","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filtrar por status ativo (true/false)","example":"true"},"required":false,"description":"Filtrar por status ativo (true/false)","name":"isActive","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"cla001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"accountType":{"type":["string","null"],"example":"CHECKING"},"isActive":{"type":"boolean","example":true},"currentBalance":{"type":"number","example":15000},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"],"example":"BUSINESS"},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","bankName","agency","account","accountType","isActive","currentBalance","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Bank Accounts"],"summary":"Criar conta bancária","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bankName":{"type":"string","example":"Banco do Brasil","description":"Nome do banco (obrigatório)"},"agency":{"type":"string","example":"1234-5","description":"Agência (obrigatório)"},"account":{"type":"string","example":"00012345-6","description":"Número da conta (obrigatório)"},"accountType":{"type":"string","example":"CHECKING","description":"Tipo: CHECKING, SAVINGS, INVESTMENT"},"currentBalance":{"type":"number","example":0,"description":"Saldo inicial"}},"required":["bankName","agency","account"]}}}},"responses":{"201":{"description":"Conta criada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cla001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"accountType":{"type":["string","null"],"example":"CHECKING"},"isActive":{"type":"boolean","example":true},"currentBalance":{"type":"number","example":15000},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"],"example":"BUSINESS"},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","bankName","agency","account","accountType","isActive","currentBalance","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"409":{"description":"DUPLICATE_RESOURCE — agência+conta já cadastrada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/bank-accounts/{id}":{"get":{"tags":["Bank Accounts"],"summary":"Detalhar conta bancária","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cla001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta encontrada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cla001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"accountType":{"type":["string","null"],"example":"CHECKING"},"isActive":{"type":"boolean","example":true},"currentBalance":{"type":"number","example":15000},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"],"example":"BUSINESS"},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","bankName","agency","account","accountType","isActive","currentBalance","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"BANK_ACCOUNT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Bank Accounts"],"summary":"Atualizar conta bancária","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cla001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bankName":{"type":"string","example":"Caixa Econômica"},"agency":{"type":"string","example":"5678-9"},"account":{"type":"string","example":"00099999-0"},"accountType":{"type":"string","example":"SAVINGS"},"isActive":{"type":"boolean","example":false},"currentBalance":{"type":"number","example":5000}}}}}},"responses":{"200":{"description":"Conta atualizada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cla001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"accountType":{"type":["string","null"],"example":"CHECKING"},"isActive":{"type":"boolean","example":true},"currentBalance":{"type":"number","example":15000},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"],"example":"BUSINESS"},"createdAt":{"type":"string","example":"2026-01-01T00:00:00Z"}},"required":["id","bankName","agency","account","accountType","isActive","currentBalance","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"BANK_ACCOUNT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Bank Accounts"],"summary":"Remover conta bancária","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cla001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta removida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"Requisição inválida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"BANK_ACCOUNT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/checks":{"get":{"tags":["Checks"],"summary":"Listar cheques","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filtrar por status: AVAILABLE, LINKED, COMPENSATED, CANCELLED"},"required":false,"description":"Filtrar por status: AVAILABLE, LINKED, COMPENSATED, CANCELLED","name":"status","in":"query"},{"schema":{"type":"string","description":"Filtrar por conta bancária"},"required":false,"description":"Filtrar por conta bancária","name":"bankAccountId","in":"query"},{"schema":{"type":"string","description":"Data de emissão inicial (ISO 8601)","example":"2026-01-01"},"required":false,"description":"Data de emissão inicial (ISO 8601)","name":"dateFrom","in":"query"},{"schema":{"type":"string","description":"Data de emissão final (ISO 8601)","example":"2026-12-31"},"required":false,"description":"Data de emissão final (ISO 8601)","name":"dateTo","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada de cheques","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"chk001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000123"},"amount":{"type":"number","example":1500},"issueDate":{"type":"string","example":"2026-05-01"},"goodForDate":{"type":["string","null"],"example":"2026-06-01"},"status":{"type":"string","example":"AVAILABLE","description":"AVAILABLE | LINKED | COMPENSATED | CANCELLED"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","bankName","agency","account","checkNumber","amount","issueDate","goodForDate","status","bankAccountId","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Checks"],"summary":"Emitir cheque","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000124"},"amount":{"type":"number","exclusiveMinimum":0,"example":2500},"issueDate":{"type":"string","example":"2026-05-10","description":"Data de emissão ISO 8601"},"goodForDate":{"type":"string","example":"2026-06-10","description":"Bom para (data futura)"},"bankAccountId":{"type":"string","example":"cla001","description":"Conta bancária associada"},"beneficiary":{"type":"string","example":"Fornecedor ABC"},"notes":{"type":"string","example":"Pagamento ref. NF 9876"}},"required":["bankName","agency","account","checkNumber","amount","issueDate"]}}}},"responses":{"201":{"description":"Cheque emitido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"chk001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000123"},"amount":{"type":"number","example":1500},"issueDate":{"type":"string","example":"2026-05-01"},"goodForDate":{"type":["string","null"],"example":"2026-06-01"},"status":{"type":"string","example":"AVAILABLE","description":"AVAILABLE | LINKED | COMPENSATED | CANCELLED"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","bankName","agency","account","checkNumber","amount","issueDate","goodForDate","status","bankAccountId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"409":{"description":"CHECK_NUMBER_TAKEN / DUPLICATE_RESOURCE","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/checks/{id}":{"get":{"tags":["Checks"],"summary":"Detalhar cheque","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"chk001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Cheque encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"chk001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000123"},"amount":{"type":"number","example":1500},"issueDate":{"type":"string","example":"2026-05-01"},"goodForDate":{"type":["string","null"],"example":"2026-06-01"},"status":{"type":"string","example":"AVAILABLE","description":"AVAILABLE | LINKED | COMPENSATED | CANCELLED"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","bankName","agency","account","checkNumber","amount","issueDate","goodForDate","status","bankAccountId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CHECK_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Checks"],"summary":"Atualizar cheque","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"chk001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"amount":{"type":"number","exclusiveMinimum":0,"example":3000},"goodForDate":{"type":["string","null"],"example":"2026-07-01"},"beneficiary":{"type":"string","example":"Novo Beneficiário"},"notes":{"type":"string","example":"Atualizado"}}}}}},"responses":{"200":{"description":"Cheque atualizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"chk001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000123"},"amount":{"type":"number","example":1500},"issueDate":{"type":"string","example":"2026-05-01"},"goodForDate":{"type":["string","null"],"example":"2026-06-01"},"status":{"type":"string","example":"AVAILABLE","description":"AVAILABLE | LINKED | COMPENSATED | CANCELLED"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","bankName","agency","account","checkNumber","amount","issueDate","goodForDate","status","bankAccountId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CHECK_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/checks/{id}/cancel":{"post":{"tags":["Checks"],"summary":"Cancelar cheque","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"chk001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"reason":{"type":"string","example":"Cheque extraviado"}}}}}},"responses":{"200":{"description":"Cheque cancelado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"chk001"},"bankName":{"type":"string","example":"Banco do Brasil"},"agency":{"type":"string","example":"1234-5"},"account":{"type":"string","example":"00012345-6"},"checkNumber":{"type":"string","example":"000123"},"amount":{"type":"number","example":1500},"issueDate":{"type":"string","example":"2026-05-01"},"goodForDate":{"type":["string","null"],"example":"2026-06-01"},"status":{"type":"string","example":"AVAILABLE","description":"AVAILABLE | LINKED | COMPENSATED | CANCELLED"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","bankName","agency","account","checkNumber","amount","issueDate","goodForDate","status","bankAccountId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CHECK_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"BUSINESS_RULE_VIOLATION — cheque já compensado ou vinculado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/checks/validate":{"post":{"tags":["Checks"],"summary":"Validar número de cheque","description":"Verifica se o número de cheque está disponível (não foi usado).","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkNumber":{"type":"string","example":"000125"},"bankAccountId":{"type":"string","example":"cla001"}},"required":["checkNumber"]}}}},"responses":{"200":{"description":"Resultado da validação","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"available":{"type":"boolean","example":true},"checkNumber":{"type":"string","example":"000125"}},"required":["available","checkNumber"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR / SCOPE_HEADER_MISSING","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED / API_KEY_REVOKED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/cost-centers":{"get":{"tags":["Cost Centers"],"summary":"Listar centros de custo","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Busca por nome","example":"Admin"},"required":false,"description":"Busca por nome","name":"search","in":"query"},{"schema":{"type":"string","description":"Filtrar ativos (true/false)"},"required":false,"description":"Filtrar ativos (true/false)","name":"isActive","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"cc001"},"name":{"type":"string","example":"Administrativo"},"description":{"type":["string","null"],"example":"Despesas administrativas gerais"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","description","isActive","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Cost Centers"],"summary":"Criar centro de custo","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Marketing","description":"Nome (obrigatório)"},"description":{"type":"string","example":"Gastos de mídia e campanhas"}},"required":["name"]}}}},"responses":{"201":{"description":"Centro criado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc001"},"name":{"type":"string","example":"Administrativo"},"description":{"type":["string","null"],"example":"Despesas administrativas gerais"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","description","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/cost-centers/{id}":{"get":{"tags":["Cost Centers"],"summary":"Detalhar centro de custo","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Centro encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc001"},"name":{"type":"string","example":"Administrativo"},"description":{"type":["string","null"],"example":"Despesas administrativas gerais"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","description","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"COST_CENTER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Cost Centers"],"summary":"Atualizar centro de custo","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Marketing Digital"},"description":{"type":"string"},"isActive":{"type":"boolean","example":true}}}}}},"responses":{"200":{"description":"Centro atualizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc001"},"name":{"type":"string","example":"Administrativo"},"description":{"type":["string","null"],"example":"Despesas administrativas gerais"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","description","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"COST_CENTER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Cost Centers"],"summary":"Remover centro de custo","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Centro removido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"COST_CENTER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/cost-centers/{id}/details":{"get":{"tags":["Cost Centers"],"summary":"Detalhamento financeiro do centro de custo","description":"Retorna totais de despesas e receitas agrupadas por período para o centro de custo.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","description":"Mês (1-12)","example":"5"},"required":false,"description":"Mês (1-12)","name":"month","in":"query"},{"schema":{"type":"string","description":"Ano","example":"2026"},"required":false,"description":"Ano","name":"year","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Detalhamento financeiro","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"costCenter":{"type":"object","properties":{"id":{"type":"string","example":"cc001"},"name":{"type":"string","example":"Administrativo"},"description":{"type":["string","null"],"example":"Despesas administrativas gerais"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","description","isActive","scope","createdAt"],"additionalProperties":{}},"totals":{"description":"Ver modelo Prisma para estrutura completa"}},"required":["costCenter"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED / API_KEY_EXPIRED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"COST_CENTER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/credit-cards":{"get":{"tags":["Credit Cards"],"summary":"Listar cartões de crédito","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filtrar por ativo (true/false)"},"required":false,"description":"Filtrar por ativo (true/false)","name":"isActive","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"cc-card-001"},"name":{"type":"string","example":"Nubank Platinum"},"lastDigits":{"type":["string","null"],"example":"1234"},"limit":{"type":["number","null"],"example":10000},"closingDay":{"type":["number","null"],"example":15},"dueDay":{"type":["number","null"],"example":22},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","lastDigits","limit","closingDay","dueDay","isActive","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Credit Cards"],"summary":"Cadastrar cartão de crédito","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Nubank Platinum","description":"Nome do cartão (obrigatório)"},"lastDigits":{"type":"string","minLength":4,"maxLength":4,"example":"1234"},"limit":{"type":"number","exclusiveMinimum":0,"example":10000},"closingDay":{"type":"number","minimum":1,"maximum":31,"example":15},"dueDay":{"type":"number","minimum":1,"maximum":31,"example":22}},"required":["name"]}}}},"responses":{"201":{"description":"Cartão criado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc-card-001"},"name":{"type":"string","example":"Nubank Platinum"},"lastDigits":{"type":["string","null"],"example":"1234"},"limit":{"type":["number","null"],"example":10000},"closingDay":{"type":["number","null"],"example":15},"dueDay":{"type":["number","null"],"example":22},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","lastDigits","limit","closingDay","dueDay","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/credit-cards/{id}":{"get":{"tags":["Credit Cards"],"summary":"Detalhar cartão de crédito","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc-card-001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Cartão encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc-card-001"},"name":{"type":"string","example":"Nubank Platinum"},"lastDigits":{"type":["string","null"],"example":"1234"},"limit":{"type":["number","null"],"example":10000},"closingDay":{"type":["number","null"],"example":15},"dueDay":{"type":["number","null"],"example":22},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","lastDigits","limit","closingDay","dueDay","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CREDIT_CARD_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Credit Cards"],"summary":"Atualizar cartão de crédito","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc-card-001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Nubank Black"},"limit":{"type":["number","null"],"exclusiveMinimum":0,"example":20000},"closingDay":{"type":["number","null"],"minimum":1,"maximum":31,"example":10},"dueDay":{"type":["number","null"],"minimum":1,"maximum":31,"example":17},"isActive":{"type":"boolean","example":true}}}}}},"responses":{"200":{"description":"Cartão atualizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"cc-card-001"},"name":{"type":"string","example":"Nubank Platinum"},"lastDigits":{"type":["string","null"],"example":"1234"},"limit":{"type":["number","null"],"example":10000},"closingDay":{"type":["number","null"],"example":15},"dueDay":{"type":["number","null"],"example":22},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","lastDigits","limit","closingDay","dueDay","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CREDIT_CARD_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Credit Cards"],"summary":"Remover cartão de crédito","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"cc-card-001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Cartão removido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"CREDIT_CARD_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dashboard/summary":{"get":{"tags":["Dashboard"],"summary":"Resumo financeiro do mês","description":"Retorna métricas consolidadas do mês: total a pagar, total a receber, saldo, despesas pagas, receitas recebidas.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Mês (1-12, default: mês corrente)","example":"5"},"required":false,"description":"Mês (1-12, default: mês corrente)","name":"month","in":"query"},{"schema":{"type":"string","description":"Ano (default: ano corrente)","example":"2026"},"required":false,"description":"Ano (default: ano corrente)","name":"year","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Resumo do mês","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"totalPayable":{"type":"number","example":12500},"totalReceivable":{"type":"number","example":18000},"balance":{"type":"number","example":5500},"paidExpenses":{"type":"number","example":3000},"receivedRevenue":{"type":"number","example":8000}},"required":["totalPayable","totalReceivable","balance","paidExpenses","receivedRevenue"],"additionalProperties":{}}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dashboard/upcoming":{"get":{"tags":["Dashboard"],"summary":"Próximos vencimentos","description":"Retorna parcelas a vencer nos próximos dias, separadas em a pagar e a receber.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Janela de dias (default: 7)","example":"30"},"required":false,"description":"Janela de dias (default: 7)","name":"days","in":"query"},{"schema":{"type":"string","description":"Máximo de itens por categoria (default: 10)","example":"20"},"required":false,"description":"Máximo de itens por categoria (default: 10)","name":"limit","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Próximos vencimentos","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"payables":{"type":"array","items":{},"description":"Parcelas a pagar nos próximos dias"},"receivables":{"type":"array","items":{},"description":"Parcelas a receber nos próximos dias"}},"required":["payables","receivables"]}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dashboard/overdue":{"get":{"tags":["Dashboard"],"summary":"Itens em atraso","description":"Retorna parcelas vencidas e não pagas.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Máximo de itens por categoria (default: 10)","example":"20"},"required":false,"description":"Máximo de itens por categoria (default: 10)","name":"limit","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Itens em atraso","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"payables":{"type":"array","items":{},"description":"Parcelas a pagar em atraso"},"receivables":{"type":"array","items":{},"description":"Parcelas a receber em atraso"}},"required":["payables","receivables"]}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dashboard/trend":{"get":{"tags":["Dashboard"],"summary":"Tendência de fluxo de caixa","description":"Retorna série histórica de receitas e despesas por mês para gráficos de tendência.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Quantidade de meses retroativos (default: 6)","example":"12"},"required":false,"description":"Quantidade de meses retroativos (default: 6)","name":"months","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Série temporal por mês","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string","example":"2026-01"},"revenue":{"type":"number","example":18000},"expense":{"type":"number","example":12000},"balance":{"type":"number","example":6000}},"required":["month","revenue","expense","balance"]}}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dashboard/distribution":{"get":{"tags":["Dashboard"],"summary":"Distribuição de despesas por grupo DRE","description":"Retorna totais de despesas agrupadas por grupo DRE para o mês selecionado.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Mês (1-12, default: mês corrente)","example":"5"},"required":false,"description":"Mês (1-12, default: mês corrente)","name":"month","in":"query"},{"schema":{"type":"string","description":"Ano (default: ano corrente)","example":"2026"},"required":false,"description":"Ano (default: ano corrente)","name":"year","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Distribuição por grupo DRE","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"dreGroupId":{"type":"string","example":"dreg001"},"dreGroupName":{"type":"string","example":"Despesas Operacionais"},"total":{"type":"number","example":4500},"percentage":{"type":"number","example":36}},"required":["dreGroupId","dreGroupName","total","percentage"]}}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dre-groups":{"get":{"tags":["DRE Groups"],"summary":"Listar grupos DRE","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Filtrar por tipo: EXPENSE, REVENUE"},"required":false,"description":"Filtrar por tipo: EXPENSE, REVENUE","name":"type","in":"query"},{"schema":{"type":"string","description":"Filtrar por ativo (true/false)"},"required":false,"description":"Filtrar por ativo (true/false)","name":"isActive","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"dreg001"},"name":{"type":"string","example":"Despesas Operacionais"},"type":{"type":"string","example":"EXPENSE","description":"EXPENSE | REVENUE"},"isSystem":{"type":"boolean","example":false,"description":"Grupos do sistema não podem ser modificados"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","type","isSystem","isActive","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["DRE Groups"],"summary":"Criar grupo DRE","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Despesas com Pessoal"},"type":{"type":"string","enum":["EXPENSE","REVENUE"],"example":"EXPENSE"}},"required":["name","type"]}}}},"responses":{"201":{"description":"Grupo criado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"dreg001"},"name":{"type":"string","example":"Despesas Operacionais"},"type":{"type":"string","example":"EXPENSE","description":"EXPENSE | REVENUE"},"isSystem":{"type":"boolean","example":false,"description":"Grupos do sistema não podem ser modificados"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","type","isSystem","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/dre-groups/{id}":{"get":{"tags":["DRE Groups"],"summary":"Detalhar grupo DRE","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"dreg001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Grupo encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"dreg001"},"name":{"type":"string","example":"Despesas Operacionais"},"type":{"type":"string","example":"EXPENSE","description":"EXPENSE | REVENUE"},"isSystem":{"type":"boolean","example":false,"description":"Grupos do sistema não podem ser modificados"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","type","isSystem","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"DRE_GROUP_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["DRE Groups"],"summary":"Atualizar grupo DRE","description":"Grupos do sistema (isSystem=true) não podem ser modificados — retorna DRE_GROUP_IS_SYSTEM.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"dreg001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Despesas Pessoal & RH"},"isActive":{"type":"boolean","example":true}}}}}},"responses":{"200":{"description":"Grupo atualizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"dreg001"},"name":{"type":"string","example":"Despesas Operacionais"},"type":{"type":"string","example":"EXPENSE","description":"EXPENSE | REVENUE"},"isSystem":{"type":"boolean","example":false,"description":"Grupos do sistema não podem ser modificados"},"isActive":{"type":"boolean","example":true},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","type","isSystem","isActive","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"DRE_GROUP_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"DRE_GROUP_IS_SYSTEM","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["DRE Groups"],"summary":"Remover grupo DRE","description":"Grupos do sistema não podem ser removidos.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"dreg001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Grupo removido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"DRE_GROUP_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"DRE_GROUP_IS_SYSTEM","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/installments/{id}/pay":{"post":{"tags":["Installments"],"summary":"Registrar pagamento de parcela","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"inst001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paidAt":{"type":"string","example":"2026-05-28T14:00:00Z","description":"Data/hora do pagamento (default: agora)"},"paidAmount":{"type":"number","exclusiveMinimum":0,"example":1490,"description":"Valor efetivamente pago"},"paymentMethod":{"type":"string","enum":["PIX","BOLETO","CREDIT_CARD","DEBIT_CARD","CASH","TRANSFER","CHECK","OTHER"],"example":"PIX"},"bankAccountId":{"type":["string","null"],"example":"cla001"},"creditCardId":{"type":["string","null"],"example":"cc-card-001"},"interest":{"type":"number","example":10,"description":"Juros/multa adicionais"},"discount":{"type":"number","example":10,"description":"Desconto concedido"},"notes":{"type":"string","example":"Pago via app"}}}}}},"responses":{"200":{"description":"Parcela marcada como paga","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1500},"status":{"type":"string","example":"PAID","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"],"example":"2026-05-28T14:00:00Z"},"paidAmount":{"type":["number","null"],"example":1490},"paymentMethod":{"type":["string","null"],"example":"PIX"},"bankAccountId":{"type":["string","null"]},"creditCardId":{"type":["string","null"]},"checkId":{"type":["string","null"]},"interest":{"type":["number","null"]},"discount":{"type":["number","null"]},"notes":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod","bankAccountId","creditCardId","checkId","interest","discount","notes"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"INSTALLMENT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"INSTALLMENT_ALREADY_PAID","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/installments/{id}/revert":{"post":{"tags":["Installments"],"summary":"Reverter pagamento de parcela","description":"Reverte uma parcela do estado PAID para PENDING.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"inst001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Pagamento revertido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1500},"status":{"type":"string","example":"PAID","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"],"example":"2026-05-28T14:00:00Z"},"paidAmount":{"type":["number","null"],"example":1490},"paymentMethod":{"type":["string","null"],"example":"PIX"},"bankAccountId":{"type":["string","null"]},"creditCardId":{"type":["string","null"]},"checkId":{"type":["string","null"]},"interest":{"type":["number","null"]},"discount":{"type":["number","null"]},"notes":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod","bankAccountId","creditCardId","checkId","interest","discount","notes"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"INSTALLMENT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"INSTALLMENT_NOT_PAID","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/installments/{id}/link-check":{"post":{"tags":["Installments"],"summary":"Vincular cheque a parcela","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"inst001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"checkId":{"type":"string","example":"chk001","description":"ID do cheque (obrigatório)"}},"required":["checkId"]}}}},"responses":{"200":{"description":"Cheque vinculado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1500},"status":{"type":"string","example":"PAID","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"],"example":"2026-05-28T14:00:00Z"},"paidAmount":{"type":["number","null"],"example":1490},"paymentMethod":{"type":["string","null"],"example":"PIX"},"bankAccountId":{"type":["string","null"]},"creditCardId":{"type":["string","null"]},"checkId":{"type":["string","null"]},"interest":{"type":["number","null"]},"discount":{"type":["number","null"]},"notes":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod","bankAccountId","creditCardId","checkId","interest","discount","notes"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"INSTALLMENT_NOT_FOUND / CHECK_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"CHECK_ALREADY_LINKED / BUSINESS_RULE_VIOLATION","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/installments/{id}/unlink-check":{"post":{"tags":["Installments"],"summary":"Desvincular cheque de parcela","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"inst001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Cheque desvinculado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1500},"status":{"type":"string","example":"PAID","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"],"example":"2026-05-28T14:00:00Z"},"paidAmount":{"type":["number","null"],"example":1490},"paymentMethod":{"type":["string","null"],"example":"PIX"},"bankAccountId":{"type":["string","null"]},"creditCardId":{"type":["string","null"]},"checkId":{"type":["string","null"]},"interest":{"type":["number","null"]},"discount":{"type":["number","null"]},"notes":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod","bankAccountId","creditCardId","checkId","interest","discount","notes"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"INSTALLMENT_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"422":{"description":"BUSINESS_RULE_VIOLATION","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/payables":{"get":{"tags":["Payables"],"summary":"Listar contas a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Busca por descrição","example":"Aluguel"},"required":false,"description":"Busca por descrição","name":"search","in":"query"},{"schema":{"type":"string","description":"Status das parcelas: PENDING, PAID, OVERDUE, CANCELLED"},"required":false,"description":"Status das parcelas: PENDING, PAID, OVERDUE, CANCELLED","name":"status","in":"query"},{"schema":{"type":"string","description":"Filtrar por fornecedor"},"required":false,"description":"Filtrar por fornecedor","name":"supplierId","in":"query"},{"schema":{"type":"string","description":"Filtrar por grupo DRE"},"required":false,"description":"Filtrar por grupo DRE","name":"dreGroupId","in":"query"},{"schema":{"type":"string","description":"Filtrar por centro de custo"},"required":false,"description":"Filtrar por centro de custo","name":"costCenterId","in":"query"},{"schema":{"type":"string","description":"Vencimento a partir de (ISO 8601)","example":"2026-01-01"},"required":false,"description":"Vencimento a partir de (ISO 8601)","name":"dateFrom","in":"query"},{"schema":{"type":"string","description":"Vencimento até (ISO 8601)","example":"2026-12-31"},"required":false,"description":"Vencimento até (ISO 8601)","name":"dateTo","in":"query"},{"schema":{"type":"string","description":"Campo de ordenação: createdAt, totalAmount, description, transactionDate","example":"createdAt"},"required":false,"description":"Campo de ordenação: createdAt, totalAmount, description, transactionDate","name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"],"example":"desc"},"required":false,"name":"sortOrder","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"pay001"},"description":{"type":"string","example":"Aluguel Maio 2026"},"totalAmount":{"type":"number","example":3000},"supplierId":{"type":["string","null"],"example":"sup001"},"dreGroupId":{"type":["string","null"],"example":"dreg001"},"costCenterId":{"type":["string","null"],"example":"cc001"},"paymentMethod":{"type":["string","null"],"example":"PIX"},"notes":{"type":["string","null"]},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"payableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":500},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]},"paymentMethod":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","paymentMethod","notes","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Payables"],"summary":"Criar conta a pagar","description":"Cria uma conta a pagar com parcelas. Suporta parcelamento simples (installments.count), datas customizadas (installments.customDates) e recorrência.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","example":"Aluguel Maio 2026","description":"Descrição (obrigatório)"},"totalAmount":{"type":"number","exclusiveMinimum":0,"example":3000,"description":"Valor total (obrigatório, > 0)"},"dueDate":{"type":"string","example":"2026-06-01","description":"Data do primeiro vencimento ISO 8601 (obrigatório)"},"supplierId":{"type":"string","example":"sup001"},"dreGroupId":{"type":"string","example":"dreg001"},"costCenterId":{"type":"string","example":"cc001"},"creditCardId":{"type":"string","example":"cc-card-001"},"paymentMethod":{"type":"string","example":"PIX","description":"PIX | BOLETO | CREDIT_CARD | DEBIT_CARD | CASH | TRANSFER | CHECK | OTHER"},"notes":{"type":"string","example":"NF 1234"},"installments":{"type":"object","properties":{"count":{"type":"integer","exclusiveMinimum":0,"example":3,"description":"Número de parcelas iguais"},"customDates":{"type":"array","items":{"type":"string"},"example":["2026-06-01","2026-07-01","2026-08-01"]},"customAmounts":{"type":"array","items":{"type":"number"},"example":[1000,1000,1000]}}},"recurrence":{"type":"object","properties":{"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","YEARLY"],"example":"MONTHLY"},"count":{"type":"integer","exclusiveMinimum":0,"example":12,"description":"Número de repetições"}},"description":"Configuração de recorrência (mutuamente exclusivo com installments)"}},"required":["description","totalAmount","dueDate"]}}}},"responses":{"201":{"description":"Conta criada com parcelas","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"pay001"},"description":{"type":"string","example":"Aluguel Maio 2026"},"totalAmount":{"type":"number","example":3000},"supplierId":{"type":["string","null"],"example":"sup001"},"dreGroupId":{"type":["string","null"],"example":"dreg001"},"costCenterId":{"type":["string","null"],"example":"cc001"},"paymentMethod":{"type":["string","null"],"example":"PIX"},"notes":{"type":["string","null"]},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"payableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":500},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]},"paymentMethod":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","paymentMethod","notes","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/payables/{id}":{"get":{"tags":["Payables"],"summary":"Detalhar conta a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"pay001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta encontrada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"pay001"},"description":{"type":"string","example":"Aluguel Maio 2026"},"totalAmount":{"type":"number","example":3000},"supplierId":{"type":["string","null"],"example":"sup001"},"dreGroupId":{"type":["string","null"],"example":"dreg001"},"costCenterId":{"type":["string","null"],"example":"cc001"},"paymentMethod":{"type":["string","null"],"example":"PIX"},"notes":{"type":["string","null"]},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"payableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":500},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]},"paymentMethod":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","paymentMethod","notes","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"PAYABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Payables"],"summary":"Atualizar conta a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"pay001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"},"totalAmount":{"type":"number","exclusiveMinimum":0},"supplierId":{"type":["string","null"]},"dreGroupId":{"type":["string","null"]},"costCenterId":{"type":["string","null"]},"paymentMethod":{"type":["string","null"]},"notes":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Conta atualizada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"pay001"},"description":{"type":"string","example":"Aluguel Maio 2026"},"totalAmount":{"type":"number","example":3000},"supplierId":{"type":["string","null"],"example":"sup001"},"dreGroupId":{"type":["string","null"],"example":"dreg001"},"costCenterId":{"type":["string","null"],"example":"cc001"},"paymentMethod":{"type":["string","null"],"example":"PIX"},"notes":{"type":["string","null"]},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"payableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"inst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":500},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]},"paymentMethod":{"type":["string","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount","paymentMethod"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","paymentMethod","notes","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"PAYABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Payables"],"summary":"Remover conta a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"pay001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta removida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"PAYABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/payables/bulk-delete":{"delete":{"tags":["Payables"],"summary":"Remover múltiplas contas a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1,"example":["pay001","pay002"]}},"required":["ids"]}}}},"responses":{"200":{"description":"Contas removidas","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"number","example":2}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/payables/recurrence/{id}/cancel":{"post":{"tags":["Payables"],"summary":"Cancelar recorrência de conta a pagar","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"recurrence001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Recorrência cancelada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"RESOURCE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/receivables":{"get":{"tags":["Receivables"],"summary":"Listar contas a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Busca por descrição","example":"Consultoria"},"required":false,"description":"Busca por descrição","name":"search","in":"query"},{"schema":{"type":"string","description":"Status das parcelas: PENDING, PAID, OVERDUE, CANCELLED"},"required":false,"description":"Status das parcelas: PENDING, PAID, OVERDUE, CANCELLED","name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"supplierId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"dreGroupId","in":"query"},{"schema":{"type":"string"},"required":false,"name":"costCenterId","in":"query"},{"schema":{"type":"string","description":"Vencimento a partir de (ISO 8601)"},"required":false,"description":"Vencimento a partir de (ISO 8601)","name":"dateFrom","in":"query"},{"schema":{"type":"string","description":"Vencimento até (ISO 8601)"},"required":false,"description":"Vencimento até (ISO 8601)","name":"dateTo","in":"query"},{"schema":{"type":"string"},"required":false,"name":"sortBy","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sortOrder","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"rec001"},"description":{"type":"string","example":"Consultoria Maio 2026"},"totalAmount":{"type":"number","example":5000},"supplierId":{"type":["string","null"],"example":"sup001","description":"ID do cliente/pagador"},"dreGroupId":{"type":["string","null"],"example":"dreg002"},"costCenterId":{"type":["string","null"],"example":"cc001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"receivableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"rinst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1000},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Receivables"],"summary":"Criar conta a receber","description":"Cria uma conta a receber com parcelas. Mesmos parâmetros que /payables.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","example":"Consultoria Maio 2026","description":"Obrigatório"},"totalAmount":{"type":"number","exclusiveMinimum":0,"example":5000,"description":"Obrigatório, > 0"},"dueDate":{"type":"string","example":"2026-06-01","description":"Primeiro vencimento ISO 8601 (obrigatório)"},"supplierId":{"type":"string","example":"sup001","description":"ID do cliente/pagador"},"dreGroupId":{"type":"string"},"costCenterId":{"type":"string"},"creditCardId":{"type":"string"},"paymentMethod":{"type":"string","example":"PIX"},"notes":{"type":"string"},"installments":{"type":"object","properties":{"count":{"type":"integer","exclusiveMinimum":0,"example":2},"customDates":{"type":"array","items":{"type":"string"}},"customAmounts":{"type":"array","items":{"type":"number"}}}},"recurrence":{"type":"object","properties":{"frequency":{"type":"string","enum":["WEEKLY","MONTHLY","YEARLY"]},"count":{"type":"integer","exclusiveMinimum":0}}}},"required":["description","totalAmount","dueDate"]}}}},"responses":{"201":{"description":"Conta criada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"rec001"},"description":{"type":"string","example":"Consultoria Maio 2026"},"totalAmount":{"type":"number","example":5000},"supplierId":{"type":["string","null"],"example":"sup001","description":"ID do cliente/pagador"},"dreGroupId":{"type":["string","null"],"example":"dreg002"},"costCenterId":{"type":["string","null"],"example":"cc001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"receivableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"rinst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1000},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/receivables/{id}":{"get":{"tags":["Receivables"],"summary":"Detalhar conta a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"rec001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta encontrada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"rec001"},"description":{"type":"string","example":"Consultoria Maio 2026"},"totalAmount":{"type":"number","example":5000},"supplierId":{"type":["string","null"],"example":"sup001","description":"ID do cliente/pagador"},"dreGroupId":{"type":["string","null"],"example":"dreg002"},"costCenterId":{"type":["string","null"],"example":"cc001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"receivableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"rinst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1000},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"RECEIVABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Receivables"],"summary":"Atualizar conta a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"rec001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string"},"totalAmount":{"type":"number","exclusiveMinimum":0},"supplierId":{"type":["string","null"]},"dreGroupId":{"type":["string","null"]},"costCenterId":{"type":["string","null"]},"paymentMethod":{"type":["string","null"]},"notes":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Conta atualizada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"rec001"},"description":{"type":"string","example":"Consultoria Maio 2026"},"totalAmount":{"type":"number","example":5000},"supplierId":{"type":["string","null"],"example":"sup001","description":"ID do cliente/pagador"},"dreGroupId":{"type":["string","null"],"example":"dreg002"},"costCenterId":{"type":["string","null"],"example":"cc001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"receivableInstallments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"rinst001"},"installmentNumber":{"type":"number","example":1},"dueDate":{"type":"string","example":"2026-06-01"},"amount":{"type":"number","example":1000},"status":{"type":"string","example":"PENDING","description":"PENDING | PAID | OVERDUE | CANCELLED"},"paidAt":{"type":["string","null"]},"paidAmount":{"type":["number","null"]}},"required":["id","installmentNumber","dueDate","amount","status","paidAt","paidAmount"],"additionalProperties":{}}},"createdAt":{"type":"string"}},"required":["id","description","totalAmount","supplierId","dreGroupId","costCenterId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"RECEIVABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Receivables"],"summary":"Remover conta a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"rec001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Conta removida","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"RECEIVABLE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/receivables/bulk-delete":{"delete":{"tags":["Receivables"],"summary":"Remover múltiplas contas a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string"},"minItems":1,"example":["rec001","rec002"]}},"required":["ids"]}}}},"responses":{"200":{"description":"Contas removidas","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"number","example":2}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/receivables/recurrence/{id}/cancel":{"post":{"tags":["Receivables"],"summary":"Cancelar recorrência de conta a receber","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"recurrence001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Recorrência cancelada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{}},"required":["success"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"RESOURCE_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/reports/dre":{"get":{"tags":["Reports"],"summary":"DRE (Demonstração de Resultado do Exercício)","description":"Retorna despesas agrupadas por seção e grupo DRE para o período solicitado.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Mês (1-12)","example":"5"},"required":false,"description":"Mês (1-12)","name":"month","in":"query"},{"schema":{"type":"string","description":"Ano","example":"2026"},"required":false,"description":"Ano","name":"year","in":"query"},{"schema":{"type":"string","description":"Início do período customizado ISO 8601 (override month/year)","example":"2026-01-01"},"required":false,"description":"Início do período customizado ISO 8601 (override month/year)","name":"dateFrom","in":"query"},{"schema":{"type":"string","description":"Fim do período customizado ISO 8601","example":"2026-05-31"},"required":false,"description":"Fim do período customizado ISO 8601","name":"dateTo","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"DRE do período","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"period":{"type":"object","properties":{"start":{"type":"string","example":"2026-05-01T00:00:00.000Z"},"end":{"type":"string","example":"2026-05-31T23:59:59.999Z"}},"required":["start","end"]},"grandTotal":{"type":"number","example":15000},"sections":{"type":"array","items":{"type":"object","properties":{"section":{"type":"string","example":"OPERATIONAL"},"total":{"type":"number","example":8000},"groups":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","example":"Despesas com Pessoal"},"total":{"type":"number","example":5000},"count":{"type":"number","example":3}},"required":["name","total","count"]}}},"required":["section","total","groups"]}}},"required":["period","grandTotal","sections"]}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/reports/cash-flow":{"get":{"tags":["Reports"],"summary":"Fluxo de caixa projetado","description":"Retorna meses futuros com valores pagos (realizado) e pendentes (projetado). Útil para projeções de caixa.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Número de meses à frente (1-12, default: 3)","example":"6"},"required":false,"description":"Número de meses à frente (1-12, default: 3)","name":"months","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Fluxo de caixa por mês","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string","example":"mai/26","description":"Rótulo formatado do mês"},"period":{"type":"object","properties":{"start":{"type":"string","example":"2026-05-01T00:00:00.000Z"},"end":{"type":"string","example":"2026-05-31T23:59:59.999Z"}},"required":["start","end"]},"paid":{"type":"number","example":3000,"description":"Total já pago no mês"},"pending":{"type":"number","example":9500,"description":"Total pendente com vencimento no mês"},"pendingCount":{"type":"number","example":4,"description":"Número de parcelas pendentes"}},"required":["month","period","paid","pending","pendingCount"]}}},"required":["success","data"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/suppliers":{"get":{"tags":["Suppliers"],"summary":"Listar fornecedores","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","description":"Página (default 1)","example":"1"},"required":false,"description":"Página (default 1)","name":"page","in":"query"},{"schema":{"type":"string","description":"Itens por página, máx 100 (default 20)","example":"20"},"required":false,"description":"Itens por página, máx 100 (default 20)","name":"limit","in":"query"},{"schema":{"type":"string","description":"Busca por nome, razão social ou documento","example":"ABC"},"required":false,"description":"Busca por nome, razão social ou documento","name":"search","in":"query"},{"schema":{"type":"string","description":"Filtrar por ativo (true/false)"},"required":false,"description":"Filtrar por ativo (true/false)","name":"isActive","in":"query"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Lista paginada","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","example":"sup001"},"name":{"type":"string","example":"Fornecedor ABC Ltda"},"tradeName":{"type":["string","null"],"example":"ABC Soluções"},"document":{"type":["string","null"],"example":"12.345.678/0001-90"},"documentType":{"type":["string","null"],"example":"CNPJ","description":"CPF | CNPJ"},"email":{"type":["string","null"],"example":"contato@abc.com.br"},"phone":{"type":["string","null"],"example":"(11) 99999-0000"},"isActive":{"type":"boolean","example":true},"defaultDreGroupId":{"type":["string","null"],"example":"dreg001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","tradeName","document","documentType","email","phone","isActive","defaultDreGroupId","scope","createdAt"],"additionalProperties":{}}},"pagination":{"type":"object","properties":{"page":{"type":"number","example":1},"limit":{"type":"number","example":20},"total":{"type":"number","example":42},"pages":{"type":"number","example":3}},"required":["page","limit","total","pages"]}},"required":["items","pagination"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"post":{"tags":["Suppliers"],"summary":"Cadastrar fornecedor","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Fornecedor ABC Ltda","description":"Nome/razão social (obrigatório)"},"tradeName":{"type":"string","example":"ABC Soluções"},"document":{"type":"string","example":"12.345.678/0001-90","description":"CPF ou CNPJ (com ou sem formatação)"},"documentType":{"type":"string","enum":["CPF","CNPJ"],"example":"CNPJ"},"email":{"type":"string","example":"contato@abc.com.br"},"phone":{"type":"string","example":"(11) 99999-0000"},"defaultDreGroupId":{"type":"string","example":"dreg001","description":"Grupo DRE padrão para despesas deste fornecedor"}},"required":["name"]}}}},"responses":{"201":{"description":"Fornecedor criado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"sup001"},"name":{"type":"string","example":"Fornecedor ABC Ltda"},"tradeName":{"type":["string","null"],"example":"ABC Soluções"},"document":{"type":["string","null"],"example":"12.345.678/0001-90"},"documentType":{"type":["string","null"],"example":"CNPJ","description":"CPF | CNPJ"},"email":{"type":["string","null"],"example":"contato@abc.com.br"},"phone":{"type":["string","null"],"example":"(11) 99999-0000"},"isActive":{"type":"boolean","example":true},"defaultDreGroupId":{"type":["string","null"],"example":"dreg001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","tradeName","document","documentType","email","phone","isActive","defaultDreGroupId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"409":{"description":"SUPPLIER_DOCUMENT_TAKEN — documento já cadastrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/suppliers/{id}":{"get":{"tags":["Suppliers"],"summary":"Detalhar fornecedor","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"sup001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Fornecedor encontrado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"sup001"},"name":{"type":"string","example":"Fornecedor ABC Ltda"},"tradeName":{"type":["string","null"],"example":"ABC Soluções"},"document":{"type":["string","null"],"example":"12.345.678/0001-90"},"documentType":{"type":["string","null"],"example":"CNPJ","description":"CPF | CNPJ"},"email":{"type":["string","null"],"example":"contato@abc.com.br"},"phone":{"type":["string","null"],"example":"(11) 99999-0000"},"isActive":{"type":"boolean","example":true},"defaultDreGroupId":{"type":["string","null"],"example":"dreg001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","tradeName","document","documentType","email","phone","isActive","defaultDreGroupId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"SUPPLIER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"put":{"tags":["Suppliers"],"summary":"Atualizar fornecedor","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"sup001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","example":"Fornecedor XYZ Ltda"},"tradeName":{"type":"string"},"document":{"type":"string"},"documentType":{"type":"string","enum":["CPF","CNPJ"]},"email":{"type":"string"},"phone":{"type":"string"},"isActive":{"type":"boolean","example":true},"defaultDreGroupId":{"type":["string","null"]}}}}}},"responses":{"200":{"description":"Fornecedor atualizado","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"id":{"type":"string","example":"sup001"},"name":{"type":"string","example":"Fornecedor ABC Ltda"},"tradeName":{"type":["string","null"],"example":"ABC Soluções"},"document":{"type":["string","null"],"example":"12.345.678/0001-90"},"documentType":{"type":["string","null"],"example":"CNPJ","description":"CPF | CNPJ"},"email":{"type":["string","null"],"example":"contato@abc.com.br"},"phone":{"type":["string","null"],"example":"(11) 99999-0000"},"isActive":{"type":"boolean","example":true},"defaultDreGroupId":{"type":["string","null"],"example":"dreg001"},"scope":{"type":"string","enum":["BUSINESS","PERSONAL"]},"createdAt":{"type":"string"}},"required":["id","name","tradeName","document","documentType","email","phone","isActive","defaultDreGroupId","scope","createdAt"],"additionalProperties":{}}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"SUPPLIER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}},"delete":{"tags":["Suppliers"],"summary":"Remover fornecedor","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string","example":"sup001"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"responses":{"200":{"description":"Fornecedor removido","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"deleted":{"type":"boolean"}},"required":["deleted"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"404":{"description":"SUPPLIER_NOT_FOUND","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED / DAILY_QUOTA_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}},"/api/v1/upload":{"post":{"tags":["Upload"],"summary":"Upload de arquivo","description":"Faz upload de um arquivo para o storage configurado (Vercel Blob ou compatível S3). Retorna a URL pública do arquivo. Limite padrão: 25 MB.","security":[{"ApiKeyAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"x-api-key","in":"header"},{"schema":{"type":"string","enum":["BUSINESS","PERSONAL"]},"required":true,"name":"x-api-scope","in":"header"}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"description":"Arquivo a ser enviado (campo \"file\" no form-data)","format":"binary"}}}}}},"responses":{"201":{"description":"Arquivo enviado com sucesso","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[true]},"data":{"type":"object","properties":{"url":{"type":"string","format":"uri","example":"https://blob.vercel-storage.com/uploads/user123/1746700000000-nota.pdf"},"pathname":{"type":"string","example":"uploads/user123/1746700000000-nota.pdf"},"contentType":{"type":"string","example":"application/pdf"},"size":{"type":"number","example":102400},"name":{"type":"string","example":"nota.pdf"}},"required":["url","pathname","contentType","size","name"]}},"required":["success","data"]}}}},"400":{"description":"VALIDATION_ERROR — campo \"file\" ausente","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"401":{"description":"UNAUTHORIZED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"403":{"description":"SCOPE_FORBIDDEN","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"413":{"description":"FILE_TOO_LARGE — arquivo excede o limite de 25 MB","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"429":{"description":"RATE_LIMIT_EXCEEDED","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}},"500":{"description":"INTERNAL_ERROR","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","enum":[false]},"code":{"type":"string","example":"PAYABLE_NOT_FOUND","description":"Código de erro estável do catálogo v1"},"error":{"type":"string","example":"Conta a pagar não encontrada"},"details":{"type":["array","null"],"items":{"type":"object","properties":{"path":{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"number"}]}},"message":{"type":"string"}},"required":["path","message"]},"description":"Detalhes de erros de validação (apenas VALIDATION_ERROR)"}},"required":["success","code","error","details"]}}}}}}}},"webhooks":{}}