{"openapi":"3.2.0","info":{"title":"API pública do Meu Dinheiro","version":"1.0.0-preview","description":"API REST para integrar sistemas externos (ERP, automações, assistentes de IA) a um\n**workspace** do Meu Dinheiro. Em **acesso antecipado**: só para os workspaces do programa, e\npode mudar antes do lançamento.\n\nAutenticação, papéis, paginação, limite de requisições e erros estão nos guias em\nhttps://developers.meudinheiroweb.com.br; este spec guarda o contrato de cada rota.\n","license":{"name":"Proprietary","url":"https://www.meudinheiroweb.com.br"}},"servers":[{"url":"https://app.meudinheiroweb.com.br/api/public/v1","description":"Produção"}],"tags":[{"name":"Autenticação","description":"Troca da credencial por tokens e renovação."},{"name":"Credencial","description":"Quem é a credencial que está chamando."},{"name":"Contas","description":"Todas as contas do workspace, inclusive cartões de crédito, investimentos e as contas do balanço. Criar, alterar e excluir; a escrita de cartão de crédito fica em Cartões."},{"name":"Cartões","description":"Cartões de crédito, com os plásticos, e as faturas, com os números da tela da fatura. Criar, alterar e excluir. Sinal dos valores, mês da fatura e permissões no guia Cartões e faturas."},{"name":"Categorias","description":"As categorias de receita e despesa e as subcategorias. Criar, alterar e excluir, levando os lançamentos para outra categoria."},{"name":"Centros de custo","description":"Os centros de custo do workspace. Criar, alterar e excluir."},{"name":"Tags","description":"Os marcadores livres dos lançamentos. Criar, alterar e excluir."},{"name":"Formas de pagamento","description":"As formas de pagamento do workspace. Criar, alterar e excluir."},{"name":"Projetos","description":"Os projetos, com período e metas. Criar, alterar e excluir."},{"name":"Contatos","description":"Os clientes e fornecedores do workspace. Criar, alterar e excluir."},{"name":"Relatórios","description":"Os relatórios de lançamentos do app, com os mesmos números da tela: totais por cadastro, resultado, saldos, fluxo de caixa, metas, DRE e DFC. Sinal dos valores, período e permissões no guia Relatórios."},{"name":"Investimentos","description":"A carteira de investimentos, com os números da tela: posição por ativo e conta e as estratégias de alocação. Somente leitura. Exige a permissão do módulo de investimentos e o módulo no plano do workspace (sem ele, 403 `plan_required`)."}],"security":[{"accessToken":[]}],"paths":{"/auth/token":{"post":{"operationId":"issueToken","tags":["Autenticação"],"summary":"Troca a credencial por um par de tokens","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["api_key","api_secret"],"properties":{"api_key":{"type":"string","examples":["mdk_7bba95be3df304bd8c3ab559"]},"api_secret":{"type":"string","format":"password"}}}}}},"responses":{"200":{"$ref":"#/components/responses/TokenPair"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/auth/refresh":{"post":{"operationId":"refreshToken","tags":["Autenticação"],"summary":"Renova o par de tokens pelo refresh token","description":"O par usado deixa de valer, inclusive o access token dele.","security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["refresh_token"],"properties":{"refresh_token":{"type":"string"}}}}}},"responses":{"200":{"$ref":"#/components/responses/TokenPair"},"400":{"$ref":"#/components/responses/Error"},"401":{"$ref":"#/components/responses/Error"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/me":{"get":{"operationId":"me","tags":["Credencial"],"summary":"O workspace e a credencial ou a conexão do token","description":"A primeira chamada de quem integra, para conferir o token. Token de credencial (Key +\nSecret) traz `credential`; token de uma conexão MCP aprovada por um usuário traz `connection`.\n","responses":{"200":{"description":"Credencial válida.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Me"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contas":{"get":{"operationId":"listContas","tags":["Contas"],"summary":"Lista as contas","description":"Todas as contas do workspace: correntes, dinheiro, cartões de crédito, investimentos,\npoupança, imóveis, empréstimos e as demais contas do balanço. Inclui as inativas e as\nencerradas; filtre com `status=active` para só as que estão em uso. Não traz saldo.\n\nConta **oculta** para a credencial não aparece (e responde 404 na consulta por id); conta\n**somente leitura** aparece normalmente.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoConta"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusConta"}}],"responses":{"200":{"description":"Uma página de contas.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContaPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createConta","tags":["Contas"],"summary":"Cria uma conta","description":"Cria uma conta do workspace, com o saldo inicial lançado na data informada. Exige o papel\n**Editor** ou um papel com permissão de editar Contas.\n\nCartão de crédito se cria em `POST /cartoes`, e esta versão não cria `aplicacao_financeira`;\nos dois tipos aqui respondem 400. Em\n`contas_a_pagar` a `finalidade` é obrigatória (nos outros tipos, 400), e o tipo só existe em\nworkspace de pessoa jurídica: em pessoa física responde 422, como o app, que não o oferece.\nEm conta de passivo e de patrimônio líquido (`emprestimo_contratado`, `outros_passivos`,\n`capital_social`, `contas_a_pagar`) o saldo inicial é gravado negativo, como no app. Poupança\nsó existe em BRL.\n\nA resposta é a conta criada, no mesmo formato do `GET /contas/{id}`. Campo fora da lista\nresponde 400.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContaCriacao"}}}},"responses":{"201":{"description":"A conta criada.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conta"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite criar contas, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"A regra do Meu Dinheiro recusa a conta: saldo inicial no futuro (ou de hoje em poupança e imóvel), poupança fora de BRL, conta a pagar em workspace de pessoa física ou o limite de contas do workspace atingido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contas/{id}":{"get":{"operationId":"getConta","tags":["Contas"],"summary":"Uma conta","description":"Conta de outro workspace, inexistente ou oculta para a credencial responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"A conta.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conta"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceConta","tags":["Contas"],"summary":"Altera uma conta (todos os campos)","description":"Troca todos os campos graváveis da conta; para alterar só alguns, use `PATCH`. Exige o papel\n**Editor** ou um papel com permissão de editar Contas. O `tipo` não muda depois de criada:\n`tipo` e `id` no corpo respondem 400.\n\nNesta versão a API altera só os tipos que ela cria; `cartao_credito` (que se altera em\n`/cartoes`) e `aplicacao_financeira` respondem 422. Em `contas_a_pagar` a `finalidade` também é exigida. Em conta de passivo e\nde patrimônio líquido o saldo inicial é gravado negativo, como na criação.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContaAlteracao"}}}},"responses":{"200":{"description":"A conta alterada, no formato do `GET /contas/{id}`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conta"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite alterar contas, a conta é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A regra do Meu Dinheiro recusa a alteração: saldo inicial no futuro (ou de hoje em poupança e imóvel), poupança fora de BRL, troca de moeda em conta com operações de investimento, ou tipo que a API não altera nesta versão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateConta","tags":["Contas"],"summary":"Altera uma conta (só os campos enviados)","description":"Altera só os campos enviados; os demais ficam como estão. Nulo limpa `banco`, `agencia` e\n`numero_conta`. As regras são as do `PUT`. Para tirar a conta de uso sem perder o histórico,\nmude o `status` para `closed` (encerrada) ou `inactive`.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContaAlteracaoParcial"}}}},"responses":{"200":{"description":"A conta alterada, no formato do `GET /contas/{id}`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Conta"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite alterar contas, a conta é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A regra do Meu Dinheiro recusa a alteração (ver o `PUT`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteConta","tags":["Contas"],"summary":"Exclui uma conta","description":"Exclui a conta e o saldo inicial dela. Exige o papel **Editor** ou um papel com permissão\nde excluir Contas. A exclusão é definitiva.\n\nConta com lançamentos, com operações de investimento ou que paga um cartão de crédito não é\nexcluída, nem a última conta do workspace: a resposta é 422, e a saída que guarda o\nhistórico é encerrar a conta (`PATCH` com `status: closed`). Os tipos que a API não cria\nrespondem 422.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Excluída.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite excluir contas, a conta é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A conta tem lançamentos, operações de investimento ou cartão pago por ela, é a última do workspace, ou é de um tipo que a API não exclui nesta versão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes":{"get":{"operationId":"listCartoes","tags":["Cartões"],"summary":"Lista os cartões de crédito","description":"Os cartões do workspace com limite, vencimento, fechamento, a conta que paga a fatura e os\nplásticos. Inclui os inativos e os encerrados; filtre com `status=active` para só os que estão\nem uso. Cartão **oculto** para a credencial não aparece.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusConta"}}],"responses":{"200":{"description":"Uma página de cartões.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartaoPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createCartao","tags":["Cartões"],"summary":"Cria um cartão","description":"Cria um cartão de crédito com os plásticos (um titular e os adicionais) e a fatura do mês\nanterior ao vencimento, já fechada com o `valor_fatura_anterior`. Exige o papel **Editor** ou\num papel com permissão de editar Contas (o mesmo do app). A conta de pagamento precisa estar na\nmoeda do cartão e ser conta corrente, dinheiro, poupança ou conta do balanço.\n\nA resposta é o cartão criado, no formato do `GET /cartoes/{id}`. O cartão também aparece em\n`/contas`, com `tipo` `cartao_credito`, mas só se escreve aqui.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartaoCriacao"}}}},"responses":{"201":{"description":"O cartão criado.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cartao"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite criar contas, o cartão é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A regra do Meu Dinheiro recusa o cartão: sem titular ou com dois, conta de pagamento de outra moeda ou de tipo que não paga fatura, ou o limite de contas do workspace atingido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/faturas":{"get":{"operationId":"listFaturasDoMes","tags":["Cartões"],"summary":"A fatura de todos os cartões num mês","description":"O resumo da fatura de cada cartão em uso que vence no mês, numa chamada só: \"quanto vou\npagar de cartão este mês\". Sem `mes`, a fatura aberta de cada cartão. Os números são os de\n`GET /cartoes/{id}/faturas/{mes}`, sem os lançamentos; cartão cuja fatura do mês passa do\nhorizonte de faturas futuras fica de fora.\n","parameters":[{"name":"mes","in":"query","description":"O mês do vencimento, `AAAA-MM`. Sem ele, a fatura aberta de cada cartão.","schema":{"$ref":"#/components/schemas/Mes"}}],"responses":{"200":{"description":"Uma linha por cartão.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FaturasDoMes"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/parcelas-futuras":{"get":{"operationId":"listParcelasFuturasDeTodos","tags":["Cartões"],"summary":"As parcelas futuras de todos os cartões","description":"As parcelas futuras de cada cartão em uso, numa chamada só, um bloco por cartão no formato de `GET /cartoes/{id}/parcelas-futuras`.","responses":{"200":{"description":"Um bloco por cartão.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ParcelasFuturas"}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/{id}":{"get":{"operationId":"getCartao","tags":["Cartões"],"summary":"Um cartão","description":"Cartão de outro workspace, inexistente, oculto para a credencial ou conta que não é cartão responde 404.","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}}],"responses":{"200":{"description":"O cartão.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cartao"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceCartao","tags":["Cartões"],"summary":"Altera um cartão (todos os campos)","description":"Troca todos os campos do cartão (menos `valor_fatura_anterior`, opcional); para alterar só\nalguns, use `PATCH`. Exige o papel **Editor** ou um papel com permissão de editar Contas.\n\nPlásticos: com `id`, o existente (nome e status; o titular não se inativa); sem `id`, um novo.\nPlástico fora da lista fica como está, e adicional inativado sem lançamentos é excluído, como\nno app. Trocar o `proximo_vencimento` desloca as faturas abertas: no máximo um mês adiante, e\npara trás só se aquele mês não tem fatura fechada; adiante, com fatura fechada antiga, a fatura\naberta é fechada.\n","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartaoAlteracao"}}}},"responses":{"200":{"description":"O cartão alterado, no formato do `GET /cartoes/{id}`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cartao"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite alterar contas, o cartão é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A regra do Meu Dinheiro recusa a alteração: vencimento fora do que o app aceita, titular inativado, conta de pagamento de outra moeda ou de tipo que não paga fatura, troca de moeda em cartão com operações.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateCartao","tags":["Cartões"],"summary":"Altera um cartão (só os campos enviados)","description":"Altera só os campos enviados; as regras são as do `PUT`. Para tirar o cartão de uso sem perder\no histórico, mude o `status` para `closed`.\n","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartaoAlteracaoParcial"}}}},"responses":{"200":{"description":"O cartão alterado, no formato do `GET /cartoes/{id}`.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cartao"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite alterar contas, o cartão é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A regra do Meu Dinheiro recusa a alteração (ver o `PUT`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteCartao","tags":["Cartões"],"summary":"Exclui um cartão","description":"Exclui o cartão, os plásticos e as faturas. Exige o papel **Editor** ou um papel com\npermissão de excluir Contas. A exclusão é definitiva. Cartão com lançamentos não é\nexcluído (422): a saída que guarda o histórico é encerrá-lo (`PATCH` com `status: closed`).\n","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}}],"responses":{"204":{"description":"Excluído.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"O papel da credencial não permite excluir contas, o cartão é somente leitura para ela, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O cartão tem lançamentos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/{id}/faturas":{"get":{"operationId":"listFaturas","tags":["Cartões"],"summary":"As faturas do cartão, mês a mês","description":"Um resumo por fatura, de `inicio` a `fim`: vencimento, situação, valor e pagamentos. Os meses\nantes da fatura aberta só aparecem quando a fatura existe; da aberta em diante, todos — a futura\ntraz o que já foi lançado nela, inclusive parcelas e recorrências.\n","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}},{"name":"inicio","in":"query","description":"O primeiro mês. Sem o parâmetro, 11 meses antes do `fim`.","schema":{"$ref":"#/components/schemas/Mes"}},{"name":"fim","in":"query","description":"O último mês, até 36 depois do de `inicio` e da fatura aberta. Sem o parâmetro, o mês da fatura aberta.","schema":{"$ref":"#/components/schemas/Mes"}}],"responses":{"200":{"description":"O histórico.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HistoricoFaturas"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/{id}/faturas/{mes}":{"get":{"operationId":"getFatura","tags":["Cartões"],"summary":"Uma fatura com os lançamentos","description":"A fatura que vence em `mes`, com o resumo da tela e todos os lançamentos (sem paginação). Mês\nsem fatura — antes do cartão, a primeira (que só guarda o saldo anterior ao cadastro) ou anterior\nà aberta que não existe — responde 404.\n","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}},{"name":"mes","in":"path","required":true,"description":"O mês do vencimento.","schema":{"$ref":"#/components/schemas/Mes"}}],"responses":{"200":{"description":"A fatura.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Fatura"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/cartoes/{id}/parcelas-futuras":{"get":{"operationId":"listParcelasFuturas","tags":["Cartões"],"summary":"As parcelas que ainda vão cair","description":"As parcelas de compras parceladas nas faturas depois da aberta, como na tela Parcelas futuras.","parameters":[{"name":"id","in":"path","required":true,"description":"O id do cartão (o mesmo da conta em `/contas`).","schema":{"type":"integer"}}],"responses":{"200":{"description":"As parcelas.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ParcelasFuturas"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/categorias":{"get":{"operationId":"listCategorias","tags":["Categorias"],"summary":"Lista as categorias","description":"Categorias de receita, despesa e transferência, com as subcategorias na mesma lista\n(`categoria_pai_id` aponta para a categoria de cima). Inclui as inativas, que lançamentos\nantigos ainda usam; filtre com `status=active` para ficar só com as ativas.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoCategoria"}},{"name":"status","in":"query","schema":{"type":"string","enum":["active","inactive"]}}],"responses":{"200":{"description":"Uma página de categorias.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createCategoria","tags":["Categorias"],"summary":"Cria uma categoria","description":"Cria uma categoria ativa de receita ou despesa; com `categoria_pai_id`, uma subcategoria\n(um nível só, do mesmo tipo da de cima, que deve estar ativa). Transferência é do Meu\nDinheiro e não se cria. As linhas do DRE e do DFC não fazem parte da API: a categoria\nnasce sem elas, e quem usa os demonstrativos as liga pelo app. Exige o papel\n**Editor** ou um papel com permissão de editar Categorias. A resposta tem o mesmo\nformato do `GET /categorias/{id}`.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaCriacao"}}}},"responses":{"201":{"description":"A categoria criada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categoria"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O limite de categorias do workspace foi atingido, ou a categoria de cima não existe,\né de outro tipo, é uma subcategoria ou está inativa.\n","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/categorias/{id}":{"get":{"operationId":"getCategoria","tags":["Categorias"],"summary":"Uma categoria","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"A categoria.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categoria"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceCategoria","tags":["Categorias"],"summary":"Altera uma categoria (todos os campos)","description":"Troca nome, categoria de cima e status; `tipo` não muda (400). Categoria de sistema não se\naltera (422). Para alterar só alguns campos, use `PATCH`. Exige o papel **Editor** ou um\npapel com permissão de editar Categorias.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaAlteracao"}}}},"responses":{"200":{"description":"A categoria alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categoria"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateCategoria","tags":["Categorias"],"summary":"Altera uma categoria (só os campos enviados)","description":"Altera somente os campos enviados; `categoria_pai_id` nulo leva a categoria ao primeiro\nnível. Inativar a que tem subcategoria ativa, ou pôr sob outra a que tem subcategorias, é\n422. Exige o papel **Editor** ou um papel com permissão de editar Categorias.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoriaAlteracaoParcial"}}}},"responses":{"200":{"description":"A categoria alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Categoria"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteCategoria","tags":["Categorias"],"summary":"Exclui uma categoria","description":"Exclui a categoria e leva para `destino_id`, **obrigatório**, os lançamentos, agendas e\nregras que a usavam: lançamento não fica sem categoria. O destino deve ser outra categoria\ndo mesmo workspace e do mesmo tipo (inativa ou subcategoria também serve). As metas de\norçamento da categoria são apagadas. Categoria de sistema e categoria com subcategorias não\nse excluem. Exige o papel **Editor** ou um papel com permissão de excluir Categorias. A\nexclusão é definitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"destino_id","in":"query","required":true,"schema":{"type":"integer","minimum":1}}],"responses":{"204":{"description":"Excluída."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O destino é a própria categoria ou de outro tipo, a categoria é de sistema ou tem subcategorias.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/centros":{"get":{"operationId":"listCentros","tags":["Centros de custo"],"summary":"Lista os centros de custo","description":"Os centros de custo do workspace, que classificam lançamentos por área, setor ou\natividade. Inclui os inativos; `status` filtra.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusCadastro"}}],"responses":{"200":{"description":"Uma página.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CentroPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createCentro","tags":["Centros de custo"],"summary":"Cria um centro de custo","description":"Cria um centro de custo ativo. Exige o papel **Editor** ou um papel com permissão de\neditar Centros. A resposta tem o mesmo formato do `GET /centros/{id}`.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CentroCriacao"}}}},"responses":{"201":{"description":"O centro criado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Centro"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O limite de centros de custo do workspace foi atingido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/centros/{id}":{"get":{"operationId":"getCentro","tags":["Centros de custo"],"summary":"Um centro de custo","description":"Centro de outro workspace, ou inexistente, responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"O item.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Centro"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceCentro","tags":["Centros de custo"],"summary":"Altera um centro de custo (todos os campos)","description":"Troca `nome` e `status`; para alterar só um deles, use `PATCH`. Exige o papel **Editor**\nou um papel com permissão de editar Centros.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CentroAlteracao"}}}},"responses":{"200":{"description":"O centro alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Centro"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateCentro","tags":["Centros de custo"],"summary":"Altera um centro de custo (só os campos enviados)","description":"Altera somente `nome` e/ou `status`; os campos ausentes ficam como estão. Exige o papel\n**Editor** ou um papel com permissão de editar Centros.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CentroAlteracaoParcial"}}}},"responses":{"200":{"description":"O centro alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Centro"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteCentro","tags":["Centros de custo"],"summary":"Exclui um centro de custo","description":"Exclui o centro. `destino_id` leva para outro centro os lançamentos, agendas e regras\nque o usavam; sem destino, eles ficam sem centro. O destino deve pertencer ao mesmo\nworkspace e ser diferente do excluído. Exige o papel **Editor** ou um papel com permissão\nde excluir Centros. A exclusão é definitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"destino_id","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"204":{"description":"Excluído."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O destino é o próprio centro excluído.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tags":{"get":{"operationId":"listTags","tags":["Tags"],"summary":"Lista as tags","description":"As tags do workspace, marcadores livres dos lançamentos. Inclui as inativas;\n`status` filtra.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusCadastro"}}],"responses":{"200":{"description":"Uma página.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createTag","tags":["Tags"],"summary":"Cria uma tag","description":"Cria uma tag ativa. Exige o papel **Editor** ou um papel com permissão de editar Tags.\nA resposta tem o mesmo formato do `GET /tags/{id}`.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagCriacao"}}}},"responses":{"201":{"description":"A tag criada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O nome já existe ou o limite de tags do workspace foi atingido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/tags/{id}":{"get":{"operationId":"getTag","tags":["Tags"],"summary":"Uma tag","description":"Tag de outro workspace, ou inexistente, responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"O item.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceTag","tags":["Tags"],"summary":"Altera uma tag (todos os campos)","description":"Troca `nome`, `cor` e `status`; para alterar só alguns deles, use `PATCH`. Exige o papel\n**Editor** ou um papel com permissão de editar Tags.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagAlteracao"}}}},"responses":{"200":{"description":"A tag alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O nome já pertence a outra tag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateTag","tags":["Tags"],"summary":"Altera uma tag (só os campos enviados)","description":"Altera somente `nome`, `cor` e/ou `status`; os campos ausentes ficam como estão. Exige o\npapel **Editor** ou um papel com permissão de editar Tags.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagAlteracaoParcial"}}}},"responses":{"200":{"description":"A tag alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Tag"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O nome já pertence a outra tag.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteTag","tags":["Tags"],"summary":"Exclui uma tag","description":"Exclui a tag e a tira dos lançamentos, das agendas e das regras que a usavam. Exige o papel\n**Editor** ou um papel com permissão de excluir Tags. A exclusão é definitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Excluída."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/formas-pagamento":{"get":{"operationId":"listFormasPagamento","tags":["Formas de pagamento"],"summary":"Lista as formas de pagamento","description":"As formas de pagamento do workspace. Inclui as inativas; `tipo` e `status` filtram.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"tipo","in":"query","schema":{"$ref":"#/components/schemas/TipoFormaPagamento"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusCadastro"}}],"responses":{"200":{"description":"Uma página.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamentoPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createFormaPagamento","tags":["Formas de pagamento"],"summary":"Cria uma forma de pagamento","description":"Cria uma forma ativa do tipo `normal`; no workspace que ainda não tem formas, cria antes as\nformas padrão. A de `cartao_credito` é criada pelo Meu Dinheiro e não se cria pela API.\nExige o papel **Editor** ou um papel com permissão de editar Formas de pagamento.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamentoCriacao"}}}},"responses":{"201":{"description":"A forma criada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamento"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O tipo é `cartao_credito` ou o limite de formas do workspace foi atingido.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/formas-pagamento/{id}":{"get":{"operationId":"getFormaPagamento","tags":["Formas de pagamento"],"summary":"Uma forma de pagamento","description":"Forma de outro workspace, ou inexistente, responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"O item.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamento"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceFormaPagamento","tags":["Formas de pagamento"],"summary":"Altera uma forma de pagamento (todos os campos)","description":"Troca `nome` e `status`; o `tipo` não muda. Para alterar só um campo, use `PATCH`. Exige o\npapel **Editor** ou um papel com permissão de editar Formas de pagamento.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamentoAlteracao"}}}},"responses":{"200":{"description":"A forma alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamento"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A forma é a de cartão de crédito, criada pelo Meu Dinheiro.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateFormaPagamento","tags":["Formas de pagamento"],"summary":"Altera uma forma de pagamento (só os campos enviados)","description":"Altera `nome` e/ou `status`; o `tipo` não muda e os campos ausentes ficam como estão. Exige\no papel **Editor** ou um papel com permissão de editar Formas de pagamento.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamentoAlteracaoParcial"}}}},"responses":{"200":{"description":"A forma alterada.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FormaPagamento"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A forma é a de cartão de crédito, criada pelo Meu Dinheiro.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteFormaPagamento","tags":["Formas de pagamento"],"summary":"Exclui uma forma de pagamento","description":"Exclui a forma e a tira dos lançamentos, das agendas e das regras que a usavam. A de cartão\nde crédito não pode ser excluída. Exige o papel **Editor** ou um papel com permissão de\nexcluir Formas de pagamento. A exclusão é definitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"Excluída."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A forma é a de cartão de crédito, criada pelo Meu Dinheiro.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/projetos":{"get":{"operationId":"listProjetos","tags":["Projetos"],"summary":"Lista os projetos","description":"Os projetos do workspace, que agrupam lançamentos de uma obra, evento ou cliente, com\no período e as metas do projeto inteiro. Inclui os inativos; `status` filtra.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusCadastro"}}],"responses":{"200":{"description":"Uma página.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjetoPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createProjeto","tags":["Projetos"],"summary":"Cria um projeto","description":"Cria um projeto ativo. Exige o papel **Editor** ou um papel com permissão de\neditar Projetos. A resposta tem o mesmo formato do `GET /projetos/{id}`.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjetoCriacao"}}}},"responses":{"201":{"description":"O projeto criado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projeto"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O limite de projetos do workspace foi atingido, ou o fim é antes do início.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/projetos/{id}":{"get":{"operationId":"getProjeto","tags":["Projetos"],"summary":"Um projeto","description":"Projeto de outro workspace, ou inexistente, responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"O item.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projeto"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceProjeto","tags":["Projetos"],"summary":"Altera um projeto (todos os campos)","description":"Troca todos os campos; `inicio`, `fim` e as metas aceitam nulo. Para alterar só alguns, use\n`PATCH`. Exige o papel **Editor** ou um papel com permissão de editar Projetos.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjetoAlteracao"}}}},"responses":{"200":{"description":"O projeto alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projeto"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateProjeto","tags":["Projetos"],"summary":"Altera um projeto (só os campos enviados)","description":"Altera somente os campos enviados; os ausentes ficam como estão, e nulo em `inicio`, `fim`\nou nas metas remove o valor. Exige o papel **Editor** ou um papel com permissão de editar\nProjetos.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjetoAlteracaoParcial"}}}},"responses":{"200":{"description":"O projeto alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Projeto"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteProjeto","tags":["Projetos"],"summary":"Exclui um projeto","description":"Exclui o projeto. `destino_id` leva para outro projeto os lançamentos, agendas e regras\nque o usavam; sem destino, eles ficam sem projeto. As metas por categoria do projeto são\napagadas nos dois casos. O destino deve pertencer ao mesmo workspace e ser diferente do\nexcluído. Exige o papel **Editor** ou um papel com permissão de excluir Projetos. A\nexclusão é definitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"destino_id","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"204":{"description":"Excluído."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O destino é o próprio projeto excluído.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contatos":{"get":{"operationId":"listContatos","tags":["Contatos"],"summary":"Lista os contatos","description":"Os clientes e fornecedores do workspace, com documento, e-mail, telefones e\nendereço. Inclui os inativos. `tipo_contato=cliente` traz também quem é cliente **e**\nfornecedor (`ambos`); o mesmo vale para `fornecedor`.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"tipo_pessoa","in":"query","schema":{"$ref":"#/components/schemas/TipoPessoa"}},{"name":"tipo_contato","in":"query","schema":{"$ref":"#/components/schemas/TipoContato"}},{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/StatusCadastro"}}],"responses":{"200":{"description":"Uma página.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContatoPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"429":{"$ref":"#/components/responses/RateLimited"}}},"post":{"operationId":"createContato","tags":["Contatos"],"summary":"Cria um contato","description":"Cria um contato ativo. `nome`, `tipo_pessoa` e `tipo_contato` são obrigatórios; o\n`documento` é validado (CPF na pessoa física, CNPJ, inclusive alfanumérico, na jurídica) e\ngravado sem pontuação. RG, nascimento, inscrições, observação, campos personalizados e\nanexos ficam fora do contrato. Exige o papel **Editor** ou um papel com permissão de\neditar Contatos. A resposta tem o mesmo formato do `GET /contatos/{id}`.\n","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContatoCriacao"}}}},"responses":{"201":{"description":"O contato criado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contato"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"422":{"description":"O limite de contatos do workspace foi atingido, ou a categoria não existe.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/contatos/{id}":{"get":{"operationId":"getContato","tags":["Contatos"],"summary":"Um contato","description":"Contato de outro workspace, ou inexistente, responde 404.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"description":"O item.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contato"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}},"put":{"operationId":"replaceContato","tags":["Contatos"],"summary":"Altera um contato (todos os campos)","description":"Troca todos os campos do contrato; nulo limpa. O que está fora do contrato (RG, nascimento,\ninscrições, observação, campos personalizados, anexos) fica como está. Para alterar só\nalguns, use `PATCH`. Exige o papel **Editor** ou um papel com permissão de editar\nContatos.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContatoAlteracao"}}}},"responses":{"200":{"description":"O contato alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contato"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"patch":{"operationId":"updateContato","tags":["Contatos"],"summary":"Altera um contato (só os campos enviados)","description":"Altera somente os campos enviados; os ausentes ficam como estão. Trocar `tipo_pessoa`\nconfere o documento gravado contra o tipo novo. Exige o papel **Editor** ou um papel com\npermissão de editar Contatos.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContatoAlteracaoParcial"}}}},"responses":{"200":{"description":"O contato alterado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contato"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}},"delete":{"operationId":"deleteContato","tags":["Contatos"],"summary":"Exclui um contato","description":"Exclui o contato. `destino_id` leva para outro contato os lançamentos, agendas e regras\nque o usavam; sem destino, eles ficam sem contato. Contato com proposta comercial não é\nexcluído (422). O destino deve pertencer ao mesmo workspace e ser diferente do excluído.\nExige o papel **Editor** ou um papel com permissão de excluir Contatos. A exclusão é\ndefinitiva.\n","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer"}},{"name":"destino_id","in":"query","schema":{"type":"integer","minimum":1}}],"responses":{"204":{"description":"Excluído."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/NotEnabled"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"O destino é o próprio contato excluído, ou o contato tem proposta comercial.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/categorias":{"get":{"operationId":"relatorioTotaisCategorias","tags":["Relatórios"],"summary":"Totais por categoria","description":"Soma por categoria, com a categoria de cima em `categoria_pai`. É a tela Totais por categoria; com `intervalo`, a Evolução por categoria. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Totais por categoria, Evolução por categoria, Despesas/Receitas por categoria da visão geral ou Lançamentos por categoria.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"},{"name":"agrupar_subcategorias","in":"query","description":"Soma a subcategoria na categoria de cima.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorCategorias"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/centros":{"get":{"operationId":"relatorioTotaisCentros","tags":["Relatórios"],"summary":"Totais por centro de custo","description":"Soma por centro de custo e tipo. É a tela Totais por centro; com `intervalo`, a Evolução por centro. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Totais por centro, Evolução por centro, Despesas/Receitas/Resultados por centro da visão geral ou Lançamentos por centro.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorCentros"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/contatos":{"get":{"operationId":"relatorioTotaisContatos","tags":["Relatórios"],"summary":"Totais por contato","description":"Soma por contato (cliente ou fornecedor) e tipo. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Totais por contato, Evolução por contato, Resultados por contato ou Lançamentos por contato.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorContatos"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/projetos":{"get":{"operationId":"relatorioTotaisProjetos","tags":["Relatórios"],"summary":"Totais por projeto","description":"Soma por projeto e tipo. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Totais por projeto, Resultados por projeto ou Lançamentos por projeto.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorProjetos"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/tags":{"get":{"operationId":"relatorioTotaisTags","tags":["Relatórios"],"summary":"Totais por tag","description":"Soma por tag e tipo. Lançamento sem tag não entra; com duas tags, entra nas duas. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Totais por categoria.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorTags"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/totais/contas":{"get":{"operationId":"relatorioTotaisContas","tags":["Relatórios"],"summary":"Totais por conta","description":"Movimento do período por conta e tipo, na apuração de resultado (sem saldo inicial). Para o saldo, use `/relatorios/saldos`. Sem `tipo`, receita e despesa.\n\nExige a permissão de ver Lançamentos de caixa, Extrato de contas, Saldos de caixa ou Resultados de caixa.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os totais.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotaisPorContas"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/resultado":{"get":{"operationId":"relatorioResultado","tags":["Relatórios"],"summary":"Receitas × despesas","description":"Receitas, despesas e o resultado do período, com as transferências à parte. É o Resultado\ndo mês da visão geral; com `intervalo`, a evolução dele.\n\nExige a permissão de ver Resultados do mês, Comparação entre períodos ou Lançamentos de caixa.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"O resultado.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Resultado"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/saldos":{"get":{"operationId":"relatorioSaldos","tags":["Relatórios"],"summary":"Saldo de cada conta numa data","description":"O saldo de cada conta ao fim de `data`, como no card Saldos de caixa: saldo inicial e todos\nos lançamentos até a data, com a fatura do cartão projetada na conta que a paga. `projetado`\ninclui o que vence até a data e ainda não foi pago; `confirmado`, só o realizado.\n\nExige a permissão de ver Saldos de caixa, Extrato de contas, Lançamentos de caixa ou Fluxo de caixa.\n","parameters":[{"name":"data","in":"query","description":"O dia do saldo. Sem o parâmetro, hoje.","schema":{"type":"string","format":"date"}},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"Os saldos.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Saldos"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/fluxo-caixa":{"get":{"operationId":"relatorioFluxoCaixa","tags":["Relatórios"],"summary":"Fluxo de caixa","description":"Saldo inicial, entradas, saídas, resultado e saldo acumulado por período, no total e por conta,\ncomo na tela Fluxo de caixa. Entram as contas de caixa (disponíveis, ativas, na moeda pedida;\nsem cartão nem carteira de investimentos), e a fatura do cartão aparece projetada na conta que\na paga. Os valores são os projetados: `status` decide o que entra.\n\nOs pendentes vencidos seguem a configuração do workspace (o\n`pendentes_no_presente` não se aplica aqui, como na tela).\n\nExige a permissão de ver Fluxo de caixa.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"name":"intervalo","in":"query","description":"Tamanho de cada período.","schema":{"type":"string","enum":["dia","mes","ano"],"default":"mes"}},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/FiltroContas"},{"name":"transferencias_entre_contas_caixa","in":"query","description":"Inclui as transferências entre duas contas de caixa (que não mudam o saldo total).","schema":{"type":"boolean","default":true}},{"name":"contas_pagar_receber","in":"query","description":"Soma também os pendentes das contas de Contas a pagar e a receber. Só vale sem o filtro `contas`.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"O fluxo de caixa.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FluxoCaixa"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/metas/categorias":{"get":{"operationId":"relatorioMetasCategorias","tags":["Relatórios"],"summary":"Meta × realizado por categoria","description":"O Orçamento: a meta de cada categoria no período, o realizado e quanto falta ou excedeu. A categoria de cima soma as filhas; o que foi lançado direto nela, sem subcategoria, vem numa linha própria com `lancado_na_categoria_pai: true`. As metas de investimento não entram.\n\nO período conta em meses inteiros (`inicio` vai ao primeiro dia do mês e `fim`, ao último).\nCom `intervalo=mes`, uma linha por mês; outro intervalo é 400.\n\nExige a permissão de ver Metas de orçamento ou Metas de despesa/receita da visão geral.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"As metas.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetasCategorias"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/metas/centros":{"get":{"operationId":"relatorioMetasCentros","tags":["Relatórios"],"summary":"Meta × realizado por centro de custo","description":"As Metas por centro: a meta de despesa e de receita de cada centro de custo no período, o realizado e quanto falta ou excedeu.\n\nO período conta em meses inteiros (`inicio` vai ao primeiro dia do mês e `fim`, ao último).\nCom `intervalo=mes`, uma linha por mês; outro intervalo é 400.\n\nExige a permissão de ver Metas por centros.\n","parameters":[{"$ref":"#/components/parameters/Inicio"},{"$ref":"#/components/parameters/Fim"},{"$ref":"#/components/parameters/Regime"},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Tipo"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/Intervalo"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCategorias"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"As metas.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MetasCentros"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/dre":{"get":{"operationId":"relatorioDre","tags":["Relatórios"],"summary":"Demonstração do Resultado do Exercício (DRE)","description":"As linhas do DRE, com o valor de cada período, a análise vertical (sobre a Receita Líquida) e\na horizontal (sobre o período anterior), a média e o total. A categoria vai para a linha a que\nestá vinculada na tela do DRE; sem vínculo, para a linha padrão do tipo dela. Linhas de\n`tipo: categorias` trazem as categorias em `itens`.\n\nExige a permissão de ver o DRE.\n","parameters":[{"name":"fim","in":"query","description":"Um dia do último mês do demonstrativo. Sem o parâmetro, o mês atual.","schema":{"type":"string","format":"date"}},{"name":"intervalo","in":"query","description":"Tamanho de cada período (coluna).","schema":{"type":"string","enum":["mes","trimestre","semestre","ano"],"default":"mes"}},{"name":"periodos","in":"query","description":"Quantos períodos, contando para trás a partir do `fim`. A janela vai até 5 anos.","schema":{"type":"integer","minimum":1,"maximum":60,"default":12}},{"name":"regime","in":"query","required":true,"description":"`caixa` pela data de pagamento; `competencia` pela data de competência.","schema":{"type":"string","enum":["caixa","competencia"]}},{"name":"linhas_zeradas","in":"query","description":"Inclui as linhas sem valor em nenhum período.","schema":{"type":"boolean","default":true}},{"name":"contas_pagar_receber","in":"query","description":"Soma os pendentes das contas de Contas a pagar e a receber no mês atual (só no regime de caixa).","schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"O DRE.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Demonstrativo"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/relatorios/dfc":{"get":{"operationId":"relatorioDfc","tags":["Relatórios"],"summary":"Demonstração do Fluxo de Caixa (DFC)","description":"As linhas do DFC por atividade (operacional, investimento e financiamento), do saldo inicial ao\nsaldo final de caixa, com o valor de cada período, as análises, a média e o total. Sempre no\nregime de caixa, sobre as contas de caixa.\n\nExige a permissão de ver o DFC.\n","parameters":[{"name":"fim","in":"query","description":"Um dia do último mês do demonstrativo. Sem o parâmetro, o mês atual.","schema":{"type":"string","format":"date"}},{"name":"intervalo","in":"query","description":"Tamanho de cada período (coluna).","schema":{"type":"string","enum":["mes","trimestre","semestre","ano"],"default":"mes"}},{"name":"periodos","in":"query","description":"Quantos períodos, contando para trás a partir do `fim`. A janela vai até 5 anos.","schema":{"type":"integer","minimum":1,"maximum":60,"default":12}},{"name":"linhas_zeradas","in":"query","description":"Inclui as linhas sem valor em nenhum período.","schema":{"type":"boolean","default":true}},{"name":"contas_pagar_receber","in":"query","description":"Soma os pendentes das contas de Contas a pagar e a receber.","schema":{"type":"boolean","default":true}},{"$ref":"#/components/parameters/Status"},{"$ref":"#/components/parameters/Moeda"},{"$ref":"#/components/parameters/PendentesNoPresente"},{"$ref":"#/components/parameters/FiltroContas"},{"$ref":"#/components/parameters/FiltroCentros"},{"$ref":"#/components/parameters/FiltroContatos"},{"$ref":"#/components/parameters/FiltroProjetos"},{"$ref":"#/components/parameters/FiltroTags"},{"$ref":"#/components/parameters/FiltroFormasPagamento"}],"responses":{"200":{"description":"O DFC.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Demonstrativo"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"422":{"$ref":"#/components/responses/Unprocessable"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/carteira":{"get":{"operationId":"getCarteiraInvestimentos","tags":["Investimentos"],"summary":"A posição da carteira, por ativo e conta","description":"Uma linha por ativo em cada conta de investimento (`tipo: ativo`) e uma por conta de\ninvestimento que não é carteira de ativos, como um CDB ou uma poupança (`tipo: conta`).\nOs valores são os da tela da carteira. O valor dos títulos indexados e das contas vem da série\nde rentabilidade, calculada até `atualizado_ate`. Se a data não for ontem, abra Investimentos\nno Meu Dinheiro para atualizar; a leitura não recalcula nem grava.\n\nA conta oculta para a credencial não entra, e pedi-la em `contas` responde 404. Sem o módulo\nde investimentos no plano, 403 com `code` `plan_required`.\n","parameters":[{"$ref":"#/components/parameters/Limit"},{"$ref":"#/components/parameters/Cursor"},{"name":"contas","in":"query","description":"Ids das contas de investimento, separados por vírgula. Sem o parâmetro, todas.","schema":{"type":"string","examples":["12,15"]}},{"name":"moeda","in":"query","description":"Código ISO 4217 em que os valores saem, convertidos. Sem o parâmetro, BRL.","schema":{"type":"string","examples":["BRL"]}},{"name":"estrategia","in":"query","description":"O id de uma estratégia (`GET /investimentos/estrategias`). Com ela, cada linha traz os `grupos` da estratégia em que entra.","schema":{"type":"integer"}},{"name":"grupo","in":"query","description":"O id de um grupo da `estrategia`; exige `estrategia`.","schema":{"type":"integer"}}],"responses":{"200":{"description":"A posição.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarteiraInvestimentosPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/estrategias":{"get":{"operationId":"listEstrategias","tags":["Investimentos"],"summary":"As estratégias de alocação da carteira","description":"\"Tipo de ativo\" (id 0), que o app monta a partir do tipo de cada ativo, e as estratégias\nativas do workspace. Sem o plano avançado de investimentos, só as do sistema, como no app.\nO id do grupo da \"Tipo de ativo\" é o código do tipo.\n","responses":{"200":{"description":"As estratégias.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EstrategiaList"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/rentabilidade":{"get":{"operationId":"getRentabilidade","tags":["Investimentos"],"summary":"A rentabilidade da carteira, com benchmarks","description":"A rentabilidade por cotização (como a tela: aporte e retirada não distorcem), acumulada desde\no dia anterior ao `inicio`, da carteira inteira ou de um recorte (`contas`, `ativos` ou o\ngrupo de uma estratégia). Valores em fração: 0,05 é 5%.\n\nA série só vai até `atualizado_ate`, o último dia que o Meu Dinheiro calculou; os benchmarks\nparam na mesma data, para a comparação ser na mesma janela. `inicio` antes de 2018-01-01, o\nmarco da rentabilidade, vira 2018-01-01, e a resposta traz o `inicio` usado. Se\n`atualizado_ate` não for ontem, abra Investimentos no Meu Dinheiro para atualizar; a leitura\nnão recalcula nem grava.\n","parameters":[{"name":"inicio","in":"query","description":"O primeiro dia do período. Sem o parâmetro, um ano antes do `fim`.","schema":{"type":"string","format":"date"}},{"name":"fim","in":"query","description":"O último dia, até ontem. Sem o parâmetro, ontem.","schema":{"type":"string","format":"date"}},{"name":"intervalo","in":"query","description":"Um ponto por `dia` (até 366 dias), `mes` ou `ano`; o ponto do mês e do ano é o último dia com cota nele.","schema":{"type":"string","enum":["dia","mes","ano"],"default":"mes"}},{"name":"benchmarks","in":"query","description":"Os índices para comparar, separados por vírgula (`GET /investimentos/benchmarks`).","schema":{"type":"string","examples":["cdi,ibovespa"]}},{"name":"contas","in":"query","description":"Ids das contas de investimento, separados por vírgula.","schema":{"type":"string"}},{"name":"ativos","in":"query","description":"Ids dos ativos, separados por vírgula. Não combina com `estrategia`.","schema":{"type":"string"}},{"name":"estrategia","in":"query","description":"O id de uma estratégia (`GET /investimentos/estrategias`).","schema":{"type":"integer"}},{"name":"grupo","in":"query","description":"O id de um grupo da `estrategia`; exige `estrategia`.","schema":{"type":"integer"}},{"name":"moeda","in":"query","description":"Código ISO 4217 em que a carteira é medida, convertida. Sem o parâmetro, BRL.","schema":{"type":"string","examples":["BRL"]}},{"name":"detalhar","in":"query","description":"Com `true`, cada ponto traz também o `saldo` do dia e os `aportes` e as `retiradas` desde o ponto anterior (o primeiro, desde o `inicio`).","schema":{"type":"boolean","default":false}},{"name":"por_ativo","in":"query","description":"Com `true`, a resposta traz também `series`: uma série para cada ativo de `ativos` (ou da `estrategia`), restrita às `contas`; sem ativos, uma para cada conta de `contas`. Até 20 séries, cada uma com os benchmarks por ponto, e só com `intervalo` `mes` ou `ano` (com `dia`, 400). Compara vários ativos numa chamada só.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"A série.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerieRentabilidade"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/rentabilidade/ativos":{"get":{"operationId":"listRentabilidadeAtivos","tags":["Investimentos"],"summary":"A rentabilidade de cada ativo no período, do maior para o menor","description":"Por ativo em cada conta, desde `inicio` até a última cota calculada (`atualizado_ate`), com o\nvalor atual e a participação da posição de hoje (nulos quando a posição já fechou).\n","parameters":[{"name":"inicio","in":"query","description":"O primeiro dia. Sem o parâmetro, um ano atrás; antes de 2018-01-01, 2018-01-01.","schema":{"type":"string","format":"date"}},{"name":"moeda","in":"query","description":"Código ISO 4217 do `valor_atual`. Sem o parâmetro, BRL.","schema":{"type":"string"}}],"responses":{"200":{"description":"O ranking.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RankingRentabilidade"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/benchmarks":{"get":{"operationId":"listBenchmarks","tags":["Investimentos"],"summary":"Os índices que a rentabilidade compara","responses":{"200":{"description":"Os benchmarks, na ordem da tela.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BenchmarkList"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/indicadores":{"get":{"operationId":"getIndicadoresCarteira","tags":["Investimentos"],"summary":"Rentabilidade, volatilidade e Sharpe da carteira","description":"Os indicadores do card da tela, do primeiro dia do mês de `inicio` ao último do de `fim` (até\nontem). A volatilidade é o desvio padrão da variação diária da cota; a anual, ela × √252. O\nSharpe compara com o CDI do mesmo período. Com menos de duas cotas no período, os campos vêm\nnulos.\n","parameters":[{"name":"inicio","in":"query","description":"Um dia do primeiro mês. Sem o parâmetro, 12 meses antes do `fim`; antes de 2018, 2018-01-01.","schema":{"type":"string","format":"date"}},{"name":"fim","in":"query","description":"Um dia do último mês. Sem o parâmetro, ontem.","schema":{"type":"string","format":"date"}},{"name":"ativos","in":"query","description":"Ids dos ativos, separados por vírgula. Não combina com `estrategia`.","schema":{"type":"string"}},{"name":"contas","in":"query","description":"Ids das contas de investimento, separados por vírgula.","schema":{"type":"string"}},{"name":"estrategia","in":"query","description":"O id de uma estratégia (`GET /investimentos/estrategias`).","schema":{"type":"integer"}},{"name":"grupo","in":"query","description":"O id de um grupo da `estrategia`; exige `estrategia`.","schema":{"type":"integer"}},{"name":"moeda","in":"query","description":"Código ISO 4217 dos valores, convertidos. Sem o parâmetro, BRL.","schema":{"type":"string","examples":["BRL"]}}],"responses":{"200":{"description":"Os indicadores.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndicadoresCarteira"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/investimentos/analise":{"get":{"operationId":"getAnaliseCarteira","tags":["Investimentos"],"summary":"A análise da carteira por mês ou por ano","description":"Por período: saldo inicial e final, aportes, retiradas, transferências de custódia,\nproventos, variação, rendimentos, resultado das vendas, custos, IR e apurações; e o total do\nintervalo, com a rentabilidade por cotização e a TIR. Os números são os das telas de análise\nda carteira. Até 60 meses.\n\nA análise roda na hora e pesa pelo número de ativos × meses: numa carteira grande, o período\npedido pode passar do que dá para calcular de uma vez. Aí a resposta é **422**\n`analysis_too_complex`, com `max_meses_sugerido` (o maior período que cabe; nulo quando nem\num mês cabe), antes de qualquer cálculo. Repita com o período sugerido ou recorte por `contas`.\n","parameters":[{"name":"inicio","in":"query","description":"O primeiro mês. Sem o parâmetro, 11 meses antes do `fim`; antes de 2018-01, 2018-01.","schema":{"$ref":"#/components/schemas/Mes"}},{"name":"fim","in":"query","description":"O último mês, até o corrente. Sem o parâmetro, o mês corrente.","schema":{"$ref":"#/components/schemas/Mes"}},{"name":"intervalo","in":"query","description":"Um período por `mes` ou por `ano`.","schema":{"type":"string","enum":["mes","ano"],"default":"mes"}},{"name":"detalhar","in":"query","description":"Com `true`, traz também os `grupos` da estratégia (ou dos tipos de ativo), com os ativos.","schema":{"type":"boolean","default":false}},{"name":"contas","in":"query","description":"Ids das contas de investimento, separados por vírgula.","schema":{"type":"string"}},{"name":"estrategia","in":"query","description":"O id de uma estratégia (`GET /investimentos/estrategias`).","schema":{"type":"integer"}},{"name":"grupo","in":"query","description":"O id de um grupo da `estrategia`; exige `estrategia`.","schema":{"type":"integer"}},{"name":"moeda","in":"query","description":"Código ISO 4217 dos valores, convertidos. Sem o parâmetro, BRL.","schema":{"type":"string","examples":["BRL"]}}],"responses":{"200":{"description":"A análise.","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnaliseCarteira"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"422":{"description":"A análise passa do que dá para calcular de uma vez nesta carteira.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisTooComplex"}}}},"429":{"$ref":"#/components/responses/RateLimited"}}}}},"components":{"securitySchemes":{"accessToken":{"type":"http","scheme":"bearer","description":"Access token (`mda_…`) obtido em `POST /auth/token`. Vale 1 hora."}},"headers":{"WwwAuthenticate":{"description":"Desafio Bearer (RFC 6750 §3).","schema":{"type":"string","examples":["Bearer realm=\"meudinheiro\", error=\"invalid_token\", error_description=\"Access token inválido ou expirado.\""]}},"RateLimitLimit":{"description":"Cota da janela de 1 minuto.","schema":{"type":"integer"}},"RateLimitRemaining":{"description":"Requisições que ainda restam na janela.","schema":{"type":"integer"}},"RateLimitReset":{"description":"Quando a janela vira, em Unix timestamp (segundos).","schema":{"type":"integer"}},"RetryAfter":{"description":"Segundos até poder chamar de novo.","schema":{"type":"integer"}}},"parameters":{"Limit":{"name":"limit","in":"query","description":"Itens por página.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},"Cursor":{"name":"cursor","in":"query","description":"O `next_cursor` da página anterior. Omita na primeira página.","schema":{"type":"string"}},"Inicio":{"name":"inicio","in":"query","required":true,"description":"Primeiro dia do período.","schema":{"type":"string","format":"date"}},"Fim":{"name":"fim","in":"query","required":true,"description":"Último dia do período. Limitado ao horizonte de lançamentos do workspace.","schema":{"type":"string","format":"date"}},"Regime":{"name":"regime","in":"query","description":"`caixa` soma pela data de pagamento; `competencia`, pela data de competência.","schema":{"type":"string","enum":["caixa","competencia"],"default":"caixa"}},"Status":{"name":"status","in":"query","description":"Quais lançamentos entram, separados por vírgula. `pendente`: vencido e não pago; `agendado`: a vencer; `confirmado`: pago ou recebido; `conciliado`: conferido com o extrato. Sem o parâmetro, todos.","schema":{"type":"string","examples":["confirmado,conciliado"]}},"Tipo":{"name":"tipo","in":"query","description":"`despesa`, `receita` e `transferencia`, separados por vírgula.","schema":{"type":"string","examples":["despesa,receita"]}},"Moeda":{"name":"moeda","in":"query","description":"Código ISO 4217. Só entram as contas nessa moeda, e não há conversão. Sem o parâmetro, a moeda padrão do workspace, ou a da conta quando `contas` filtra uma só.","schema":{"type":"string","examples":["BRL"]}},"PendentesNoPresente":{"name":"pendentes_no_presente","in":"query","description":"No regime de caixa, o pendente vencido conta como de hoje (e entra no período que contém hoje). Sem o parâmetro, a configuração do workspace.","schema":{"type":"boolean"}},"Intervalo":{"name":"intervalo","in":"query","description":"Quebra o resultado por `dia`, `mes` ou `ano`. Sem o parâmetro, o período inteiro.","schema":{"type":"string","enum":["dia","mes","ano"]}},"FiltroContas":{"name":"contas","in":"query","description":"Ids de contas, separados por vírgula.","schema":{"type":"string","examples":["12,15"]}},"FiltroCategorias":{"name":"categorias","in":"query","description":"Ids de categorias, separados por vírgula. A categoria inclui as subcategorias dela.","schema":{"type":"string"}},"FiltroCentros":{"name":"centros","in":"query","description":"Ids de centros de custo, separados por vírgula.","schema":{"type":"string"}},"FiltroContatos":{"name":"contatos","in":"query","description":"Ids de contatos, separados por vírgula.","schema":{"type":"string"}},"FiltroProjetos":{"name":"projetos","in":"query","description":"Ids de projetos, separados por vírgula.","schema":{"type":"string"}},"FiltroTags":{"name":"tags","in":"query","description":"Ids de tags, separados por vírgula.","schema":{"type":"string"}},"FiltroFormasPagamento":{"name":"formas_pagamento","in":"query","description":"Ids de formas de pagamento, separados por vírgula.","schema":{"type":"string"}}},"responses":{"BadRequest":{"description":"Parâmetro inválido; o `message` diz qual e o que ele aceita.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Não existe neste workspace.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TokenPair":{"description":"Par de tokens. Não guarde em cache (`Cache-Control: no-store`).","headers":{"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenPair"}}}},"Unauthorized":{"description":"Token ausente, inválido ou expirado. O `WWW-Authenticate` segue a RFC 6750: só `realm` quando não veio credencial, `error=\"invalid_token\"` quando o token foi recusado.","headers":{"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotEnabled":{"description":"O workspace está fora do acesso antecipado ou desativado. Vale também para token já emitido: a credencial não é revogada e volta a funcionar quando o acesso é religado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Error":{"description":"Erro no formato padrão.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"RateLimited":{"description":"Cota da janela esgotada.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"X-RateLimit-Limit":{"$ref":"#/components/headers/RateLimitLimit"},"X-RateLimit-Remaining":{"$ref":"#/components/headers/RateLimitRemaining"},"X-RateLimit-Reset":{"$ref":"#/components/headers/RateLimitReset"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"O papel da credencial não cobre este relatório, ou o workspace está fora do acesso antecipado.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unprocessable":{"description":"A regra do Meu Dinheiro recusa o pedido, como um `fim` além do horizonte de lançamentos.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"TokenPair":{"type":"object","required":["access_token","token_type","expires_in","refresh_token","refresh_expires_in"],"properties":{"access_token":{"type":"string","examples":["mda_3f1c…"]},"token_type":{"type":"string","enum":["Bearer"]},"expires_in":{"type":"integer","description":"Validade do access token, em segundos.","examples":[3600]},"refresh_token":{"type":"string","examples":["mdr_9a0e…"]},"refresh_expires_in":{"type":"integer","description":"Validade do refresh token, em segundos.","examples":[2592000]}}},"Me":{"type":"object","description":"Sempre um de `credential` ou `connection`, nunca os dois.","required":["workspace"],"properties":{"workspace":{"type":"object","required":["id","name"],"properties":{"id":{"type":"integer"},"name":{"type":"string"}}},"credential":{"type":"object","required":["name","api_key","roles","expires_at"],"properties":{"name":{"type":"string"},"api_key":{"type":"string"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/Role"}},"expires_at":{"type":["string","null"],"format":"date-time"}}},"connection":{"type":"object","required":["client","client_id","approved_by","approved_at","scopes"],"properties":{"client":{"type":"string","examples":["Claude Code"]},"client_id":{"type":"string","description":"URL do documento de identificação do cliente (CIMD)."},"approved_by":{"type":"object","required":["name"],"properties":{"name":{"type":"string"}}},"approved_at":{"type":"string","format":"date-time"},"scopes":{"type":"array","items":{"type":"string","enum":["read"]}}}}}},"Role":{"type":"object","required":["id","name","system"],"properties":{"id":{"oneOf":[{"type":"string","enum":["escritor","leitor","operacional","financeiro","gerencial","contabil","comercial"],"description":"papel de sistema"},{"type":"integer","description":"papel customizado do workspace"}]},"name":{"type":"string","examples":["Leitor"]},"system":{"type":"boolean"}}},"TipoCategoria":{"type":"string","enum":["receita","despesa","transferencia"]},"Categoria":{"type":"object","required":["id","nome","nome_completo","tipo","categoria_pai_id","status","sistema"],"properties":{"id":{"type":"integer","examples":[1042]},"nome":{"type":"string","examples":["Delivery"]},"nome_completo":{"type":"string","description":"Com a categoria de cima, separada por `/`.","examples":["Alimentação/Delivery"]},"tipo":{"$ref":"#/components/schemas/TipoCategoria"},"categoria_pai_id":{"type":["integer","null"],"description":"A categoria de cima; nulo na categoria de primeiro nível.","examples":[1001]},"status":{"type":"string","enum":["active","inactive"],"description":"Inativa foi desligada no workspace, mas segue nos lançamentos antigos."},"sistema":{"type":"boolean","description":"Criada pelo Meu Dinheiro e usada por funções do app; não pode ser excluída."}}},"CategoriaCriacao":{"type":"object","required":["nome","tipo"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200,"description":"Sem o nome da categoria de cima."},"tipo":{"type":"string","enum":["receita","despesa"],"description":"Igual ao da categoria de cima, quando houver; não muda depois."},"categoria_pai_id":{"type":["integer","null"],"description":"Categoria de primeiro nível, ativa e do mesmo tipo."}}},"CategoriaAlteracao":{"type":"object","required":["nome","categoria_pai_id","status"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"categoria_pai_id":{"type":["integer","null"],"description":"Nulo leva a categoria ao primeiro nível."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"CategoriaAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"categoria_pai_id":{"type":["integer","null"],"description":"Nulo leva a categoria ao primeiro nível."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"CategoriaPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Categoria"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"TipoConta":{"type":"string","enum":["conta_corrente","dinheiro","cartao_credito","carteira_ativos","poupanca","aplicacao_financeira","imovel","contas_a_receber","contas_a_pagar","emprestimo_concedido","emprestimo_contratado","outros_ativos","outros_ativos_imobilizados","outros_passivos","capital_social"],"description":"O tipo da conta como o app mostra. A carteira de investimentos, que o Meu Dinheiro cria\npara os investimentos, não aparece na API; `contas_a_receber`, `contas_a_pagar`, `outros_ativos_imobilizados` e `capital_social`\nexistem só em workspace de pessoa jurídica.\n"},"FinalidadeConta":{"type":"string","enum":["custos_operacionais","despesas_variaveis","despesas_fixas","lucros","impostos","impostos_sobre_lucro"],"description":"O grupo do passivo no balanço em que a conta a pagar entra."},"StatusConta":{"type":"string","enum":["active","inactive","closed"],"description":"`active` em uso; `inactive` desativada; `closed` encerrada, só histórico."},"Conta":{"type":"object","required":["id","nome","tipo","status","moeda","banco","agencia","numero_conta","finalidade"],"properties":{"id":{"type":"integer","examples":[2051]},"nome":{"type":"string","examples":["Inter PJ"]},"tipo":{"$ref":"#/components/schemas/TipoConta"},"status":{"$ref":"#/components/schemas/StatusConta"},"moeda":{"type":"string","description":"Código ISO 4217.","examples":["BRL"]},"banco":{"type":["object","null"],"description":"A instituição da conta. Nulo quando não há, ou quando o ícone escolhido para a conta é genérico (uma casa, um carro…), e não um banco.","required":["codigo","nome"],"properties":{"codigo":{"type":"string","description":"Código do banco no Meu Dinheiro (o número da compensação, quando existe).","examples":["077"]},"nome":{"type":"string","examples":["Banco Inter S.A."]}}},"agencia":{"type":["string","null"],"examples":["0001"]},"numero_conta":{"type":["string","null"],"examples":["12345-6"]},"finalidade":{"type":["string","null"],"enum":["custos_operacionais","despesas_variaveis","despesas_fixas","lucros","impostos","impostos_sobre_lucro",null],"description":"O grupo do passivo no balanço (`FinalidadeConta`); só em `contas_a_pagar`, nulo nos outros tipos."}}},"ContaCriacao":{"type":"object","required":["nome","tipo"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200,"examples":["Inter PJ"]},"tipo":{"type":"string","enum":["conta_corrente","dinheiro","carteira_ativos","poupanca","imovel","contas_a_receber","emprestimo_concedido","emprestimo_contratado","outros_ativos","outros_ativos_imobilizados","outros_passivos","capital_social","contas_a_pagar"]},"moeda":{"type":"string","description":"Código ISO 4217; sem ele, a moeda padrão do workspace.","examples":["BRL"]},"banco":{"type":"string","maxLength":20,"description":"Código da instituição no catálogo (o `banco.codigo` das contas).","examples":["077"]},"agencia":{"type":"string","maxLength":20,"examples":["0001"]},"numero_conta":{"type":"string","maxLength":20,"examples":["12345-6"]},"saldo_inicial":{"type":"number","description":"Padrão 0.","examples":[1500.5]},"data_saldo_inicial":{"type":"string","format":"date","description":"AAAA-MM-DD; padrão ontem, como no app. Nunca no futuro; poupança e imóvel aceitam no máximo ontem.","examples":["2026-10-01"]},"finalidade":{"$ref":"#/components/schemas/FinalidadeConta"}}},"ContaAlteracao":{"type":"object","required":["nome","moeda","banco","agencia","numero_conta","saldo_inicial","data_saldo_inicial","status"],"additionalProperties":false,"description":"Em `contas_a_pagar` a `finalidade` também é obrigatória; nos outros tipos ela responde 400.","properties":{"nome":{"type":"string","maxLength":200,"examples":["Itaú PJ"]},"moeda":{"type":"string","description":"Código ISO 4217. Conta com operações de investimento não troca de moeda; poupança só existe em BRL.","examples":["BRL"]},"banco":{"type":["string","null"],"maxLength":20,"description":"Código da instituição no catálogo (o `banco.codigo` das contas); nulo tira o banco.","examples":["341"]},"agencia":{"type":["string","null"],"maxLength":20,"examples":["1234"]},"numero_conta":{"type":["string","null"],"maxLength":20,"examples":["99999-0"]},"saldo_inicial":{"type":"number","description":"Em conta de passivo e de patrimônio líquido, gravado negativo.","examples":[400]},"data_saldo_inicial":{"type":"string","format":"date","description":"AAAA-MM-DD. Nunca no futuro; poupança e imóvel aceitam no máximo ontem.","examples":["2026-10-01"]},"status":{"$ref":"#/components/schemas/StatusConta"},"finalidade":{"$ref":"#/components/schemas/FinalidadeConta"}}},"ContaAlteracaoParcial":{"type":"object","additionalProperties":false,"description":"Os campos do `ContaAlteracao`, todos opcionais.","properties":{"nome":{"type":"string","maxLength":200},"moeda":{"type":"string"},"banco":{"type":["string","null"],"maxLength":20},"agencia":{"type":["string","null"],"maxLength":20},"numero_conta":{"type":["string","null"],"maxLength":20},"saldo_inicial":{"type":"number"},"data_saldo_inicial":{"type":"string","format":"date"},"status":{"$ref":"#/components/schemas/StatusConta"},"finalidade":{"$ref":"#/components/schemas/FinalidadeConta"}}},"ContaPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Conta"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"StatusCadastro":{"type":"string","enum":["active","inactive"],"description":"`inactive`: desativado no app, segue nos lançamentos antigos."},"Centro":{"type":"object","required":["id","nome","status"],"properties":{"id":{"type":"integer","examples":[310]},"nome":{"type":"string","examples":["Marketing"]},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"CentroCriacao":{"type":"object","required":["nome"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200}}},"CentroAlteracao":{"type":"object","required":["nome","status"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"CentroAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"CentroPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Centro"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"TipoFormaPagamento":{"type":"string","enum":["normal","cartao_credito"],"description":"`cartao_credito`: o lançamento entra na fatura do cartão."},"FormaPagamento":{"type":"object","required":["id","nome","tipo","status"],"properties":{"id":{"type":"integer","examples":[77]},"nome":{"type":"string","examples":["Boleto"]},"tipo":{"$ref":"#/components/schemas/TipoFormaPagamento"},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"FormaPagamentoCriacao":{"type":"object","required":["nome","tipo"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"tipo":{"$ref":"#/components/schemas/TipoFormaPagamento"}}},"FormaPagamentoAlteracao":{"type":"object","required":["nome","status"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"FormaPagamentoAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"FormaPagamentoPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/FormaPagamento"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"Tag":{"type":"object","required":["id","nome","cor","status"],"properties":{"id":{"type":"integer","examples":[15]},"nome":{"type":"string","examples":["Viagem"]},"cor":{"type":["string","null"],"description":"Hexadecimal `#RRGGBB`; nulo quando a tag não tem cor.","examples":["#3C78D8"]},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"TagCriacao":{"type":"object","required":["nome"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"cor":{"type":["string","null"],"pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`; nulo ou ausente cria a tag sem cor."}}},"TagAlteracao":{"type":"object","required":["nome","cor","status"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"cor":{"type":["string","null"],"pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`; nulo remove a cor."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"TagAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"cor":{"type":["string","null"],"pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`; nulo remove a cor."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"TagPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Tag"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"Projeto":{"type":"object","required":["id","nome","cor","status","inicio","fim","meta_receita","meta_despesa"],"properties":{"id":{"type":"integer","examples":[512]},"nome":{"type":"string","examples":["Obra Centro"]},"cor":{"type":["string","null"],"description":"Hexadecimal `#RRGGBB`.","examples":["#A4C2F4"]},"status":{"$ref":"#/components/schemas/StatusCadastro"},"inicio":{"type":["string","null"],"format":"date","examples":["2026-01-15"]},"fim":{"type":["string","null"],"format":"date","examples":["2026-06-30"]},"meta_receita":{"type":["number","null"],"description":"Receita prevista para o projeto inteiro; nula quando não há meta.","examples":[120000]},"meta_despesa":{"type":["number","null"],"description":"Despesa prevista, positiva. O resultado previsto é `meta_receita - meta_despesa`.","examples":[85000.5]}}},"ProjetoCriacao":{"type":"object","required":["nome"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`; padrão `#F2F2F2`."},"inicio":{"type":["string","null"],"format":"date","description":"Entre 1900 e 2100."},"fim":{"type":["string","null"],"format":"date","description":"Não pode ser antes do início (422)."},"meta_receita":{"type":["number","null"],"minimum":0,"description":"0 ou nulo remove a meta."},"meta_despesa":{"type":["number","null"],"minimum":0,"description":"Positiva; 0 ou nulo remove a meta."}}},"ProjetoAlteracao":{"type":"object","required":["nome","cor","status","inicio","fim","meta_receita","meta_despesa"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`."},"inicio":{"type":["string","null"],"format":"date","description":"Entre 1900 e 2100."},"fim":{"type":["string","null"],"format":"date","description":"Não pode ser antes do início (422)."},"meta_receita":{"type":["number","null"],"minimum":0,"description":"0 ou nulo remove a meta."},"meta_despesa":{"type":["number","null"],"minimum":0,"description":"Positiva; 0 ou nulo remove a meta."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"ProjetoAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"cor":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Hexadecimal `#RRGGBB`."},"inicio":{"type":["string","null"],"format":"date","description":"Entre 1900 e 2100."},"fim":{"type":["string","null"],"format":"date","description":"Não pode ser antes do início (422)."},"meta_receita":{"type":["number","null"],"minimum":0,"description":"0 ou nulo remove a meta."},"meta_despesa":{"type":["number","null"],"minimum":0,"description":"Positiva; 0 ou nulo remove a meta."},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"ProjetoPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Projeto"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"TipoPessoa":{"type":"string","enum":["fisica","juridica"]},"TipoContato":{"type":"string","enum":["cliente","fornecedor","ambos"]},"Contato":{"type":"object","required":["id","nome","razao_social","tipo_pessoa","tipo_contato","status","categoria","documento","email","telefones","endereco"],"properties":{"id":{"type":"integer","examples":[9120]},"nome":{"type":"string","examples":["Mercado Bom Preço"]},"razao_social":{"type":["string","null"],"examples":["Bom Preço Comércio de Alimentos Ltda"]},"tipo_pessoa":{"$ref":"#/components/schemas/TipoPessoa"},"tipo_contato":{"$ref":"#/components/schemas/TipoContato"},"status":{"$ref":"#/components/schemas/StatusCadastro"},"categoria":{"type":["object","null"],"description":"A categoria de contato (o agrupamento que a área define), não a de lançamento.","required":["id","nome"],"properties":{"id":{"type":"integer"},"nome":{"type":"string","examples":["Atacado"]}}},"documento":{"type":["string","null"],"description":"CPF ou CNPJ, só letras e números (o CNPJ pode ter letras desde 2026).","examples":["12ABC34501DE35"]},"email":{"type":["string","null"]},"telefones":{"type":"array","description":"Até três, como foram digitados.","items":{"type":"string"},"examples":[["(11) 3333-4444"]]},"endereco":{"type":["object","null"],"description":"Nulo quando o contato não tem endereço nenhum.","properties":{"logradouro":{"type":["string","null"]},"numero":{"type":["string","null"]},"complemento":{"type":["string","null"]},"bairro":{"type":["string","null"]},"cidade":{"type":["string","null"]},"uf":{"type":["string","null"]},"cep":{"type":["string","null"],"description":"Só os dígitos."}}}}},"ContatoCriacao":{"type":"object","required":["nome","tipo_pessoa","tipo_contato"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"razao_social":{"type":["string","null"],"maxLength":200},"tipo_pessoa":{"$ref":"#/components/schemas/TipoPessoa"},"tipo_contato":{"$ref":"#/components/schemas/TipoContato"},"categoria_id":{"type":["integer","null"],"description":"Categoria de contato do workspace; nulo remove. Inexistente responde 422."},"documento":{"type":["string","null"],"description":"CPF (pessoa física) ou CNPJ (jurídica, aceita o alfanumérico), com ou sem pontuação; validado."},"email":{"type":["string","null"],"maxLength":200},"telefones":{"type":"array","maxItems":3,"items":{"type":"string","maxLength":50}},"endereco":{"type":["object","null"],"additionalProperties":false,"description":"Os campos ausentes ficam vazios; nulo apaga o endereço.","properties":{"logradouro":{"type":["string","null"],"maxLength":300},"numero":{"type":["string","null"],"maxLength":10},"complemento":{"type":["string","null"],"maxLength":100},"bairro":{"type":["string","null"],"maxLength":100},"cidade":{"type":["string","null"],"maxLength":100},"uf":{"type":["string","null"],"maxLength":2,"description":"Sigla de duas letras."},"cep":{"type":["string","null"],"maxLength":9,"description":"Oito dígitos, com ou sem hífen."}}}}},"ContatoAlteracao":{"type":"object","required":["nome","razao_social","tipo_pessoa","tipo_contato","status","categoria_id","documento","email","telefones","endereco"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"razao_social":{"type":["string","null"],"maxLength":200},"tipo_pessoa":{"$ref":"#/components/schemas/TipoPessoa"},"tipo_contato":{"$ref":"#/components/schemas/TipoContato"},"categoria_id":{"type":["integer","null"],"description":"Categoria de contato do workspace; nulo remove. Inexistente responde 422."},"documento":{"type":["string","null"],"description":"CPF (pessoa física) ou CNPJ (jurídica, aceita o alfanumérico), com ou sem pontuação; validado."},"email":{"type":["string","null"],"maxLength":200},"telefones":{"type":"array","maxItems":3,"items":{"type":"string","maxLength":50}},"endereco":{"type":["object","null"],"additionalProperties":false,"description":"Os campos ausentes ficam vazios; nulo apaga o endereço.","properties":{"logradouro":{"type":["string","null"],"maxLength":300},"numero":{"type":["string","null"],"maxLength":10},"complemento":{"type":["string","null"],"maxLength":100},"bairro":{"type":["string","null"],"maxLength":100},"cidade":{"type":["string","null"],"maxLength":100},"uf":{"type":["string","null"],"maxLength":2,"description":"Sigla de duas letras."},"cep":{"type":["string","null"],"maxLength":9,"description":"Oito dígitos, com ou sem hífen."}}},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"ContatoAlteracaoParcial":{"type":"object","additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200},"razao_social":{"type":["string","null"],"maxLength":200},"tipo_pessoa":{"$ref":"#/components/schemas/TipoPessoa"},"tipo_contato":{"$ref":"#/components/schemas/TipoContato"},"categoria_id":{"type":["integer","null"],"description":"Categoria de contato do workspace; nulo remove. Inexistente responde 422."},"documento":{"type":["string","null"],"description":"CPF (pessoa física) ou CNPJ (jurídica, aceita o alfanumérico), com ou sem pontuação; validado."},"email":{"type":["string","null"],"maxLength":200},"telefones":{"type":"array","maxItems":3,"items":{"type":"string","maxLength":50}},"endereco":{"type":["object","null"],"additionalProperties":false,"description":"Os campos ausentes ficam vazios; nulo apaga o endereço.","properties":{"logradouro":{"type":["string","null"],"maxLength":300},"numero":{"type":["string","null"],"maxLength":10},"complemento":{"type":["string","null"],"maxLength":100},"bairro":{"type":["string","null"],"maxLength":100},"cidade":{"type":["string","null"],"maxLength":100},"uf":{"type":["string","null"],"maxLength":2,"description":"Sigla de duas letras."},"cep":{"type":["string","null"],"maxLength":9,"description":"Oito dígitos, com ou sem hífen."}}},"status":{"$ref":"#/components/schemas/StatusCadastro"}}},"ContatoPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Contato"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","enum":["bad_request","unauthorized","forbidden","not_found","method_not_allowed","unsupported_media_type","unprocessable","rate_limited","plan_required","analysis_too_complex","internal_error"]},"message":{"type":"string"}}}}},"ValorRelatorio":{"type":"object","required":["projetado","confirmado"],"properties":{"projetado":{"type":"number","description":"Tudo o que o filtro alcança, inclusive o não pago ou recebido."},"confirmado":{"type":"number","description":"Só o realizado."}}},"CadastroRef":{"type":["object","null"],"description":"O cadastro da linha; nulo para \"sem\" (sem centro, sem categoria…).","required":["id","nome"],"properties":{"id":{"type":"integer"},"nome":{"type":["string","null"]}}},"TipoLinhaRelatorio":{"type":"string","enum":["receita","despesa","transferencia_entrada","transferencia_saida"]},"TotaisPorTipo":{"type":"object","required":["receitas","despesas","transferencias"],"properties":{"receitas":{"$ref":"#/components/schemas/ValorRelatorio"},"despesas":{"$ref":"#/components/schemas/ValorRelatorio"},"transferencias":{"$ref":"#/components/schemas/ValorRelatorio"}}},"TotaisPorCategorias":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["categoria","categoria_pai","tipo","projetado","confirmado"],"properties":{"categoria":{"$ref":"#/components/schemas/CadastroRef"},"categoria_pai":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"TotaisPorCentros":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["centro","tipo","projetado","confirmado"],"properties":{"centro":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"TotaisPorContatos":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["contato","tipo","projetado","confirmado"],"properties":{"contato":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"TotaisPorProjetos":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["projeto","tipo","projetado","confirmado"],"properties":{"projeto":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"TotaisPorTags":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["tag","tipo","projetado","confirmado"],"properties":{"tag":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"TotaisPorContas":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"type":"object","required":["conta","tipo","projetado","confirmado"],"properties":{"conta":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoLinhaRelatorio"},"periodo":{"type":"string","description":"Só com `intervalo`. `AAAA-MM-DD`, `AAAA-MM` ou `AAAA`."},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"totais":{"$ref":"#/components/schemas/TotaisPorTipo"}}},"ResumoResultado":{"type":"object","required":["receitas","despesas","resultado","transferencias_entrada","transferencias_saida"],"properties":{"receitas":{"$ref":"#/components/schemas/ValorRelatorio"},"despesas":{"$ref":"#/components/schemas/ValorRelatorio"},"resultado":{"$ref":"#/components/schemas/ValorRelatorio"},"transferencias_entrada":{"$ref":"#/components/schemas/ValorRelatorio"},"transferencias_saida":{"$ref":"#/components/schemas/ValorRelatorio"}}},"Resultado":{"type":"object","required":["moeda","total"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"total":{"$ref":"#/components/schemas/ResumoResultado"},"periodos":{"type":"array","description":"Só com `intervalo`, em ordem.","items":{"allOf":[{"type":"object","required":["periodo"],"properties":{"periodo":{"type":"string"}}},{"$ref":"#/components/schemas/ResumoResultado"}]}}}},"Saldos":{"type":"object","required":["moeda","data_saldo","data","total"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data_saldo":{"type":"string","format":"date"},"data":{"type":"array","items":{"type":"object","required":["conta","projetado","confirmado"],"properties":{"conta":{"$ref":"#/components/schemas/CadastroRef"},"projetado":{"type":"number"},"confirmado":{"type":"number"}}}},"total":{"$ref":"#/components/schemas/ValorRelatorio"}}},"PeriodoFluxoCaixa":{"type":"object","required":["periodo","entradas","saidas","resultado","saldo"],"properties":{"periodo":{"type":"string","description":"`AAAA-MM-DD`, `AAAA-MM` ou `AAAA`, conforme o `intervalo`."},"entradas":{"type":"number"},"saidas":{"type":"number","description":"Negativo."},"resultado":{"type":"number"},"saldo":{"type":"number","description":"Saldo ao fim do período."}}},"FluxoCaixa":{"type":"object","required":["moeda","saldo_inicial","saldo_final","periodos","contas"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"saldo_inicial":{"type":"number","description":"Saldo no dia anterior ao `inicio`."},"saldo_final":{"type":"number"},"periodos":{"type":"array","description":"Todos os períodos da janela, inclusive os sem movimento.","items":{"$ref":"#/components/schemas/PeriodoFluxoCaixa"}},"contas":{"type":"array","items":{"type":"object","required":["conta","saldo_inicial","saldo_final","periodos"],"properties":{"conta":{"$ref":"#/components/schemas/CadastroRef"},"saldo_inicial":{"type":"number"},"saldo_final":{"type":"number"},"periodos":{"type":"array","items":{"$ref":"#/components/schemas/PeriodoFluxoCaixa"}}}}}}},"ValoresMeta":{"type":"object","required":["meta","projetado","confirmado","a_realizar_projetado","a_realizar_confirmado","excedente_projetado","excedente_confirmado"],"properties":{"periodo":{"type":"string","description":"Só com `intervalo=mes`, `AAAA-MM`."},"meta":{"type":"number","description":"Com o sinal do tipo (despesa negativa)."},"projetado":{"type":"number"},"confirmado":{"type":"number"},"a_realizar_projetado":{"type":"number","description":"Quanto falta para a meta, sobre o projetado. Sempre positivo ou zero."},"a_realizar_confirmado":{"type":"number"},"excedente_projetado":{"type":"number","description":"Quanto passou da meta, sobre o projetado. Sempre positivo ou zero."},"excedente_confirmado":{"type":"number"}}},"TipoMeta":{"type":"string","enum":["receita","despesa","transferencia"]},"TotaisMetas":{"type":"array","description":"Um total por tipo.","items":{"allOf":[{"type":"object","required":["tipo"],"properties":{"tipo":{"$ref":"#/components/schemas/TipoMeta"}}},{"$ref":"#/components/schemas/ValoresMeta"}]}},"MetasCategorias":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"allOf":[{"type":"object","required":["categoria","categoria_pai","lancado_na_categoria_pai","tipo"],"properties":{"categoria":{"$ref":"#/components/schemas/CadastroRef"},"categoria_pai":{"$ref":"#/components/schemas/CadastroRef"},"lancado_na_categoria_pai":{"type":"boolean","description":"O lançado direto na categoria de cima, fora das subcategorias."},"tipo":{"$ref":"#/components/schemas/TipoMeta"}}},{"$ref":"#/components/schemas/ValoresMeta"}]}},"totais":{"$ref":"#/components/schemas/TotaisMetas"}}},"MetasCentros":{"type":"object","required":["moeda","data","totais"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"data":{"type":"array","items":{"allOf":[{"type":"object","required":["centro","tipo"],"properties":{"centro":{"$ref":"#/components/schemas/CadastroRef"},"tipo":{"$ref":"#/components/schemas/TipoMeta"}}},{"$ref":"#/components/schemas/ValoresMeta"}]}},"totais":{"$ref":"#/components/schemas/TotaisMetas"}}},"ValoresDemonstrativo":{"type":"object","required":["valores","analise_vertical","analise_horizontal","media","total"],"properties":{"valores":{"type":["array","null"],"description":"Um por período, na ordem de `periodos`. Nulo nas linhas de título.","items":{"type":"number"}},"analise_vertical":{"type":["array","null"],"description":"Fração da linha base (1 = 100%). Nulo quando a linha não tem a análise.","items":{"type":"number"}},"analise_horizontal":{"type":["array","null"],"description":"Variação sobre o período anterior (0,25 = +25%); nula no primeiro.","items":{"type":["number","null"]}},"media":{"type":["number","null"]},"total":{"type":["number","null"]}}},"Demonstrativo":{"type":"object","required":["moeda","periodos","linhas"],"properties":{"moeda":{"type":"string","examples":["BRL"]},"periodos":{"type":"array","items":{"type":"object","required":["inicio","fim"],"properties":{"inicio":{"type":"string","format":"date"},"fim":{"type":"string","format":"date"}}}},"linhas":{"type":"array","items":{"allOf":[{"type":"object","required":["id","descricao","tipo","formato","itens"],"properties":{"id":{"type":"integer"},"descricao":{"type":"string"},"tipo":{"type":"string","enum":["categorias","resultado","titulo"],"description":"`categorias` soma lançamentos; `resultado` é calculado sobre outras linhas; `titulo` só separa seções."},"formato":{"type":["string","null"],"enum":["moeda","percentual"]},"itens":{"type":"array","description":"As categorias que compõem a linha.","items":{"allOf":[{"type":"object","required":["id","descricao"],"properties":{"id":{"description":"O id da categoria; texto nas linhas de resíduo de metas.","oneOf":[{"type":"integer"},{"type":"string"}]},"descricao":{"type":"string"}}},{"$ref":"#/components/schemas/ValoresDemonstrativo"}]}}}},{"$ref":"#/components/schemas/ValoresDemonstrativo"}]}}}},"Mes":{"type":"string","pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"Mês no formato `AAAA-MM`.","examples":["2026-08"]},"Plastico":{"type":"object","required":["id","nome","tipo","status"],"properties":{"id":{"type":"integer"},"nome":{"type":"string","examples":["Ana"]},"tipo":{"type":"string","enum":["titular","adicional"]},"status":{"type":"string","enum":["active","inactive"]}}},"CartaoCriacao":{"type":"object","required":["nome","proximo_vencimento","dias_fechamento","conta_pagamento_id","plasticos"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200,"examples":["Nubank"]},"moeda":{"type":"string","description":"Código ISO 4217; sem ele, a moeda padrão do workspace.","examples":["BRL"]},"banco":{"type":"string","maxLength":20,"description":"Código da instituição no catálogo (o `banco.codigo` das contas).","examples":["nubank"]},"proximo_vencimento":{"type":"string","format":"date","description":"O vencimento da fatura aberta, AAAA-MM-DD.","examples":["2026-10-20"]},"dias_fechamento":{"type":"integer","minimum":1,"maximum":31,"description":"Quantos dias antes do vencimento a fatura fecha.","examples":[7]},"tipo_limite":{"type":"string","enum":["total","mensal","indefinido"],"description":"`total` (padrão na criação): o limite é do cartão; `mensal`: vale por fatura; `indefinido`: sem limite."},"limite":{"type":"number","minimum":0,"description":"Obrigatório na criação, menos no limite indefinido, em que é ignorado.","examples":[5000]},"conta_pagamento_id":{"type":"integer","description":"A conta de onde a fatura é paga, na moeda do cartão."},"plasticos":{"type":"array","minItems":1,"description":"Um titular e os adicionais.","items":{"type":"object","required":["nome","tipo"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":50},"tipo":{"type":"string","enum":["titular","adicional"]}}}},"valor_fatura_anterior":{"type":"number","description":"O valor da fatura do mês anterior ao vencimento, negativo quando devedor. Na criação (padrão 0) vira a primeira fatura, já fechada; na alteração, ajusta essa fatura enquanto não há outra fechada.","examples":[-300]}}},"CartaoAlteracao":{"type":"object","required":["nome","moeda","banco","proximo_vencimento","dias_fechamento","tipo_limite","limite","conta_pagamento_id","plasticos","status"],"additionalProperties":false,"properties":{"nome":{"type":"string","maxLength":200,"examples":["Nubank"]},"moeda":{"type":"string","description":"Código ISO 4217; sem ele, a moeda padrão do workspace.","examples":["BRL"]},"banco":{"type":["string","null"],"maxLength":20,"description":"Código da instituição no catálogo (o `banco.codigo` das contas).","examples":["nubank"]},"proximo_vencimento":{"type":"string","format":"date","description":"O vencimento da fatura aberta, AAAA-MM-DD.","examples":["2026-10-20"]},"dias_fechamento":{"type":"integer","minimum":1,"maximum":31,"description":"Quantos dias antes do vencimento a fatura fecha.","examples":[7]},"tipo_limite":{"type":"string","enum":["total","mensal","indefinido"],"description":"`total` (padrão na criação): o limite é do cartão; `mensal`: vale por fatura; `indefinido`: sem limite."},"limite":{"type":"number","minimum":0,"description":"Obrigatório na criação, menos no limite indefinido, em que é ignorado.","examples":[5000]},"conta_pagamento_id":{"type":"integer","description":"A conta de onde a fatura é paga, na moeda do cartão."},"plasticos":{"type":"array","description":"Com `id`, o plástico existente (só `nome` e `status`; o titular não se inativa); sem `id`, um novo (`nome` e `tipo`). Plástico fora da lista fica como está.","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"nome":{"type":"string","maxLength":50},"tipo":{"type":"string","enum":["titular","adicional"]},"status":{"type":"string","enum":["active","inactive"]}}}},"valor_fatura_anterior":{"type":"number","description":"O valor da fatura do mês anterior ao vencimento, negativo quando devedor. Na criação (padrão 0) vira a primeira fatura, já fechada; na alteração, ajusta essa fatura enquanto não há outra fechada.","examples":[-300]},"status":{"$ref":"#/components/schemas/StatusConta"}}},"CartaoAlteracaoParcial":{"type":"object","additionalProperties":false,"description":"Os campos do `CartaoAlteracao`, todos opcionais.","properties":{"nome":{"type":"string","maxLength":200,"examples":["Nubank"]},"moeda":{"type":"string","description":"Código ISO 4217; sem ele, a moeda padrão do workspace.","examples":["BRL"]},"banco":{"type":["string","null"],"maxLength":20,"description":"Código da instituição no catálogo (o `banco.codigo` das contas).","examples":["nubank"]},"proximo_vencimento":{"type":"string","format":"date","description":"O vencimento da fatura aberta, AAAA-MM-DD.","examples":["2026-10-20"]},"dias_fechamento":{"type":"integer","minimum":1,"maximum":31,"description":"Quantos dias antes do vencimento a fatura fecha.","examples":[7]},"tipo_limite":{"type":"string","enum":["total","mensal","indefinido"],"description":"`total` (padrão na criação): o limite é do cartão; `mensal`: vale por fatura; `indefinido`: sem limite."},"limite":{"type":"number","minimum":0,"description":"Obrigatório na criação, menos no limite indefinido, em que é ignorado.","examples":[5000]},"conta_pagamento_id":{"type":"integer","description":"A conta de onde a fatura é paga, na moeda do cartão."},"plasticos":{"type":"array","description":"Com `id`, o plástico existente (só `nome` e `status`; o titular não se inativa); sem `id`, um novo (`nome` e `tipo`). Plástico fora da lista fica como está.","items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"integer"},"nome":{"type":"string","maxLength":50},"tipo":{"type":"string","enum":["titular","adicional"]},"status":{"type":"string","enum":["active","inactive"]}}}},"valor_fatura_anterior":{"type":"number","description":"O valor da fatura do mês anterior ao vencimento, negativo quando devedor. Na criação (padrão 0) vira a primeira fatura, já fechada; na alteração, ajusta essa fatura enquanto não há outra fechada.","examples":[-300]},"status":{"$ref":"#/components/schemas/StatusConta"}}},"Cartao":{"type":"object","required":["id","nome","status","moeda","banco","tipo_limite","limite","limite_disponivel","dia_vencimento","dias_fechamento","proximo_vencimento","proximo_fechamento","conta_pagamento","plasticos"],"properties":{"id":{"type":"integer","examples":[2052]},"nome":{"type":"string","examples":["Visa Platinum"]},"status":{"$ref":"#/components/schemas/StatusConta"},"moeda":{"type":"string","description":"Código ISO 4217; as faturas são nesta moeda.","examples":["BRL"]},"banco":{"type":["object","null"],"required":["codigo","nome"],"properties":{"codigo":{"type":"string"},"nome":{"type":"string"}}},"tipo_limite":{"type":"string","enum":["total","mensal","indefinido"],"description":"`total` o limite é do cartão; `mensal` vale por fatura; `indefinido` sem limite."},"limite":{"type":["number","null"],"description":"Nulo no limite indefinido.","examples":[5000]},"limite_disponivel":{"type":["number","null"],"description":"O que sobra do limite com a fatura aberta e, no limite total, com as compras das faturas futuras que não são fixas. Nulo no limite indefinido.","examples":[3120.5]},"dia_vencimento":{"type":"integer","examples":[5]},"dias_fechamento":{"type":"integer","description":"Quantos dias antes do vencimento a fatura fecha.","examples":[7]},"proximo_vencimento":{"type":"string","format":"date","description":"O vencimento da fatura aberta."},"proximo_fechamento":{"type":"string","format":"date"},"conta_pagamento":{"allOf":[{"$ref":"#/components/schemas/CadastroRef"}],"description":"A conta de onde a fatura é paga; nula quando oculta para a credencial."},"plasticos":{"type":"array","description":"Titular primeiro.","items":{"$ref":"#/components/schemas/Plastico"}}}},"CartaoPage":{"type":"object","required":["data","next_cursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Cartao"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."}}},"StatusFatura":{"type":"string","enum":["fechada","aberta","futura"]},"ResumoFatura":{"type":"object","required":["mes","vencimento","fechamento","status","valor","pagamentos","pagamentos_agendados"],"properties":{"mes":{"$ref":"#/components/schemas/Mes"},"vencimento":{"type":"string","format":"date"},"fechamento":{"type":"string","format":"date"},"status":{"$ref":"#/components/schemas/StatusFatura"},"valor":{"type":"number","description":"O saldo da fatura; negativo é o que se deve. Na fechada, o valor do fechamento; na aberta, o saldo da anterior mais os lançamentos, sem os pagamentos agendados.","examples":[-1840.32]},"pagamentos":{"type":"number","description":"Pagamentos confirmados lançados nesta fatura (o pagamento de uma fatura entra na seguinte)."},"pagamentos_agendados":{"type":"number"}}},"HistoricoFaturas":{"type":"object","required":["cartao","moeda","inicio","fim","data"],"properties":{"cartao":{"$ref":"#/components/schemas/CadastroRef"},"moeda":{"type":"string"},"inicio":{"$ref":"#/components/schemas/Mes"},"fim":{"$ref":"#/components/schemas/Mes"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ResumoFatura"}}}},"FaturasDoMes":{"type":"object","required":["mes","data"],"properties":{"mes":{"type":["string","null"],"pattern":"^\\d{4}-(0[1-9]|1[0-2])$","description":"O mês pedido, `AAAA-MM`; nulo quando cada linha é a fatura aberta do cartão."},"data":{"type":"array","items":{"allOf":[{"type":"object","required":["cartao","moeda"],"properties":{"cartao":{"$ref":"#/components/schemas/CadastroRef"},"moeda":{"type":"string"}}},{"$ref":"#/components/schemas/ResumoFatura"}]}}}},"LancamentoFatura":{"type":"object","required":["id","data","vencimento","descricao","valor","tipo","estorno","parcela","conciliado","projetado","categoria","centro","contato","projeto","plastico","grupo_id"],"properties":{"id":{"type":["integer","null"],"description":"Nulo no lançamento projetado."},"data":{"type":"string","format":"date","description":"A data da compra."},"vencimento":{"type":"string","format":"date","description":"O vencimento da fatura em que ele cai."},"descricao":{"type":"string"},"valor":{"type":"number","examples":[-89.9]},"tipo":{"type":"string","enum":["despesa","receita","transferencia","pagamento"]},"estorno":{"type":"boolean","description":"Despesa com valor positivo (ou receita negativa)."},"parcela":{"type":["string","null"],"description":"`3/10` no parcelado, `fixa` no recorrente."},"conciliado":{"type":"boolean"},"projetado":{"type":"boolean","description":"Ocorrência de recorrência ou parcelamento que o app ainda não gravou."},"categoria":{"$ref":"#/components/schemas/CadastroRef"},"centro":{"$ref":"#/components/schemas/CadastroRef"},"contato":{"$ref":"#/components/schemas/CadastroRef"},"projeto":{"$ref":"#/components/schemas/CadastroRef"},"plastico":{"$ref":"#/components/schemas/CadastroRef"},"grupo_id":{"type":["integer","null"],"description":"As linhas de um mesmo lançamento detalhado têm o mesmo grupo."}}},"Fatura":{"allOf":[{"$ref":"#/components/schemas/ResumoFatura"},{"type":"object","required":["cartao","moeda","valor_fatura_anterior","despesas","receitas","transferencias","total_lancamentos","total_fixo","conciliado","nao_conciliado","limite_disponivel","lancamentos"],"properties":{"cartao":{"$ref":"#/components/schemas/CadastroRef"},"moeda":{"type":"string"},"valor_fatura_anterior":{"type":["number","null"],"description":"O valor da fatura do mês anterior; nulo na futura."},"despesas":{"type":"number","description":"Compras, com os estornos de receita."},"receitas":{"type":"number","description":"Créditos, com os estornos de despesa."},"transferencias":{"type":"number","description":"Transferências, sem os pagamentos recebidos."},"total_lancamentos":{"type":"number","description":"`despesas` + `receitas` + `transferencias`."},"total_fixo":{"type":"number","description":"Despesas recorrentes (fixas)."},"conciliado":{"type":"number"},"nao_conciliado":{"type":"number"},"limite_disponivel":{"type":["number","null"],"description":"Só na fatura aberta; o mesmo do cartão."},"lancamentos":{"type":"array","items":{"$ref":"#/components/schemas/LancamentoFatura"}}}}]},"ParcelasFuturas":{"type":"object","required":["cartao","moeda","total","data"],"properties":{"cartao":{"$ref":"#/components/schemas/CadastroRef"},"moeda":{"type":"string"},"total":{"type":"number"},"data":{"type":"array","description":"Por vencimento e data da compra.","items":{"$ref":"#/components/schemas/LancamentoFatura"}}}},"PosicaoCarteira":{"type":"object","required":["tipo","ativo_id","conta_id","codigo","nome","tipo_ativo","secao","quantidade","preco_medio","cotacao","valor_investido","valor_atual","resultado","variacao","participacao"],"properties":{"tipo":{"type":"string","enum":["ativo","conta"],"description":"`conta` é a conta de investimento que não é carteira de ativos (CDB, poupança…), pelo saldo dela."},"ativo_id":{"type":["integer","null"]},"conta_id":{"type":"integer"},"codigo":{"type":["string","null"],"description":"O código de negociação; nulo na conta."},"nome":{"type":"string"},"tipo_ativo":{"type":["string","null"],"enum":["acao","opcao","fundo","commodity","moeda","titulo_privado","titulo_publico","mercado_futuro","fundo_bovespa","outros","etf","fii","fiagro","fiinfra","fip","imovel","cdb","rdb","lca","lci","lc","debenture","criptomoeda","previdencia","direito_subscricao","recibo_subscricao","termo","bdr","stock","etf_us","etf_renda_fixa","lig","cra","cri","lf","unit","poupanca","titulo_capitalizacao",null]},"secao":{"type":"string","enum":["comprada","vendida","direitos_subscricao","recibos_subscricao","termo","mercado_futuro"],"description":"A aba da tela da carteira."},"quantidade":{"type":["number","null"],"description":"Nula onde a tela não mostra quantidade (títulos indexados, contas)."},"preco_medio":{"type":["number","null"],"description":"Com custos."},"cotacao":{"type":["object","null"],"required":["valor","data"],"properties":{"valor":{"type":"number"},"data":{"type":"string","format":"date"}}},"valor_investido":{"type":"number"},"valor_atual":{"type":"number"},"resultado":{"type":"number","description":"`valor_atual` − `valor_investido`."},"variacao":{"type":"number","description":"`valor_atual` / `valor_investido` − 1, em fração (0,05 = 5%)."},"participacao":{"type":["number","null"],"description":"A fração do valor atual da carteira comprada; nula fora da `secao` `comprada`."},"grupos":{"type":"array","description":"Só com `estrategia`. A fração é a parte da posição que a estratégia põe no grupo.","items":{"type":"object","required":["grupo_id","nome","fracao"],"properties":{"grupo_id":{"type":"integer"},"nome":{"type":"string"},"fracao":{"type":"number"}}}}}},"CarteiraInvestimentosPage":{"type":"object","required":["data","next_cursor","moeda","atualizado_ate"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PosicaoCarteira"}},"next_cursor":{"type":["string","null"],"description":"Cursor da próxima página; nulo na última."},"moeda":{"type":"string","description":"A moeda dos valores (ISO 4217)."},"atualizado_ate":{"type":["string","null"],"format":"date","description":"O último dia da série de rentabilidade; nulo se a carteira nunca foi processada. Se não for ontem, abra Investimentos no Meu Dinheiro para atualizar."}}},"Estrategia":{"type":"object","required":["id","nome","grupos"],"properties":{"id":{"type":"integer"},"nome":{"type":"string"},"grupos":{"type":"array","items":{"type":"object","required":["id","nome","alocacao","alocacao_valor"],"properties":{"id":{"type":"integer"},"nome":{"type":"string"},"alocacao":{"type":["number","null"],"description":"A alocação ideal em fração da carteira."},"alocacao_valor":{"type":["number","null"],"description":"A alocação ideal em valor, quando o grupo é definido assim."}}}}}},"EstrategiaList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Estrategia"}}}},"SerieRentabilidade":{"type":"object","required":["inicio","fim","atualizado_ate","intervalo","moeda","rentabilidade_periodo","benchmarks_periodo","pontos"],"properties":{"inicio":{"type":"string","format":"date","description":"O início usado, depois do piso de 2018-01-01."},"fim":{"type":"string","format":"date"},"atualizado_ate":{"type":["string","null"],"format":"date","description":"O último dia calculado; nulo se a carteira nunca foi processada. Se não for ontem, abra Investimentos no Meu Dinheiro para atualizar."},"intervalo":{"type":"string","enum":["dia","mes","ano"]},"moeda":{"type":"string"},"rentabilidade_periodo":{"type":["number","null"],"description":"A do último ponto, em fração; nula sem cota no período."},"benchmarks_periodo":{"type":"object","description":"Cada benchmark pedido, no mesmo período, em fração.","additionalProperties":{"type":["number","null"]}},"pontos":{"type":"array","items":{"type":"object","required":["data","rentabilidade_acumulada","benchmarks"],"properties":{"data":{"type":"string","format":"date"},"rentabilidade_acumulada":{"type":"number","description":"Desde o dia anterior ao `inicio`, em fração."},"benchmarks":{"type":"object","additionalProperties":{"type":["number","null"]}},"saldo":{"type":["number","null"],"description":"Só com `detalhar`. O saldo da carteira no dia do ponto."},"aportes":{"type":"number","description":"Só com `detalhar`. Desde o ponto anterior."},"retiradas":{"type":"number","description":"Só com `detalhar`. Desde o ponto anterior."}}}},"series":{"type":"array","description":"Só com `por_ativo`. Uma série por ativo ou por conta, no mesmo período.","items":{"type":"object","required":["tipo","ativo_id","conta_id","codigo","nome","rentabilidade_periodo","benchmarks_periodo","pontos"],"properties":{"tipo":{"type":"string","enum":["ativo","conta"]},"ativo_id":{"type":["integer","null"]},"conta_id":{"type":["integer","null"],"description":"A conta separada; nulo na série do ativo, que soma as contas."},"codigo":{"type":["string","null"]},"nome":{"type":["string","null"]},"rentabilidade_periodo":{"type":["number","null"]},"benchmarks_periodo":{"type":"object","description":"Cada benchmark até o último ponto desta série, em fração.","additionalProperties":{"type":["number","null"]}},"pontos":{"type":"array","items":{"type":"object","required":["data","rentabilidade_acumulada","benchmarks"],"properties":{"data":{"type":"string","format":"date"},"rentabilidade_acumulada":{"type":"number"},"benchmarks":{"type":"object","additionalProperties":{"type":["number","null"]}}}}}}}}}},"RankingRentabilidade":{"type":"object","required":["inicio","atualizado_ate","moeda","data"],"properties":{"inicio":{"type":"string","format":"date"},"atualizado_ate":{"type":["string","null"],"format":"date","description":"O último dia calculado. Se não for ontem, abra Investimentos no Meu Dinheiro para atualizar."},"moeda":{"type":"string"},"data":{"type":"array","items":{"type":"object","required":["tipo","ativo_id","conta_id","codigo","nome","rentabilidade","valor_atual","participacao"],"properties":{"tipo":{"type":"string","enum":["ativo","conta"]},"ativo_id":{"type":["integer","null"]},"conta_id":{"type":"integer"},"codigo":{"type":["string","null"]},"nome":{"type":["string","null"]},"rentabilidade":{"type":"number","description":"Em fração."},"valor_atual":{"type":["number","null"]},"participacao":{"type":["number","null"]}}}}}},"BenchmarkList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"type":"object","required":["id","nome"],"properties":{"id":{"type":"string","enum":["cdi","ipca","igpm","poupanca","selic","ibovespa","smll","ifix","sp500","msci_world","usd"]},"nome":{"type":"string"}}}}}},"IndicadoresCarteira":{"type":"object","required":["inicio","fim","atualizado_ate","moeda","rentabilidade","volatilidade_diaria","volatilidade_anual","sharpe"],"properties":{"inicio":{"type":"string","format":"date"},"fim":{"type":"string","format":"date"},"atualizado_ate":{"type":["string","null"],"format":"date","description":"O último dia calculado. Se não for ontem, abra Investimentos no Meu Dinheiro para atualizar."},"moeda":{"type":"string"},"rentabilidade":{"type":["number","null"],"description":"Em fração."},"volatilidade_diaria":{"type":["number","null"]},"volatilidade_anual":{"type":["number","null"]},"sharpe":{"type":["number","null"]}}},"ValoresAnalise":{"type":"object","required":["saldo_inicial","saldo_final","aportes","retiradas","transferencias_entrada","transferencias_saida","proventos","movimentacao","variacao","rendimentos","resultado","total","ir","custos","apuracoes"],"properties":{"saldo_inicial":{"type":"number"},"saldo_final":{"type":"number"},"aportes":{"type":"number"},"retiradas":{"type":"number"},"transferencias_entrada":{"type":"number","description":"Transferência de custódia que chega; fica fora dos aportes."},"transferencias_saida":{"type":"number"},"proventos":{"type":"number"},"movimentacao":{"type":"number","description":"`aportes` − `retiradas` − `proventos`."},"variacao":{"type":"number","description":"O que o saldo mudou além das movimentações."},"rendimentos":{"type":"number","description":"Proventos líquidos e o que é lançado direto em conta."},"resultado":{"type":"number","description":"Ganho ou perda nas vendas, com custos."},"total":{"type":"number"},"ir":{"type":"number"},"custos":{"type":"number"},"apuracoes":{"type":"number","description":"O IR das apurações mensais."}}},"AnaliseCarteira":{"type":"object","required":["inicio","fim","intervalo","atualizado_ate","moeda","total","periodos"],"properties":{"inicio":{"$ref":"#/components/schemas/Mes"},"fim":{"$ref":"#/components/schemas/Mes"},"intervalo":{"type":"string","enum":["mes","ano"]},"atualizado_ate":{"type":["string","null"],"format":"date","description":"O último dia calculado. Se não for ontem, abra Investimentos no Meu Dinheiro para atualizar."},"moeda":{"type":"string"},"total":{"allOf":[{"$ref":"#/components/schemas/ValoresAnalise"},{"type":"object","required":["rentabilidade","tir"],"properties":{"rentabilidade":{"type":["number","null"],"description":"Por cotização, no intervalo inteiro, em fração."},"tir":{"type":["number","null"],"description":"A TIR do intervalo; nula quando não converge."}}}]},"periodos":{"type":"array","items":{"allOf":[{"type":"object","required":["periodo","variacao_percentual"],"properties":{"periodo":{"type":"string","description":"AAAA-MM, ou AAAA no intervalo anual."},"variacao_percentual":{"type":["number","null"]}}},{"$ref":"#/components/schemas/ValoresAnalise"}]}},"grupos":{"type":"array","description":"Só com `detalhar`.","items":{"allOf":[{"type":"object","required":["nome","rentabilidade","ativos"],"properties":{"nome":{"type":"string"},"rentabilidade":{"type":["number","null"]},"ativos":{"type":"array","items":{"allOf":[{"type":"object","required":["tipo","ativo_id","conta_id","codigo","nome","fracao_no_grupo","rentabilidade"],"properties":{"tipo":{"type":"string","enum":["ativo","conta"]},"ativo_id":{"type":["integer","null"]},"conta_id":{"type":["integer","null"],"description":"Só na conta; o ativo é somado entre as contas."},"codigo":{"type":["string","null"]},"nome":{"type":["string","null"]},"fracao_no_grupo":{"type":"number"},"rentabilidade":{"type":["number","null"]}}},{"$ref":"#/components/schemas/ValoresAnalise"}]}}}},{"$ref":"#/components/schemas/ValoresAnalise"}]}}}},"AnalysisTooComplex":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message","max_meses_sugerido"],"properties":{"code":{"type":"string","enum":["analysis_too_complex"]},"message":{"type":"string","description":"Diz o maior período que cabe, com um exemplo de `inicio` e `fim`."},"max_meses_sugerido":{"type":["integer","null"],"minimum":1,"maximum":60,"description":"O maior número de meses que esta carteira aceita; nulo quando nem um mês cabe."}}}}}}}}